;; nakamojo
;; contractType: public
(impl-trait 'SP2PABAF9FTAJYNFZH93XENAJ8FVY99RRM50D2JG9.nft-trait.nft-trait)
;; Disclaimer of Audit and Endorsement
;; Deployed by Rapha.btc on behalf of the deployer with the deployer s
;; address hardcoded. My involvement was very brief and purely
;; technical, which does not constitute a code audit, nor an endorsement
;; of the code s safety, functionality, or the business practices of any entity using it.
;; Happy Nakamojos nonetheless!
;; (impl-trait .nft-trait-gamma.nft-trait)
(define-non-fungible-token nakamojo uint)
;; Constants
(define-constant DEPLOYER 'SP11X25SXH4FMHTG7B6H9NHTDA1DFNF1RBWAM92JZ) ;; hardcode the deployer address
(define-constant COMM u1000)
(define-constant COMM-ADDR 'SPNWZ5V2TPWGQGVDR6T7B6RQ4XMGZ4PXTEE0VQ0S)
(define-constant ERR-NO-MORE-NFTS u100)
(define-constant ERR-NOT-ENOUGH-PASSES u101)
(define-constant ERR-PUBLIC-SALE-DISABLED u102)
(define-constant ERR-CONTRACT-INITIALIZED u103)
(define-constant ERR-NOT-AUTHORIZED u104)
(define-constant ERR-INVALID-USER u105)
(define-constant ERR-LISTING u106)
(define-constant ERR-WRONG-COMMISSION u107)
(define-constant ERR-NOT-FOUND u108)
(define-constant ERR-PAUSED u109)
(define-constant ERR-MINT-LIMIT u110)
(define-constant ERR-METADATA-FROZEN u111)
(define-constant ERR-AIRDROP-CALLED u112)
(define-constant ERR-NO-MORE-MINTS u113)
(define-constant ERR-INVALID-PERCENTAGE u114)
;; Internal variables
(define-data-var mint-limit uint u1111)
(define-data-var last-id uint u1)
(define-data-var total-price uint u10000000)
(define-data-var artist-address principal 'SP2NHSY6BN5P1HE7QEMSGSRC8R17R5B9MERG5QAQB)
(define-data-var ipfs-root (string-ascii 80) "ipfs://ipfs/QmR9Z21xpC2UZxHhkRCC9g9rumADAzLFuUTkXNTLzGNVmq/json/")
(define-data-var mint-paused bool true)
(define-data-var premint-enabled bool false)
(define-data-var sale-enabled bool false)
(define-data-var metadata-frozen bool false)
(define-data-var airdrop-called bool false)
(define-data-var mint-cap uint u0)
(define-map mints-per-user principal uint)
(define-map mint-passes principal uint)
(define-public (claim)
(mint (list true)))
(define-public (claim-two) (mint (list true true)))
(define-public (claim-three) (mint (list true true true)))
(define-public (claim-four) (mint (list true true true true)))
(define-public (claim-five) (mint (list true true true true true)))
(define-public (claim-six) (mint (list true true true true true true)))
(define-public (claim-seven) (mint (list true true true true true true true)))
(define-public (claim-eight) (mint (list true true true true true true true true)))
(define-public (claim-nine) (mint (list true true true true true true true true true)))
(define-public (claim-ten) (mint (list true true true true true true true true true true)))
(define-public (claim-fifteen) (mint (list true true true true true true true true true true true true true true true)))
(define-public (claim-twenty) (mint (list true true true true true true true true true true true true true true true true true true true true)))
(define-public (claim-twentyfive) (mint (list true true true true true true true true true true true true true true true true true true true true true true true true true)))
;; Mintpass Minting
(define-private (mint (orders (list 25 bool)))
(let
(
(passes (get-passes tx-sender))
)
(if (var-get premint-enabled)
(begin
(asserts! (>= passes (len orders)) (err ERR-NOT-ENOUGH-PASSES))
(map-set mint-passes tx-sender (- passes (len orders)))
(mint-many orders)
)
(begin
(asserts! (var-get sale-enabled) (err ERR-PUBLIC-SALE-DISABLED))
(mint-many orders)
)
)))
(define-private (mint-many (orders (list 25 bool )))
(let
(
(last-nft-id (var-get last-id))
(enabled (asserts! (<= last-nft-id (var-get mint-limit)) (err ERR-NO-MORE-NFTS)))
(art-addr (var-get artist-address))
(id-reached (fold mint-many-iter orders last-nft-id))
(price (* (var-get total-price) (- id-reached last-nft-id)))
(total-commission (/ (* price COMM) u10000))
(current-balance (get-balance tx-sender))
(total-artist (- price total-commission))
(capped (> (var-get mint-cap) u0))
(user-mints (get-mints tx-sender))
)
(asserts! (or (is-eq false (var-get mint-paused)) (is-eq tx-sender DEPLOYER)) (err ERR-PAUSED))
(asserts! (or (not capped) (is-eq tx-sender DEPLOYER) (is-eq tx-sender art-addr) (>= (var-get mint-cap) (+ (len orders) user-mints))) (err ERR-NO-MORE-MINTS))
(map-set mints-per-user tx-sender (+ (len orders) user-mints))
(if (or (is-eq tx-sender art-addr) (is-eq tx-sender DEPLOYER) (is-eq (var-get total-price) u0000000))
(begin
(var-set last-id id-reached)
(map-set token-count tx-sender (+ current-balance (- id-reached last-nft-id)))
)
(begin
(var-set last-id id-reached)
(map-set token-count tx-sender (+ current-balance (- id-reached last-nft-id)))
(try! (stx-transfer? total-artist tx-sender (var-get artist-address)))
(try! (stx-transfer? total-commission tx-sender COMM-ADDR))
)
)
(ok id-reached)))
(define-private (mint-many-iter (ignore bool) (next-id uint))
(if (<= next-id (var-get mint-limit))
(begin
(unwrap! (nft-mint? nakamojo next-id tx-sender) next-id)
(+ next-id u1)
)
next-id))
(define-public (set-artist-address (address principal))
(begin
(asserts! (or (is-eq tx-sender (var-get artist-address)) (is-eq tx-sender DEPLOYER)) (err ERR-INVALID-USER))
(ok (var-set artist-address address))))
(define-public (set-price (price uint))
(begin
(asserts! (or (is-eq tx-sender (var-get artist-address)) (is-eq tx-sender DEPLOYER)) (err ERR-INVALID-USER))
(ok (var-set total-price price))))
(define-public (toggle-pause)
(begin
(asserts! (or (is-eq tx-sender (var-get artist-address)) (is-eq tx-sender DEPLOYER)) (err ERR-INVALID-USER))
(ok (var-set mint-paused (not (var-get mint-paused))))))
(define-public (set-mint-limit (limit uint))
(begin
(asserts! (or (is-eq tx-sender (var-get artist-address)) (is-eq tx-sender DEPLOYER)) (err ERR-INVALID-USER))
(asserts! (< limit (var-get mint-limit)) (err ERR-MINT-LIMIT))
(ok (var-set mint-limit limit))))
(define-public (burn (token-id uint))
(begin
(asserts! (is-owner token-id tx-sender) (err ERR-NOT-AUTHORIZED))
(asserts! (is-none (map-get? market token-id)) (err ERR-LISTING))
(nft-burn? nakamojo token-id tx-sender)))
(define-private (is-owner (token-id uint) (user principal))
(is-eq user (unwrap! (nft-get-owner? nakamojo token-id) false)))
(define-public (set-base-uri (new-base-uri (string-ascii 80)))
(begin
(asserts! (or (is-eq tx-sender (var-get artist-address)) (is-eq tx-sender DEPLOYER)) (err ERR-NOT-AUTHORIZED))
(asserts! (not (var-get metadata-frozen)) (err ERR-METADATA-FROZEN))
(print { notification: "token-metadata-update", payload: { token-class: "nft", contract-id: (as-contract tx-sender) }})
(var-set ipfs-root new-base-uri)
(ok true)))
(define-public (freeze-metadata)
(begin
(asserts! (or (is-eq tx-sender (var-get artist-address)) (is-eq tx-sender DEPLOYER)) (err ERR-NOT-AUTHORIZED))
(var-set metadata-frozen true)
(ok true)))
;; Non-custodial SIP-009 transfer function
(define-public (transfer (id uint) (sender principal) (recipient principal))
(begin
(asserts! (is-eq tx-sender sender) (err ERR-NOT-AUTHORIZED))
(asserts! (is-none (map-get? market id)) (err ERR-LISTING))
(trnsfr id sender recipient)))
;; read-only functions
(define-read-only (get-owner (token-id uint))
(ok (nft-get-owner? nakamojo token-id)))
(define-read-only (get-last-token-id)
(ok (- (var-get last-id) u1)))
(define-read-only (get-token-uri (token-id uint))
(ok (some (concat (concat (var-get ipfs-root) "{id}") ".json"))))
(define-read-only (get-paused)
(ok (var-get mint-paused)))
(define-read-only (get-price)
(ok (var-get total-price)))
(define-read-only (get-artist-address)
(ok (var-get artist-address)))
(define-read-only (get-mints (caller principal))
(default-to u0 (map-get? mints-per-user caller)))
(define-read-only (get-mint-limit)
(ok (var-get mint-limit)))
(define-data-var license-uri (string-ascii 80) "")
(define-data-var license-name (string-ascii 40) "")
(define-read-only (get-license-uri)
(ok (var-get license-uri)))
(define-read-only (get-license-name)
(ok (var-get license-name)))
(define-public (set-license-uri (uri (string-ascii 80)))
(begin
(asserts! (or (is-eq tx-sender (var-get artist-address)) (is-eq tx-sender DEPLOYER)) (err ERR-NOT-AUTHORIZED))
(ok (var-set license-uri uri))))
(define-public (set-license-name (name (string-ascii 40)))
(begin
(asserts! (or (is-eq tx-sender (var-get artist-address)) (is-eq tx-sender DEPLOYER)) (err ERR-NOT-AUTHORIZED))
(ok (var-set license-name name))))
;; Non-custodial marketplace extras
(use-trait commission-trait 'SP3D6PV2ACBPEKYJTCMH7HEN02KP87QSP8KTEH335.commission-trait.commission)
;; (use-trait commission-trait .commission-trait-gamma.commission)
(define-map token-count principal uint)
(define-map market uint {price: uint, commission: principal, royalty: uint})
(define-read-only (get-balance (account principal))
(default-to u0
(map-get? token-count account)))
(define-private (trnsfr (id uint) (sender principal) (recipient principal))
(match (nft-transfer? nakamojo id sender recipient)
success
(let
((sender-balance (get-balance sender))
(recipient-balance (get-balance recipient)))
(map-set token-count
sender
(- sender-balance u1))
(map-set token-count
recipient
(+ recipient-balance u1))
(ok success))
error (err error)))
(define-private (is-sender-owner (id uint))
(let ((owner (unwrap! (nft-get-owner? nakamojo id) false)))
(or (is-eq tx-sender owner) (is-eq contract-caller owner))))
(define-read-only (get-listing-in-ustx (id uint))
(map-get? market id))
(define-public (list-in-ustx (id uint) (price uint) (comm-trait <commission-trait>))
(let ((listing {price: price, commission: (contract-of comm-trait), royalty: (var-get royalty-percent)}))
(asserts! (is-sender-owner id) (err ERR-NOT-AUTHORIZED))
(map-set market id listing)
(print (merge listing {a: "list-in-ustx", id: id}))
(ok true)))
(define-public (unlist-in-ustx (id uint))
(begin
(asserts! (is-sender-owner id) (err ERR-NOT-AUTHORIZED))
(map-delete market id)
(print {a: "unlist-in-ustx", id: id})
(ok true)))
(define-public (buy-in-ustx (id uint) (comm-trait <commission-trait>))
(let ((owner (unwrap! (nft-get-owner? nakamojo id) (err ERR-NOT-FOUND)))
(listing (unwrap! (map-get? market id) (err ERR-LISTING)))
(price (get price listing))
(royalty (get royalty listing)))
(asserts! (is-eq (contract-of comm-trait) (get commission listing)) (err ERR-WRONG-COMMISSION))
(try! (stx-transfer? price tx-sender owner))
(try! (pay-royalty price royalty))
(try! (contract-call? comm-trait pay id price))
(try! (trnsfr id owner tx-sender))
(map-delete market id)
(print {a: "buy-in-ustx", id: id})
(ok true)))
(define-data-var royalty-percent uint u500)
(define-read-only (get-royalty-percent)
(ok (var-get royalty-percent)))
(define-public (set-royalty-percent (royalty uint))
(begin
(asserts! (or (is-eq tx-sender (var-get artist-address)) (is-eq tx-sender DEPLOYER)) (err ERR-INVALID-USER))
(asserts! (and (>= royalty u0) (<= royalty u1000)) (err ERR-INVALID-PERCENTAGE))
(ok (var-set royalty-percent royalty))))
(define-private (pay-royalty (price uint) (royalty uint))
(let (
(royalty-amount (/ (* price royalty) u10000))
)
(if (and (> royalty-amount u0) (not (is-eq tx-sender (var-get artist-address))))
(try! (stx-transfer? royalty-amount tx-sender (var-get artist-address)))
(print false)
)
(ok true)))
;; Extra functionality required for mintpass
(define-public (toggle-sale-state)
(let
(
;; (premint (not (var-get premint-enabled)))
(sale (not (var-get sale-enabled)))
)
(asserts! (or (is-eq tx-sender (var-get artist-address)) (is-eq tx-sender DEPLOYER)) (err ERR-NOT-AUTHORIZED))
(var-set premint-enabled false)
(var-set sale-enabled sale)
(print { sale: sale })
(ok true)))
(define-public (enable-premint)
(begin
(asserts! (or (is-eq tx-sender (var-get artist-address)) (is-eq tx-sender DEPLOYER)) (err ERR-NOT-AUTHORIZED))
(ok (var-set premint-enabled true))))
(define-public (disable-premint)
(begin
(asserts! (or (is-eq tx-sender (var-get artist-address)) (is-eq tx-sender DEPLOYER)) (err ERR-NOT-AUTHORIZED))
(ok (var-set premint-enabled false))))
(define-read-only (get-passes (caller principal))
(default-to u0 (map-get? mint-passes caller)))
(define-read-only (get-premint-enabled)
(ok (var-get premint-enabled)))
(define-read-only (get-sale-enabled)
(ok (var-get sale-enabled)))
(map-set mint-passes 'SPP3HM2E4JXGT26G1QRWQ2YTR5WT040S5NKXZYFC u10)
(map-set mint-passes 'SP03J5986THN33C8FWP3GNAV3AWFHZ7XAH1QF522 u10)
(map-set mint-passes 'SP0EZN1C0SREJSKHSHEAXK95M49W4G11HM7WC7SS u10)
(map-set mint-passes 'SP1020NWPB2Q59ZG82REVKZK4EHC1KMXWT0HXWP16 u10)
(map-set mint-passes 'SP103BZSXCX2YF8HXMN8DDP5Z46DN4A0HPRDYJXDD u10)
(map-set mint-passes 'SP103Y2JC18TZGFXG6AE9RJXDAY60BVQR5P2334EA u10)
(map-set mint-passes 'SP10MJMD78XV08EK1A9BWV9CGZZCAB7XTXQFZ9PMN u10)
(map-set mint-passes 'SP10XK7F9BCVS8853HQT01HARD1NJ8K8V5KEBR2QS u10)
(map-set mint-passes 'SP115B4PY38WKMZ8R113CHVNDBBT1MRTTKX2XTQVK u10)
(map-set mint-passes 'SP11EBWRDRHWHWBM8XMNTD45VM5Z41XM29TBV7ECD u10)
(map-set mint-passes 'SP11ES19353NXBHJH3NYHXJH0RRJ1F34094XXMSNW u10)
(map-set mint-passes 'SP11Z0M9SXMXM2BGQHDPT0B9Z03TDE56WFSF6EEX8 u10)
(map-set mint-passes 'SP11Z1W6A7HERV06SH414ZE4FK8STF9N244GK3NSZ u10)
(map-set mint-passes 'SP12JTGECY912BG7437EMHYP0R4FSM9YC6NKJX7MM u10)
(map-set mint-passes 'SP12X2T2Y6GS7ZNYMY8JPP9GNY9BE3CGGW659D9A7 u10)
(map-set mint-passes 'SP135Q4A1W9HFT0ZW2VC4F0ER32EJAFX5ZME05JYW u10)
(map-set mint-passes 'SP13ENEXS3ZTJXWD0S5PY95S94V8DSRWTZ8AGVARV u10)
(map-set mint-passes 'SP13Z1RFV5CDWJDM2CFGZT55AXWP062R9NC1TBNE5 u10)
(map-set mint-passes 'SP14HHBR61VB2CMNJDEKX35QT12CRH604YNK164Z9 u10)
(map-set mint-passes 'SP150GJWQXH1M8DHWM38T0AHFVAFN4SC2NJHDR1HH u10)
(map-set mint-passes 'SP1518QVT8C0TGK380N8YD69MAAH5K25XH5BFB51J u10)
(map-set mint-passes 'SP156BGYW39ACVKBAM2SKXRD7FZTPP80F3Y75HQZK u10)
(map-set mint-passes 'SP165AZ3N9YGSDD6ARKCPMBAQB2KXAR8652Z888EP u10)
(map-set mint-passes 'SP16H5R1ZDFJQ7FE3ZYZKGFD8QTGPAGVEYWQXJMS5 u10)
(map-set mint-passes 'SP16QNZ84F3BCT1M1MDRGYDJN93DPV1T7F023QKXT u10)
(map-set mint-passes 'SP16YGBC7HZDKQAFKJNHNZV1AMEYFANRYCTJ4ZFAC u10)
(map-set mint-passes 'SP17D2C9PE4WAV8J8GAY1DBWZ9G4KQY68KKMFC9CD u10)
(map-set mint-passes 'SP1848838YHVAPYQ3T002XVXFP23DKX8S6CTQ7PGA u10)
(map-set mint-passes 'SP18RRWQBDNXTSRH1F5ESC2KAY38PHAG3PMRMGEJR u10)
(map-set mint-passes 'SP196CMNNFA89TY7S1GMSPNEWK00ZWGF7FJ0780A1 u10)
(map-set mint-passes 'SP19BEH88ZFWNBAGNW9EMN4MF6527HXMZ4P9Z22CA u10)
(map-set mint-passes 'SP19V2KHSAAKZM807JJA63XPB1QRDAGBCM0EZ4JSM u10)
(map-set mint-passes 'SP1A5M0ZRSNQMF8BNPQPM8WWC5PJ6HJ4GEKFP8W4M u10)
(map-set mint-passes 'SP1ADYV2DB7DHC80ATEW344HTNZ04SQGV56D40BFF u10)
(map-set mint-passes 'SP1AHR7EQ1T6Y1GK757GSD4H4D6V75AV850C81SSA u10)
(map-set mint-passes 'SP1AQDVJF18XEFVXMWTRAW9TQ0N2DCN0178FKW03R u10)
(map-set mint-passes 'SP1B7M1C4MVVMMPFYD3K0RHBY9BHPENB9HN7M0VRM u10)
(map-set mint-passes 'SP1C0G9DCQCRWV9Y5XHS5367ACHD99KECK34SQEMH u10)
(map-set mint-passes 'SP1CDBQENNM68BWABB03CECKD6CS1MWJAMXFQDJXW u10)
(map-set mint-passes 'SP1CHWS7TDP36PPVWV8E4Q8QV7S8SZPYYWW9N0ZW8 u10)
(map-set mint-passes 'SP1CJZ52K1K6QXVRX3SGYNEE9C3TNC75G3M6AG6KQ u10)
(map-set mint-passes 'SP1CSWBBEXKF4GH170P90FXJS100KXW9YK42K5EB4 u10)
(map-set mint-passes 'SP1CY8VRQ9XZ016FMAAMDBV7J5K0GXFVZ0CZTV82V u10)
(map-set mint-passes 'SP1DHHVA5EX21FZ04MB3PM6E6KK7DMCCQR7R50FTP u10)
(map-set mint-passes 'SP1DRWTHTPYCCTM7Z7FREDES0VXH6D5GYTA62JXS u10)
(map-set mint-passes 'SP1E0EAG94S5Y4M64TM41BG0NB10C6SXCYXF78BFZ u10)
(map-set mint-passes 'SP1E22HKNAM2J2M07QCMZYX6R00KPF3XC13SQHR5M u10)
(map-set mint-passes 'SP1E4MAKJT1J91SPT2G2R0DX86951NYH291VNHMMW u10)
(map-set mint-passes 'SP1E8A3T3AW2HRFB5FXMYWB2DC0TSC6H1EGTHND1W u10)
(map-set mint-passes 'SP1EDWGJQC5267KKZ3QRAM7GGNNHYZX6V50VMRDK3 u10)
(map-set mint-passes 'SP1EQGZT0WN75N5AMJH2C40N5GBJTEVY9E6ZY8EH3 u10)
(map-set mint-passes 'SP1F2RKGNVA7D0DMXMHMCSPG1DFZY0V4MA0C4QWE6 u10)
(map-set mint-passes 'SP1F6ZM7HTTCXM81FBDR16D4J42HGVCNNVFQ1JV8 u10)
(map-set mint-passes 'SP1FP68FTNGA3GJ15T98F6RDA7CN8FNA6NJD4D211 u10)
(map-set mint-passes 'SP1GEC3S741639EKQYZHKMKA4X7N1YG1JFVJ6TBF9 u10)
(map-set mint-passes 'SP1GP3S7D2Y9YA5TRXFNN89DYTQ79FJ506KPBBNN6 u10)
(map-set mint-passes 'SP1HJ6A3HVPBDKQPKSCQMJQ7DCG2CTTNGT2QE7XS7 u10)
(map-set mint-passes 'SP1HRS5JCC39XEW80XG5XQYSA1RRP4F0B0WPBBRCJ u10)
(map-set mint-passes 'SP1HV17ETS6EPAVZ7CCE3PEWJ8FAMR360FNXP8R94 u10)
(map-set mint-passes 'SP1J0AJW43QK3SX82ECZ7407YN0Z7EZZPD9JN5ZPY u10)
(map-set mint-passes 'SP1J4SFHSMMT5Z0PG3WDD1TNGZVCWMB5QBYHNFECG u10)
(map-set mint-passes 'SP1JERBJV7YZPWXKNK5YAJ814K3KZ9N6RWHH387XW u10)
(map-set mint-passes 'SP1JNJF7GY0ZCJBTS1CBFB2TTH5E1Y2PGJRRW1AM5 u10)
(map-set mint-passes 'SP1JPXYVHY7AW8XVT11XPK41XFNGSC8VSM4ZATVY4 u10)
(map-set mint-passes 'SP1M3C6626ANZ7MZDZPEXD9KHRZA0R70DWC8XNYZG u10)
(map-set mint-passes 'SP1M5E0SR2GE7GDKYWE98JX66NT8XG6VYA5TP5XD1 u10)
(map-set mint-passes 'SP1N8B98NEXFZKSK1HY9KMVCS5XX2EPTDX6C1DAW0 u10)
(map-set mint-passes 'SP1NQT9PMVBWHZHSM13RD6CYF86G4YA99JR5Q1NM5 u10)
(map-set mint-passes 'SP1NSBTY3VP5ZG7Q6Z72ZFJDKKF04X0D72V7GBVPF u10)
(map-set mint-passes 'SP1P2XGDSVYHXZ6GQAM4N7CX89GTZKBRP2BQF0G15 u10)
(map-set mint-passes 'SP1P6RCQHJ4NDEJCY9DGGNACYJY45KEV235VDCP2F u10)
(map-set mint-passes 'SP1PG0GDFCMHG5ZX2S65GA11YF12Q7FSZNP8AETM0 u10)
(map-set mint-passes 'SP1Q8PS21T2H349Z0NCR1KVFSSFH0CDP1ATMF6FYF u10)
(map-set mint-passes 'SP1Q9G3FJ1JA7EH9Z2AXHABS1FSJ69AS34ZAN8F74 u10)
(map-set mint-passes 'SP1QJ3PN9KKVFHE79YDGSBBH9E46Q0NQR07R38ZDR u10)
(map-set mint-passes 'SP1RHC02Q85P0R4DR96AZB68KWZXA3NZEZ6A59D9W u10)
(map-set mint-passes 'SP1SHF89XM8DEZB042DDYCMJMD6FQB17MNSEZY92W u10)
(map-set mint-passes 'SP1SKW7E7ZEZ039RPN88W8AS17KZW6F3F7547GWVC u10)
(map-set mint-passes 'SP1SMJW136XWJEWEG79CQFZD9BS0HSHDT4GR3G20S u10)
(map-set mint-passes 'SP1SV1ZCD2V1440MVW1CWYGAQKG99F2RNVZF2XXQE u10)
(map-set mint-passes 'SP1T3QRNJWHMWC5D5S0Z8QSF0V3367MBF8DQCVJXS u10)
(map-set mint-passes 'SP1TC21ASZ57YQFC9THB85HSMDH6P1BNVPACWATRB u10)
(map-set mint-passes 'SP1TCA7QER9J9NKCKBB78K48TADDFC2GXYM3QQV3X u10)
(map-set mint-passes 'SP1TE5GHXGXQAYR5KXAXK3NKWDW0KMFJTWN48H0YF u10)
(map-set mint-passes 'SP1TH8Y1953C1484KDFC8R1NAA0E925CFG7W4Y46G u10)
(map-set mint-passes 'SP1TXNDK4CH2SB794Z390G7P28WZ0S7JY9VWAAWBK u10)
(map-set mint-passes 'SP1VF0YPY4A9ZSMA0JVNXPBXKMV16J3Z4HQQGVMY7 u10)
(map-set mint-passes 'SP1VKEVK39KZTA7T95XTYX3ACXBSDBDQC3HECH4QA u10)
(map-set mint-passes 'SP1VTD9RGA6FZCAXF07M9RV7YCKDN0Q0GRBDVZCDP u10)
(map-set mint-passes 'SP1VXD4PH4HJVFC2FBJ6MRHYYSMETYQEF4BGV396P u10)
(map-set mint-passes 'SP1W3T3A54PW021CXPGRZWCPCC0JMA5K70YWZ4JQX u10)
(map-set mint-passes 'SP1WC407WB50ZPDWDYCG50Z1TCQD0DPH0D2EQ6K39 u10)
(map-set mint-passes 'SP1WHWGYJAR695T07MDH9KJ4MCAWV9A60J18P0N05 u10)
(map-set mint-passes 'SP1WKHWWKKYZ8Q4GZ7RM618QGKWZ456285GXB2GKR u10)
(map-set mint-passes 'SP1X3TAMAX1ZJSAQ5EG85BPMGGSAVSB4KP0F0SMNH u10)
(map-set mint-passes 'SP1X5FR8S08XHTK2CJ9SX08B36P8QCTWJGGYZSHVN u10)
(map-set mint-passes 'SP1X9WS1VTYBV9MR0YR0X8934C9575K1X3Q6YSTH9 u10)
(map-set mint-passes 'SP1XN0WPDXA9JZ5AHTA35YB284BN00RQCEDJB9DRW u10)
(map-set mint-passes 'SP1Z50PFP7A9QX7SSZWHKFZ81SFFWGK0WX39MFH87 u10)
(map-set mint-passes 'SP205TF67EN466YTNKBD95JT269V8GVDW2H19BD5Z u10)
(map-set mint-passes 'SP20945N5G0F0V9AZCAHEC1GS3C1S2RWT325H9N0K u10)
(map-set mint-passes 'SP20HMM8N9ASR1QNXKMGB6BBC5QM6AEKXYCT1GEDQ u10)
(map-set mint-passes 'SP219F939RGG4PZ9DCVJBZ90HDD42FAWC06CXEKVR u10)
(map-set mint-passes 'SP21XPYZX9E156065K65CWY4EQ6Z79P1QP4JC6JXW u10)
(map-set mint-passes 'SP228YTJ8ESDVWXEJ6PEYMYY2KVEYM2WZXFRP0XPW u10)
(map-set mint-passes 'SP22RDNRKPZ6FPZTHZ3DR8VAZ0APB7K0VD6QQHPHR u10)
(map-set mint-passes 'SP238X3JD22HJBMWR8E7CKTF4JCBQ73BG9YS1DBH8 u10)
(map-set mint-passes 'SP23HAKD36YH8VEFFB8Z7JTPSDV72D8XD6HGZR326 u10)
(map-set mint-passes 'SP23JFNQRHWNXK40R9ZSS4NK8T2GCHSEGCKEJX3NM u10)
(map-set mint-passes 'SP243HW2ZRW2CXPZHM3YZK07JPRFT66HQKP8FSGNG u10)
(map-set mint-passes 'SP245RYQHC7TZH2VDQ95KHG4CNKMYYX9Z8A08BGTE u10)
(map-set mint-passes 'SP249S7PZ7N5Q5WHW1P7A35FK83ZMCC40DGY77DXA u10)
(map-set mint-passes 'SP24ANEK96Y51TT99FBCG3PZKMESBQ5G4YZXK1T5K u10)
(map-set mint-passes 'SP24FF7MR0Y06M2J3E18WT8KJF86V84NB6BZH634R u10)
(map-set mint-passes 'SP24QWTMAKP4DW2XM72QZ1JSC7H6CSE54JVQ12RPX u10)
(map-set mint-passes 'SP2537Z4XCCQ1XEGS4DQQD7KC8DNGHMT85FJ8JY3C u10)
(map-set mint-passes 'SP25AW75XBV8830YTGJPTQD1563CTBD9NNXJ04Y5 u10)
(map-set mint-passes 'SP25DP4A9QDM42KC40EXTYQPMQCT1P0R5243GWEGS u10)
(map-set mint-passes 'SP25HV48GJREWX3CSGTTV6J9CY2TYCXP3JNHK2NTG u10)
(map-set mint-passes 'SP2606806Y86YYXHNNBA8BSC9WAJARFCTZHJA7HED u10)
(map-set mint-passes 'SP26BC9ZS4NVE2P109BHS9Q7CZ0W7V9CFATQA3RKQ u10)
(map-set mint-passes 'SP26GJZZY2VVPR3C57MA6110SQZW8G3N9641AG1J u10)
(map-set mint-passes 'SP277X8B0QPSAZFCNT8AX4BDBTQ01TQG61CDH3YP8 u10)
(map-set mint-passes 'SP27CFVZD59PV5NCKP83GWYR9ZJHMFTAEY0ZKHVGC u10)
(map-set mint-passes 'SP2824JZFK04TS1YP60EAS28B6T9SKY2CBE8YZYKV u10)
(map-set mint-passes 'SP284TF4FQ4XSJ54VSZTCVFXG0PAC7SZJK9NJ3FZD u10)
(map-set mint-passes 'SP285FVD7DDYBFHVM25HEQVR6XRM9GBP9SHK5RBYP u10)
(map-set mint-passes 'SP28B148NY1YKD32KEK4X5VD8MKG834RJXADJR476 u10)
(map-set mint-passes 'SP28NCDY6V4T7NJBMYGTJ55NHMXMC0GG806JW1ZTB u10)
(map-set mint-passes 'SP28RG3ASTDFMFEZKGJXD8QW7KJY37E71AAPH1VKY u10)
(map-set mint-passes 'SP28Z51540AV4SHZ2A1MJNTW9XQXS3GEK89MM6Z72 u10)
(map-set mint-passes 'SP29PFD2KGXHD707BSEY8H4H0E07K8SGNH5WRDHSQ u10)
(map-set mint-passes 'SP2AGZS6PEK879ZCVNQ1MVA7N5KP9XRN6JTPM7PRS u10)
(map-set mint-passes 'SP2BAPW5YCZMYZ37X6BQY4YXSG6AY3PYMB1PSBK4F u10)
(map-set mint-passes 'SP2BCSPRRH0Q7HG3QYXT76GTMK2VZA60CED315P0G u10)
(map-set mint-passes 'SP2BNP5M71EGKDNNRGHJ32J2J497DRF7Y0D0FGBAY u10)
(map-set mint-passes 'SP2BWJDVT8AQSXA8HQFW384MR87DSC6MAKR9F8VA9 u10)
(map-set mint-passes 'SP2D2ZJ4T5ACSYZZTXCR3J4TSNP6EQPBSPVJTVQGC u10)
(map-set mint-passes 'SP2D5PA1G93D06DAGF1G0SCG8NRVAQEGXB8MMGJ6J u10)
(map-set mint-passes 'SP2DCFHTZSY5YKSRHC7YRD1AD6HRA9CBZENCM4NGV u10)
(map-set mint-passes 'SP2DJBCJZXSFMPS892X6R14E0SR0VVTQRMBYPHS37 u10)
(map-set mint-passes 'SP2DP0WQQS8CQ1Z5ZXRC0NFD4S9KERBG79CKTP9BX u10)
(map-set mint-passes 'SP2DXW2D55CWQV9RWWHFWT3H7JQKM0GAMD9MXFA7Y u10)
(map-set mint-passes 'SP2DZDK6VRK8NBRWMCHY3AY2Y9C58GVEFPZ16JX5E u10)
(map-set mint-passes 'SP2E4JE5BXQ6XVG86D2BBKSK3N9W49TEMY12CAATF u10)
(map-set mint-passes 'SP2E9QTDK8J00EXCX7Y9NR9DPDE50P4SCENG0F9ZH u10)
(map-set mint-passes 'SP2EK6MPWJYXM0JE3K19AWCDT0041DFPMJERAPP9Y u10)
(map-set mint-passes 'SP2EPSQSV83VCQ7Q4CMP8JHJ9FPTZDCQZKXN4MVE3 u10)
(map-set mint-passes 'SP2ET3FQF669F514K4GKTX5R8DCSGP4Q9X421C5PP u10)
(map-set mint-passes 'SP2GA99NSVQJ2S7QFHXNSG1N7RTT5QAM8GF8WSX4Y u10)
(map-set mint-passes 'SP2H3TTG3MQK9CEF59S7VQ86H4FX9CH596ZXSE2EK u10)
(map-set mint-passes 'SP2J43W4ZJED1HJ117PYEPW0GBK67DR40Z3AXVZA9 u10)
(map-set mint-passes 'SP2KAM4A6W2F7NNSA8W21WABP0QW5WANZ4QK67RNR u10)
(map-set mint-passes 'SP2MKRTJSGWXBSKVTC2FHP7JENKY75EJFBHQR7GKD u10)
(map-set mint-passes 'SP2MY7NHDWKPVN5FHD28QNDXJ82FP77PFA35B0XJK u10)
(map-set mint-passes 'SP2MYQF316JWNY0M6MBGRFPZS17GJKRA26ZPB35HM u10)
(map-set mint-passes 'SP2N6CPSWP8ZYCV9KV82ZQWNRDMV1WJFRH9BWEH3V u10)
(map-set mint-passes 'SP2N718HM783CA5W6DH1V3B1DSPNE1YWT9CNHT9S0 u10)
(map-set mint-passes 'SP2NDZVAV6AAYHYP8KC7WJAVPW58XSFW6DNZ3MSBZ u10)
(map-set mint-passes 'SP2NMT4F69E1XBPD3K8GVEM37CACD8CNJK39QZTDN u10)
(map-set mint-passes 'SP2NW6YH2KMXC27YPK2742XXPHHFN3RX0EKFCX2JY u10)
(map-set mint-passes 'SP2PEBDMR1CH2P3JRAEDZR17AESNKYMNE93GR2QBA u10)
(map-set mint-passes 'SP2Q0SEH2D985NS9BAZC08E9VEHMKFJJ0BQKD54TE u10)
(map-set mint-passes 'SP2Q24V3BWK1PBCV6MPVF6HKK7E2X9KT29HRJKBSH u10)
(map-set mint-passes 'SP2Q7XQZ8K4G6BRATPTTE6ZVT0QB6FJGVB9VTFHQ2 u10)
(map-set mint-passes 'SP2QKVPXG87TZ01JMRH1VP3S38AWN32NBS5B4CWT0 u10)
(map-set mint-passes 'SP2RG5AX378MDWFWDYWVNAJNS2J4HM98QAHDZJEHR u10)
(map-set mint-passes 'SP2RMA2DRR0TV88VQ4E58C2GHPS21DH0VR57J07MW u10)
(map-set mint-passes 'SP2RN84RQTJ08CW4T0GP6HKQTZPGB6JN9X413D75E u10)
(map-set mint-passes 'SP2RPATK2XWEK0CPKTXJZ4ZDPD47C3Y9R9RFQ6AP5 u10)
(map-set mint-passes 'SP2RQFVJ5XV6JXCQ30JNWF1PEYGRS1M88YE1HSQ1M u10)
(map-set mint-passes 'SP2SFBNZXY3JMKYVTEEAYF2T55AWCJBK2R6HW4XJD u10)
(map-set mint-passes 'SP2T5ZS0WA4BP31E3CTK5GDAY3VKJ1JXSGHDQZD66 u10)
(map-set mint-passes 'SP2TA4FGB43WVAS8MVS6YCWTSN2BZNQ1ASGEAKSDD u10)
(map-set mint-passes 'SP2V1K1SM50ZH2VJW0R1NAA5HH10MC3V51SBBPP60 u10)
(map-set mint-passes 'SP2V90V5MPE7E0XABXWR33NP7D1D3FCA3T2RAZZ9Z u10)
(map-set mint-passes 'SP2VNX8KS9JWGERT24XHCPG7141VTTWB0ZEG2Q3ZF u10)
(map-set mint-passes 'SP2VZQ4FS6J85BWCR1QC01R8F9GFWS3Y8R9Z1XC8N u10)
(map-set mint-passes 'SP2W4D4JR9NGV8XPFHYK74C2QW96A6AVX77EA7HBR u10)
(map-set mint-passes 'SP2W7B2FY1TBMK2H9JEJQ6Y3P24F5C2S2AWAKWK37 u10)
(map-set mint-passes 'SP2WHSFV0K0Q38XP1JJNAEBP2K02VREBJ7EFYNMCT u10)
(map-set mint-passes 'SP2X0254BMHNQ7QGYQXX5G2FFVQFPKGF5TJPJ1EJK u10)
(map-set mint-passes 'SP2X0XGK0K2WSZP387EJ1H3XQP4JKT282YBD70GZK u10)
(map-set mint-passes 'SP2X9VP0H7QC4AHQCW9YZXG6D6APJKWAVNHP2GJ30 u10)
(map-set mint-passes 'SP2XGER2NFCPSRJ8YVPF3W9SRXAWW3MAZMPBTXWFW u10)
(map-set mint-passes 'SP2Y9NRY55A1CJ1XSAM1K2EG5M31CBEJERPFCGC6B u10)
(map-set mint-passes 'SP2YCATJ9Y8PMJT8ZYHMMP0BEB4MJW7ZJ6K726TA8 u10)
(map-set mint-passes 'SP2Z2CBMGWB9MQZAF5Z8X56KS69XRV3SJF4WKJ7J9 u10)
(map-set mint-passes 'SP2ZGW8AFZ9GF0YBV9XQX2YH515TGWA2KBMGMJAPT u10)
(map-set mint-passes 'SP2ZGXB09V8T0TV1Q75PKA8YVMQBC0ZPFYAE18972 u10)
(map-set mint-passes 'SP2ZKT3C5R76512ACSA1C0R1HJ21ASG8ZESPCT3ZC u10)
(map-set mint-passes 'SP2ZXDBYT1RSP98ZZXXRDGKX3TMXCCCGERNBD5YMY u10)
(map-set mint-passes 'SP309SK7C1RWRPWPXM8DSYB76Y59Y4A5NEWQ5ZCQ3 u10)
(map-set mint-passes 'SP30DJM8KYACJWAWVB6E2XE87WMBXFSPF23SA8X16 u10)
(map-set mint-passes 'SP30KDBFSERXVXQMY01FSRF4Y4FZX0BKH4M64RTS5 u10)
(map-set mint-passes 'SP30TN9ZWDW49BSDEQM3SCXSGGF309V61ERZ764J0 u10)
(map-set mint-passes 'SP310KGDG6707X5SCRQ0H59VGR5P9QQYQDFBJ595Y u10)
(map-set mint-passes 'SP316R5B7M6W6JRSMCE2G1904EQW6QRN6B2FZH2WJ u10)
(map-set mint-passes 'SP31PFM63GJ7CE37QMDWAT1NS59GY9M0CS9QN086T u10)
(map-set mint-passes 'SP329V3YCY8AYSBHYHQE5KYD0NWNKZ27E8Q58G313 u10)
(map-set mint-passes 'SP3307SZ5NAEVBA51M20AF6R3BW6VXTBJ3YG26TW5 u10)
(map-set mint-passes 'SP33BZ7A5TTNTWCSCMWRWCNSYKR03WBVVM5BS221P u10)
(map-set mint-passes 'SP33V4NKPVSSSBS1PMKGZGS7BA57XD8S6KMJG3SPM u10)
(map-set mint-passes 'SP34NJCCYANQR5YAY58JHX7AGCZ4E82EFYD0FR0TP u10)
(map-set mint-passes 'SP3588PAKAWTGWGEJRY483951C0JE659N7P468NKJ u10)
(map-set mint-passes 'SP35PQBCH7G0RY3KEA339P8SCMMQ6HV2Q3RK44ASX u10)
(map-set mint-passes 'SP36P3B159T3KFD8KM63HQXR3G2TW6AA1114Z8ZVJ u10)
(map-set mint-passes 'SP371DE1X38QGARG75DX5VFJRRHX3RWTN8PF6J4MZ u10)
(map-set mint-passes 'SP37W6CK0YZ1KJXGFM57Z7VY48T6VFKCQYKQ929NP u10)
(map-set mint-passes 'SP38VZRVGQPRN6PWGXJPA713RMC0VBXFBABF6Q5ZG u10)
(map-set mint-passes 'SP39N5WF0FHVJFJYSEP5YSGKCN1PZQMKC62RQTYDX u10)
(map-set mint-passes 'SP39VDGM02VMDTAAXC0DC1HB7GX1QQJBEGMMMZA8Z u10)
(map-set mint-passes 'SP39WNM6VB2VDE57MW6V0MJ5D85CZ3AFM3SGB7HPH u10)
(map-set mint-passes 'SP3A4PC3M2WVA7DDVPVNTJB87628VFG3EH2XQBT1Y u10)
(map-set mint-passes 'SP3A8AVK2R7KKQ5E8Q1REHNS7WSNPZR3PGVVREAQS u10)
(map-set mint-passes 'SP3AJC728JY0Y43E8RT6K4VDWPT265RDMXJ8M0VH0 u10)
(map-set mint-passes 'SP3AQSW210PFW6K3FB1JW62ZHTH11FSVR0SH5AZ6P u10)
(map-set mint-passes 'SP3B6H5M2WC9K0A8B3KVSBMD5Z36P35JXG0EFWXMJ u10)
(map-set mint-passes 'SP3B9AZB9A0Y7YFX9F2Q6BF5NXBCKKND0YST1CGNZ u10)
(map-set mint-passes 'SP3BJWCFBSA7Q5JJ760KW8ZQHKF0FVT1E2TS1YDXA u10)
(map-set mint-passes 'SP3DCGH4M0ZV028ERBD035YQYFRZ2Q59TARWYTNHS u10)
(map-set mint-passes 'SP3DT0N6V5T9EN84DPARX287NB0ANG7R5AWXPWQE u10)
(map-set mint-passes 'SP3DTSJSF1HQKRX7MJ2TSVJKE5W0KH5XF1HQHN5J0 u10)
(map-set mint-passes 'SP3EJCP1VX9ZSNCM7NJRGWS8A2D0H3QP8R68AXH1H u10)
(map-set mint-passes 'SP3EPF8SDR32488BHA4VS7RSHFGQBAD7YBVKH9Q2S u10)
(map-set mint-passes 'SP3EY2DNMTT8VJ6YP6ZC96G906HNS90VK7GBH70EH u10)
(map-set mint-passes 'SP3EY6W4Q0JFBNYQQXM3J4QV80G0ZZ7N8XQ2JG0B4 u10)
(map-set mint-passes 'SP3F7EKJYEFHTWVF8KK04QJT328CNT173ARGTT04G u10)
(map-set mint-passes 'SP3FFTM7B10Z8HC64BSMW2Q11SME0X5JNFZJ2D916 u10)
(map-set mint-passes 'SP3FJ1WZ04H50HAB58MTJAJ4TGNB9X0BD5KTY6W2C u10)
(map-set mint-passes 'SP3FJ5X0MRJK9HA41A875HP3Z0S16FZKPDM2HQ0KF u10)
(map-set mint-passes 'SP3G9H5PB2EQT4981BG1SSAZ79RKC033RG2Q24SMW u10)
(map-set mint-passes 'SP3GA9N7Q1JZWAT8B0F7N8QXVDPYA6TQ8C1Q05HSW u10)
(map-set mint-passes 'SP3GAJJ28RFPVTXWWDK4VN4QSNEFFDN191QC0766P u10)
(map-set mint-passes 'SP3GCHVJ1PPSDC4VV8GNMYXX29ZXJDR95KY0MRY29 u10)
(map-set mint-passes 'SP3GDANZ8XRJ9DSJ7BR79P0K0AF9K2YCB9D365KJC u10)
(map-set mint-passes 'SP3GJGEB6AJAA22DNCVXYGYNK6P9NB5XRGS3R2S73 u10)
(map-set mint-passes 'SP3H4EA56DKXVNDCM6YY25HFVR50QGJE7TG7Z068D u10)
(map-set mint-passes 'SP3H6DF3517NMMWH90DD869WXKMG7BM9BP6N3MFQ4 u10)
(map-set mint-passes 'SP3H7H4KMBVSH79KS31FZSPFQ6VCMZBSQF0QJ0NBF u10)
(map-set mint-passes 'SP3H8PN8NGXJQAG4MYHZ3M6V1BP7Y0204D8HVWD59 u10)
(map-set mint-passes 'SP3HFDR5XAB544G9RG4345G1SN728EHTT8B2EGA0J u10)
(map-set mint-passes 'SP3HHDA2HWS6JFC5JVSJXRTYA73G559P4TNBM3QXD u10)
(map-set mint-passes 'SP3HHSDMT76FTYZF4FCWEKZQ6DCHVHNTPW710Y7WX u10)
(map-set mint-passes 'SP3HS62J5DEJT2DECJ4XGQF12XRXFN7C0ZA76WNCS u10)
(map-set mint-passes 'SP3K1PJ0GX4WX68Q1ZE3PFY1V4QPFF0A7PRJ956V u10)
(map-set mint-passes 'SP3KTNQFHQ4N5DH40F1164TGYMX3QG2N8NA5VKN4X u10)
(map-set mint-passes 'SP3M3HGSTPTJ9JKX1GX0NPNPDK2NFMM1TPEMNDSR3 u10)
(map-set mint-passes 'SP3MJ27QVV5ZZ9YWZFF2TW27FC2KVNNFKK6TCSWAA u10)
(map-set mint-passes 'SP3MQ2SMZ3PATAFAHYWH95K3P9RF7JK6TY3KDY3XF u10)
(map-set mint-passes 'SP3MYZ2T7JA4GYBYMSZ4ZJYEYTZ69JDD0M7W4BQ8V u10)
(map-set mint-passes 'SP3N363ZT59GTMAVSSCQKJ2SW7T4GMEYKWDY6PGPJ u10)
(map-set mint-passes 'SP3NX0CK36A0ED98X4A2XTXZN60RF39DTEHMR5GT8 u10)
(map-set mint-passes 'SP3P1TCXN3FP3V79YWXC49F5X2HYKS39CMCP5FEHN u10)
(map-set mint-passes 'SP3PN84C8QND6SGRCJN56K0362FJZQH5KTAVAV3NW u10)
(map-set mint-passes 'SP3PPKXRWH79TEPKV0X17HSP5YVDR7EP5Y8E1B7W1 u10)
(map-set mint-passes 'SP3PSK734V44XSFXNP3MRT9YMXMNS00QG9VT93YQ2 u10)
(map-set mint-passes 'SP3PXGVQ24DSRAB3059JDARZDKX1ZJ2QS62GVJNQW u10)
(map-set mint-passes 'SP3Q94YHQEMEH3C6HYBQ1W56FM9K4VBMDKNDAMY5V u10)
(map-set mint-passes 'SP3S8EHXHYR4RZ6GF1WYQAYQ647KXGTJKMPV23TGA u10)
(map-set mint-passes 'SP3SF0PSD7KYVJQPKKRBYJFF7NENGFHZSBVHM3B27 u10)
(map-set mint-passes 'SP3STF9VYF79XVKV8JJG4RN1EJ9PWMJWJZAY3G14T u10)
(map-set mint-passes 'SP3T2PRKJKKDC2QNVQ87KA2VS55XXK5GE8TAF6YQN u10)
(map-set mint-passes 'SP3T4SXCEZH0P73T7BY0G12EHRXS195B9C11EZG2X u10)
(map-set mint-passes 'SP3T8XVBX10T72WB2E41ZTS5NCY85WC6YMWR2QA6K u10)
(map-set mint-passes 'SP3V2D1K157P3BG9EHPVZ7TTNWCPY6JF4DKZQJERG u10)
(map-set mint-passes 'SP3V37TH6XP2SVF42RR9N2V92VM1JJ7MVAKSKTYDR u10)
(map-set mint-passes 'SP3VMAHTFVN9ED5FB073MK1B8MGNCZW5VCEHFFD7C u10)
(map-set mint-passes 'SP3VVSGNVM1V5P74XW0984357BGYSJ2SMA872J0MH u10)
(map-set mint-passes 'SP3WA6XEZH5FEYWBE4WWEJAAPPNHC2T2GHW3EB471 u10)
(map-set mint-passes 'SP3WRWE8Q455RFBXBKGKNDG0JZ7TAVHEWM71NWWEN u10)
(map-set mint-passes 'SP3X0BC4G2540JSZR5S8R8JC9FF0WYN31DYK62TWR u10)
(map-set mint-passes 'SP3X6JF9QX4CQQ97BE1Y0Q6WE6929C7C0BVXVNRBE u10)
(map-set mint-passes 'SP3XMYSS7VHPQV9YP2083D3VN8VDH8ZYZYD7XAR6E u10)
(map-set mint-passes 'SP3Y4428S7VTT8VE4B0B1TK6ZJHVWMNFWGE708QXQ u10)
(map-set mint-passes 'SP3Y9CH9VQ30X2HS21FCD95QMJT1J03MJMTCY8FCB u10)
(map-set mint-passes 'SP3YAG6D11BN229R9P0X056ZBXD1EB1H9YH9NQK86 u10)
(map-set mint-passes 'SP3YTX45WSQ09DD1MAGV9DFY19GS3BZP9TECZRNHT u10)
(map-set mint-passes 'SP4C4FJV36WVB3104MM9VBPHPW15X3YXCXN6K45N u10)
(map-set mint-passes 'SP53HNSM97NF4YD1RE68MZX3MCYHW5WVZG06BH62 u10)
(map-set mint-passes 'SP58Y8ANN29TK6T30RWHXNC3XYG0F5NMYFXGTCY5 u10)
(map-set mint-passes 'SP59AP5ZSJD4QJEADMPS8MXDY38EWNRDVCS93WD8 u10)
(map-set mint-passes 'SP5FF6JC85WFXZ7EP25W6BSW3R3AS57VRNF7WY3A u10)
(map-set mint-passes 'SP5GWYAT7FVMRK26636GAA1EF274FW4WSZH37D4T u10)
(map-set mint-passes 'SP68T3EZJTV63D6T6FV0FV67NGWSABDFZAR7F3KG u10)
(map-set mint-passes 'SP6C9B7NN8VZGMQXE415ZNP9ZHH21J2A1WBFNQ68 u10)
(map-set mint-passes 'SP6G8X5FFHMZ2WSQ0XT3F1V82X09MB6E9H2WND5G u10)
(map-set mint-passes 'SP6ZCQDY5M3FZM1194986HTQES77ZQWWW372WGE7 u10)
(map-set mint-passes 'SP720EHP1DZDS89CVR6817VFB3Y5RRW5T6C9ZMM9 u10)
(map-set mint-passes 'SP7JYXXAF3ZTZQE0Z36258ZDJ3XSQXC8SNA09F1T u10)
(map-set mint-passes 'SP7S3EJYAM7NVJ7KD0KEFCY78MRP9M4G2N92QZ24 u10)
(map-set mint-passes 'SP80XGS3KWTW8VXEJWY9WASX6RD8FXCE2J6VGK4Y u10)
(map-set mint-passes 'SP8VR93SAYY6TSSAXRR6CC8ETRH0AQZW7GXTSQW4 u10)
(map-set mint-passes 'SP97JMWR2HC6JWHG68VVS1JZSRCK81A8Q3KCXYCF u10)
(map-set mint-passes 'SP9KHVRZ0CFYF6N8AT7TWX3ZX9D277YZSC48TF0D u10)
(map-set mint-passes 'SP9VN54PF5QFPNFJ4027KCH3BWPVMH9FMKP9H91D u10)
(map-set mint-passes 'SP9Z3SE1VP0WVJECPDCXQ70DD5R32TET5X6TDXF7 u10)
(map-set mint-passes 'SPA161K7PR8Y1KV8N5V1HRABA7G64ZZA78X5XP0W u10)
(map-set mint-passes 'SPA7PBTTRCFKH84R1N5YGS4YC2B92MM95M5HWH20 u10)
(map-set mint-passes 'SPAQN4FQ9FY58RCZG1GEP5Q3RSDS7PSW3QXA6XZV u10)
(map-set mint-passes 'SPATCJS6N2BR1HTJTJG9WBJVDMFA6GFZVBFGB9PT u10)
(map-set mint-passes 'SPBE7Q7JY572N3B12D6JSRQP5YHWZD27Z9MBBJVB u10)
(map-set mint-passes 'SPBMZ50PP79S60TPCC85V9A5A743KKH0ASFT6D7M u10)
(map-set mint-passes 'SPBQ3VHZAXDP7BFH2C5DSNN7XZFP3E5GDEF5JYPJ u10)
(map-set mint-passes 'SPBWF76FHRNA9C1A6ZZ896B3XRRK5TGGW7X9A55A u10)
(map-set mint-passes 'SPCD0ZWMQ75ZJ152PB0C2Q1S69P0GDFYBAS3Q315 u10)
(map-set mint-passes 'SPCG1NVVX5NJ0FQCS3WCKCE37NATH0J54TA4AKR7 u10)
(map-set mint-passes 'SPCJVTYPSYA6FAEAAA1EF2ARTBNGDJ7B1HC5H88W u10)
(map-set mint-passes 'SPD3GN4XX5YFMNVJ8G2R36942Q5A22XZEWB3RXA9 u10)
(map-set mint-passes 'SPEH2V3X35G1MH6KRR5GD0QH294D8P12K60MAMTY u10)
(map-set mint-passes 'SPEP485ZJNSCCGTMN6HE028VTTX2RKJE22M2XNNE u10)
(map-set mint-passes 'SPFQCV70T2Q7HYX65KCJ4YVFAMSXAFMEZBF13C2N u10)
(map-set mint-passes 'SPG0W74ZANQHED9RQ0R452X4ZB7RSE51YXWPM3JT u10)
(map-set mint-passes 'SPG42MTD9DD659CMN3SPYW00NJ1XXQ492XRXG8RH u10)
(map-set mint-passes 'SPGNRR2GG22EKH62N8DCW58YB4D1PVK8TP0KQTHD u10)
(map-set mint-passes 'SPGQMZY4MT9Q9FF06EGFD1VFYW737CAGKHD8GRW8 u10)
(map-set mint-passes 'SPJRGA1G185EN16V3SH5HA38GQ5C2HMHJSNA91DP u10)
(map-set mint-passes 'SPKYK8BWJTT8D38SJFAQ0KHFPT88QVMZ3VMSNDKW u10)
(map-set mint-passes 'SPKZD017GPPC4ZGA335WT2YEPD25DGN10Z823C7V u10)
(map-set mint-passes 'SPM1PKD8JTY9N8D4M0RS0J80XPWPEFXQ63T3F4C5 u10)
(map-set mint-passes 'SPM2JZ5R7M6AZQTXKEM94K63E2CN95TT6AMMA5PP u10)
(map-set mint-passes 'SPMSK5CMKVS2Z0F817CCJYSXM6F7R7EQRMWBHSDH u10)
(map-set mint-passes 'SPN6JB7EQ5QA1CRSBDNPM60RAYRGVEWMF33GYBWV u10)
(map-set mint-passes 'SPP3SGH530GHXSW0XXCTZXGF8Q0JZJRZ4QBQDM4Q u10)
(map-set mint-passes 'SPPBGBV4ZEB1FQ3954F1G4JPMKZSYJQ2BJFXEKCN u10)
(map-set mint-passes 'SPQ7ZKQ71WCGT0GMYTKK0T5V5ATADEKEQ8TN2ZED u10)
(map-set mint-passes 'SPRAZ1AWYDZE3TF6E3KQK32TWZVM31S2X7WT5EX6 u10)
(map-set mint-passes 'SPRDCY1N7N4EMH052JB36GWYVM1J391RTB6P30Q3 u10)
(map-set mint-passes 'SPS008CN66RD34TSWQWBVB7SV2TFBDSTYDRG86RE u10)
(map-set mint-passes 'SPSHZXHVZVS5T3CJ9K8H52MKM7CMY9KQ0MC06MFP u10)
(map-set mint-passes 'SPT4GV83945AYKR9MS1QQHT20D2KQJ65NT3CPE44 u10)
(map-set mint-passes 'SPTDR7ZRYK49DW259BSYH969QMP032TQ2YYZZYYZ u10)
(map-set mint-passes 'SPVHQKGABJCKKDSQPMW67P34GTF1JFAEANQZXRBD u10)
(map-set mint-passes 'SPWE96STY8FDJG1XC24X82RPWYQMXR5B0DHK1433 u10)
(map-set mint-passes 'SPWPBRQT97Y0WX5FECX6ZEN7TYHM68NA3Y884PSJ u10)
(map-set mint-passes 'SPX2N6YN86G5WWK2W7ZZC5581JQ24ZTVEY639HMW u10)
(map-set mint-passes 'SPYNSC8912WVNDPKFVTBHPBDR6MMQYDQ1AW7ENEY u10)
(map-set mint-passes 'SPYT1VQ75CXTDV6THHSVDD27S4Y20E3CX0P1Q6QX u10)
(map-set mint-passes 'SPZ6XK2YJ2PN2F62G14CEVP8JANK5TEBEH4CSX36 u10)
(map-set mint-passes 'SPZ71M8HE11WAJZDX2JCWE28H3FJNN02FGSTK43R u10)
(map-set mint-passes 'SPZ8KVJAKQPA91AYF1WM3WDXMWAPN98CQZG982YD u10)
(map-set mint-passes 'ST1RX5X1C2PKAJX0BT4GMNERK0JB2VPKQJ4Y0W9N2 u10)
(define-public (give-passes (fren principal))
(let
(
(fren-passes (get-passes fren))
)
(asserts! (is-eq tx-sender DEPLOYER) (err ERR-NOT-AUTHORIZED))
(ok (map-set mint-passes fren (+ fren-passes u1)))
)
)