{
  "_format": "hh-sol-artifact-1",
  "contractName": "TokenMetadataResolverRandomizedReveal",
  "sourceName": "contracts/token/metadata/TokenMetadataResolverRandomizedReveal.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "linkToken",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "vrfWrapper",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        }
      ],
      "name": "EmptyPostRevealBaseMetadataURI",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        }
      ],
      "name": "EmptyPreRevealTokenMetadataURI",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "targetContract",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "NotTargetContractOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        }
      ],
      "name": "RevealAlreadyRequested",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "targetContract",
          "type": "address"
        }
      ],
      "name": "TargetIsNotAContract",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        }
      ],
      "name": "TokenDataNotSet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        }
      ],
      "name": "TokensAlreadyRevealed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "requestId",
          "type": "uint256"
        }
      ],
      "name": "UnknownRequestId",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "wrongAddress",
          "type": "address"
        }
      ],
      "name": "WrongLINKTokenAddress",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        }
      ],
      "name": "ZeroTokenSupply",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "requestId",
          "type": "uint256"
        }
      ],
      "name": "RevealRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "preRevealTokenMetadataURI",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "postRevealBaseMetadataURI",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokenSupply",
          "type": "uint256"
        }
      ],
      "name": "TokenDataSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "requestId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "metadataOffset",
          "type": "uint256"
        }
      ],
      "name": "TokensRevealed",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "CHAINLINK_LINK_TOKEN",
      "outputs": [
        {
          "internalType": "contract LinkTokenInterface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "CHAINLINK_VRF_WRAPPER",
      "outputs": [
        {
          "internalType": "contract VRFV2WrapperInterface",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "metadataOffset",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "postRevealBaseMetadataURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "preRevealTokenMetadataURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_requestId",
          "type": "uint256"
        },
        {
          "internalType": "uint256[]",
          "name": "_randomWords",
          "type": "uint256[]"
        }
      ],
      "name": "rawFulfillRandomWords",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "requestIdToTokenContract",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "callbackGasLimit",
          "type": "uint32"
        },
        {
          "internalType": "uint16",
          "name": "requestConfirmations",
          "type": "uint16"
        }
      ],
      "name": "requestReveal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "revealStatus",
      "outputs": [
        {
          "internalType": "enum TokenMetadataResolverRandomizedReveal.RevealStatus",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "preRevealTokenURI",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "postRevealBaseURI",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "supply",
          "type": "uint256"
        }
      ],
      "name": "setTokenData",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenContract",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenMetadataURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "tokenURI",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "tokenSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60c03461009a57601f6119f638819003918201601f19168301916001600160401b0383118484101761009f57808492604094855283398101031261009a57610052602061004b836100b5565b92016100b5565b6001600160a01b039182166080521660a05260405161192c90816100ca82396080518181816101500152610ac6015260a05181818161022401528181610a480152610e850152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b038216820361009a5756fe608080604052600436101561001357600080fd5b60003560e01c9081625e24de146110c5575080631fe543e314610dd157806328e82e431461098157806349855083146109105780634bf810d8146108ab5780636844d6fa146108465780636b0fce13146107e15780637c9bc10514610248578063981e4cc2146101d9578063e643792e14610174578063ee206f9d146101055763f724dad7146100a257600080fd5b346101005760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610100576100fc6100e86100df611162565b602435906113be565b6040519182916020835260208301906112bd565b0390f35b600080fd5b346101005760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101005760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101005773ffffffffffffffffffffffffffffffffffffffff6101c0611162565b1660005260026020526020604060002054604051908152f35b346101005760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101005760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101005761027f611162565b60243567ffffffffffffffff81116101005761029f903690600401611300565b909160443567ffffffffffffffff8111610100576102c1903690600401611300565b919060643591841561079d5783156107595782156107155773ffffffffffffffffffffffffffffffffffffffff906102f9338261175a565b169283600052600360205260ff6040600020541660038110156106e6576106b857836000526000602052604060002067ffffffffffffffff8611610597576103418154611185565b601f8111610670575b50856000601f82116001146105d1576000916105c6575b508660011b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8860031b1c19161790555b83600052600160205260406000209567ffffffffffffffff8211610597576103bb8754611185565b601f811161054f575b50600096601f83116001146104875782916104639161047195947f1e2c5cd029119717a495b3bafc43690a7584a3f26d1253838c2aacfdebae1f439a60009161047c575b508460011b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8660031b1c19161790555b866000526002602052856040600020556040519788978852608060208901526080880191611346565b918583036040870152611346565b9060608301520390a1005b90508501358b610408565b808852602088207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08416895b8181106105375750918493917f1e2c5cd029119717a495b3bafc43690a7584a3f26d1253838c2aacfdebae1f439a610471979661046395106104ff575b5050600184811b01905561043a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88760031b161c19908701351690558a806104f0565b868b0135835560209a8b019a600190930192016104b3565b876000526020600020601f840160051c8101916020851061058d575b601f0160051c01905b81811061058157506103c4565b60008155600101610574565b909150819061056b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b905087013588610361565b828152602081209188907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016825b8b8282106106565750501061061e575b5050600186811b019055610393565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88960031b161c1990890135169055878061060f565b84013585556001909401936020938401938b9350016105ff565b816000526020600020601f880160051c810191602089106106ae575b601f0160051c01905b8181106106a2575061034a565b60008155600101610695565b909150819061068c565b837f66daadea0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff907f0f633658000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff907fea1c6ea0000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff907f9e9de65d000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b346101005760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101005773ffffffffffffffffffffffffffffffffffffffff61082d611162565b1660005260016020526100fc6100e860406000206111d8565b346101005760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101005773ffffffffffffffffffffffffffffffffffffffff610892611162565b1660005260006020526100fc6100e860406000206111d8565b346101005760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101005773ffffffffffffffffffffffffffffffffffffffff6108f7611162565b1660005260046020526020604060002054604051908152f35b346101005760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101005773ffffffffffffffffffffffffffffffffffffffff61095c611162565b16600052600360205260ff6040600020541660405160038210156106e6576020918152f35b346101005760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610100576109b8611162565b60243563ffffffff8116809103610100576044359161ffff83168093036101005773ffffffffffffffffffffffffffffffffffffffff906109f9338261175a565b169182600052600260205260406000205415610da35782600052600360205260ff6040600020541660038110156106e657600214610d755773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690604051927f4306d354000000000000000000000000000000000000000000000000000000008452806004850152602084602481865afa938415610cef57600094610d41575b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016604051947f23b872dd0000000000000000000000000000000000000000000000000000000086523360048701523060248701528060448701526020866064816000865af1938415610cef57610bab96602095610d26575b50604051938585015260408401526001606084015260608352610b61608084611121565b60006040518097819582947f4000aea000000000000000000000000000000000000000000000000000000000845289600485015260248401526060604484015260648301906112bd565b03925af1908115610cef57600492602092610cfb575b50604051928380927ffc2a88c30000000000000000000000000000000000000000000000000000000082525afa908115610cef57600091610c9a575b7f40cafdc32fe56fc488360b1b38d2c0ae3ac896e631536bb4bae762e342f0e7046040848480600052600560205282600020827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790558160005260036020528260002060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905582519182526020820152a1005b906020823d602011610ce7575b81610cb460209383611121565b81010312610ce45750517f40cafdc32fe56fc488360b1b38d2c0ae3ac896e631536bb4bae762e342f0e704610bfd565b80fd5b3d9150610ca7565b6040513d6000823e3d90fd5b610d1a90833d8511610d1f575b610d128183611121565b81019061132e565b610bc1565b503d610d08565b610d3c90863d8811610d1f57610d128183611121565b610b3d565b90936020823d602011610d6d575b81610d5c60209383611121565b81010312610ce45750519285610aae565b3d9150610d4f565b827fd2a6a91e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b827f7f78e4030000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346101005760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101005760043560243567ffffffffffffffff8111610100573660238201121561010057806004013567ffffffffffffffff8111610597578060051b9160405191610e4a6020850184611121565b825260208201602481948301019136831161010057602401905b8282106110b55750505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036110575782600052600560205273ffffffffffffffffffffffffffffffffffffffff604060002054169081156110295783600052600560205260406000207fffffffffffffffffffffffff0000000000000000000000000000000000000000815416905581600052600360205260ff6040600020541660038110156106e657600214610ffb575115610fcc577f4188cd09fa8447854490f2c7c4b3e63e3e8e55beb167c0bc1fd93e3fc30f49f892610f716060935183600052600260205260406000205490611385565b9082600052600460205281604060002055826000526003602052604060002060027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905560405192835260208301526040820152a1005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b507fd2a6a91e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b837f597349fa0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f6f6e6c792056524620563220777261707065722063616e2066756c66696c6c006044820152fd5b8135815260209182019101610e64565b346101005760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610100576020906004356000526005825273ffffffffffffffffffffffffffffffffffffffff604060002054168152f35b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761059757604052565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361010057565b90600182811c921680156111ce575b602083101461119f57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691611194565b90604051918260008254926111ec84611185565b808452936001811690811561125a5750600114611213575b5061121192500383611121565b565b90506000929192526020600020906000915b81831061123e5750509060206112119282010138611204565b6020919350806001915483858901015201910190918492611225565b602093506112119592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b82010138611204565b60005b8381106112ad5750506000910152565b818101518382015260200161129d565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936112f98151809281875287808801910161129a565b0116010190565b9181601f840112156101005782359167ffffffffffffffff8311610100576020838186019501011161010057565b90816020910312610100575180151581036101005790565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b811561138f570690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff169081600052600360205260ff6040600020541660038110156106e657600203611744578160005260046020526040600020548101809111611715576114289082600052600260205260406000205490611385565b90600052600160205260406000209080816000927a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008110156116ea575b50806d04ee2d6d415b85acef8100000000600a9210156116cf575b662386f26fc100008110156116bb575b6305f5e1008110156116aa575b61271081101561169b575b606481101561168d575b1015611683575b6001820190600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60216115006114ea866118bc565b956114f86040519788611121565b8087526118bc565b957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06020870197013688378501015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a8353048015611589577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a919261152f565b50506040519283916000918054906115a082611185565b916001811690811561163f57506001146115f9575b50506115c96115f69483925193849161129a565b01037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611121565b90565b6000908152602081209593505b81811061162357506115f6945060206115c99185010192946115b5565b8554602082890181019190915260019096019587955001611606565b6115f6979550602092506115c99391507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016828701528015150285010192946115b5565b90600101906114b4565b6064600291049301926114ad565b612710600491049301926114a3565b6305f5e10060089104930192611498565b662386f26fc100006010910493019261148b565b6d04ee2d6d415b85acef81000000006020910493019261147b565b604093507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a611460565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060005260006020526115f660406000206111d8565b919091803b156118785773ffffffffffffffffffffffffffffffffffffffff16604051927f8da5cb5b000000000000000000000000000000000000000000000000000000008452602084600481855afa938415610cef57600094611811575b509273ffffffffffffffffffffffffffffffffffffffff8093941692839116036117e1575050565b7f29b9b08b0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b6020813d602011611870575b8161182a60209383611121565b8101031261186c57519373ffffffffffffffffffffffffffffffffffffffff85168503610ce4575073ffffffffffffffffffffffffffffffffffffffff6117b9565b8480fd5b3d915061181d565b73ffffffffffffffffffffffffffffffffffffffff907f73a5b5e3000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b67ffffffffffffffff811161059757601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0166020019056fea26469706673582212203454a6906cb2eeb5296fb3233acb03b3a84c7ed2f7682966999087b3252dc05364736f6c634300081e0033",
  "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c9081625e24de146110c5575080631fe543e314610dd157806328e82e431461098157806349855083146109105780634bf810d8146108ab5780636844d6fa146108465780636b0fce13146107e15780637c9bc10514610248578063981e4cc2146101d9578063e643792e14610174578063ee206f9d146101055763f724dad7146100a257600080fd5b346101005760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610100576100fc6100e86100df611162565b602435906113be565b6040519182916020835260208301906112bd565b0390f35b600080fd5b346101005760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101005760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101005773ffffffffffffffffffffffffffffffffffffffff6101c0611162565b1660005260026020526020604060002054604051908152f35b346101005760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101005760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101005761027f611162565b60243567ffffffffffffffff81116101005761029f903690600401611300565b909160443567ffffffffffffffff8111610100576102c1903690600401611300565b919060643591841561079d5783156107595782156107155773ffffffffffffffffffffffffffffffffffffffff906102f9338261175a565b169283600052600360205260ff6040600020541660038110156106e6576106b857836000526000602052604060002067ffffffffffffffff8611610597576103418154611185565b601f8111610670575b50856000601f82116001146105d1576000916105c6575b508660011b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8860031b1c19161790555b83600052600160205260406000209567ffffffffffffffff8211610597576103bb8754611185565b601f811161054f575b50600096601f83116001146104875782916104639161047195947f1e2c5cd029119717a495b3bafc43690a7584a3f26d1253838c2aacfdebae1f439a60009161047c575b508460011b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8660031b1c19161790555b866000526002602052856040600020556040519788978852608060208901526080880191611346565b918583036040870152611346565b9060608301520390a1005b90508501358b610408565b808852602088207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08416895b8181106105375750918493917f1e2c5cd029119717a495b3bafc43690a7584a3f26d1253838c2aacfdebae1f439a610471979661046395106104ff575b5050600184811b01905561043a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88760031b161c19908701351690558a806104f0565b868b0135835560209a8b019a600190930192016104b3565b876000526020600020601f840160051c8101916020851061058d575b601f0160051c01905b81811061058157506103c4565b60008155600101610574565b909150819061056b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b905087013588610361565b828152602081209188907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016825b8b8282106106565750501061061e575b5050600186811b019055610393565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88960031b161c1990890135169055878061060f565b84013585556001909401936020938401938b9350016105ff565b816000526020600020601f880160051c810191602089106106ae575b601f0160051c01905b8181106106a2575061034a565b60008155600101610695565b909150819061068c565b837f66daadea0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff907f0f633658000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff907fea1c6ea0000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff907f9e9de65d000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b346101005760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101005773ffffffffffffffffffffffffffffffffffffffff61082d611162565b1660005260016020526100fc6100e860406000206111d8565b346101005760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101005773ffffffffffffffffffffffffffffffffffffffff610892611162565b1660005260006020526100fc6100e860406000206111d8565b346101005760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101005773ffffffffffffffffffffffffffffffffffffffff6108f7611162565b1660005260046020526020604060002054604051908152f35b346101005760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101005773ffffffffffffffffffffffffffffffffffffffff61095c611162565b16600052600360205260ff6040600020541660405160038210156106e6576020918152f35b346101005760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610100576109b8611162565b60243563ffffffff8116809103610100576044359161ffff83168093036101005773ffffffffffffffffffffffffffffffffffffffff906109f9338261175a565b169182600052600260205260406000205415610da35782600052600360205260ff6040600020541660038110156106e657600214610d755773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690604051927f4306d354000000000000000000000000000000000000000000000000000000008452806004850152602084602481865afa938415610cef57600094610d41575b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016604051947f23b872dd0000000000000000000000000000000000000000000000000000000086523360048701523060248701528060448701526020866064816000865af1938415610cef57610bab96602095610d26575b50604051938585015260408401526001606084015260608352610b61608084611121565b60006040518097819582947f4000aea000000000000000000000000000000000000000000000000000000000845289600485015260248401526060604484015260648301906112bd565b03925af1908115610cef57600492602092610cfb575b50604051928380927ffc2a88c30000000000000000000000000000000000000000000000000000000082525afa908115610cef57600091610c9a575b7f40cafdc32fe56fc488360b1b38d2c0ae3ac896e631536bb4bae762e342f0e7046040848480600052600560205282600020827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790558160005260036020528260002060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905582519182526020820152a1005b906020823d602011610ce7575b81610cb460209383611121565b81010312610ce45750517f40cafdc32fe56fc488360b1b38d2c0ae3ac896e631536bb4bae762e342f0e704610bfd565b80fd5b3d9150610ca7565b6040513d6000823e3d90fd5b610d1a90833d8511610d1f575b610d128183611121565b81019061132e565b610bc1565b503d610d08565b610d3c90863d8811610d1f57610d128183611121565b610b3d565b90936020823d602011610d6d575b81610d5c60209383611121565b81010312610ce45750519285610aae565b3d9150610d4f565b827fd2a6a91e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b827f7f78e4030000000000000000000000000000000000000000000000000000000060005260045260246000fd5b346101005760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101005760043560243567ffffffffffffffff8111610100573660238201121561010057806004013567ffffffffffffffff8111610597578060051b9160405191610e4a6020850184611121565b825260208201602481948301019136831161010057602401905b8282106110b55750505073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036110575782600052600560205273ffffffffffffffffffffffffffffffffffffffff604060002054169081156110295783600052600560205260406000207fffffffffffffffffffffffff0000000000000000000000000000000000000000815416905581600052600360205260ff6040600020541660038110156106e657600214610ffb575115610fcc577f4188cd09fa8447854490f2c7c4b3e63e3e8e55beb167c0bc1fd93e3fc30f49f892610f716060935183600052600260205260406000205490611385565b9082600052600460205281604060002055826000526003602052604060002060027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905560405192835260208301526040820152a1005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b507fd2a6a91e0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b837f597349fa0000000000000000000000000000000000000000000000000000000060005260045260246000fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f6f6e6c792056524620563220777261707065722063616e2066756c66696c6c006044820152fd5b8135815260209182019101610e64565b346101005760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610100576020906004356000526005825273ffffffffffffffffffffffffffffffffffffffff604060002054168152f35b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761059757604052565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361010057565b90600182811c921680156111ce575b602083101461119f57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691611194565b90604051918260008254926111ec84611185565b808452936001811690811561125a5750600114611213575b5061121192500383611121565b565b90506000929192526020600020906000915b81831061123e5750509060206112119282010138611204565b6020919350806001915483858901015201910190918492611225565b602093506112119592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b82010138611204565b60005b8381106112ad5750506000910152565b818101518382015260200161129d565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936112f98151809281875287808801910161129a565b0116010190565b9181601f840112156101005782359167ffffffffffffffff8311610100576020838186019501011161010057565b90816020910312610100575180151581036101005790565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b811561138f570690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff169081600052600360205260ff6040600020541660038110156106e657600203611744578160005260046020526040600020548101809111611715576114289082600052600260205260406000205490611385565b90600052600160205260406000209080816000927a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008110156116ea575b50806d04ee2d6d415b85acef8100000000600a9210156116cf575b662386f26fc100008110156116bb575b6305f5e1008110156116aa575b61271081101561169b575b606481101561168d575b1015611683575b6001820190600a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60216115006114ea866118bc565b956114f86040519788611121565b8087526118bc565b957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06020870197013688378501015b01917f30313233343536373839616263646566000000000000000000000000000000008282061a8353048015611589577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a919261152f565b50506040519283916000918054906115a082611185565b916001811690811561163f57506001146115f9575b50506115c96115f69483925193849161129a565b01037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611121565b90565b6000908152602081209593505b81811061162357506115f6945060206115c99185010192946115b5565b8554602082890181019190915260019096019587955001611606565b6115f6979550602092506115c99391507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016828701528015150285010192946115b5565b90600101906114b4565b6064600291049301926114ad565b612710600491049301926114a3565b6305f5e10060089104930192611498565b662386f26fc100006010910493019261148b565b6d04ee2d6d415b85acef81000000006020910493019261147b565b604093507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000090049050600a611460565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060005260006020526115f660406000206111d8565b919091803b156118785773ffffffffffffffffffffffffffffffffffffffff16604051927f8da5cb5b000000000000000000000000000000000000000000000000000000008452602084600481855afa938415610cef57600094611811575b509273ffffffffffffffffffffffffffffffffffffffff8093941692839116036117e1575050565b7f29b9b08b0000000000000000000000000000000000000000000000000000000060005260045260245260446000fd5b6020813d602011611870575b8161182a60209383611121565b8101031261186c57519373ffffffffffffffffffffffffffffffffffffffff85168503610ce4575073ffffffffffffffffffffffffffffffffffffffff6117b9565b8480fd5b3d915061181d565b73ffffffffffffffffffffffffffffffffffffffff907f73a5b5e3000000000000000000000000000000000000000000000000000000006000521660045260246000fd5b67ffffffffffffffff811161059757601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0166020019056fea26469706673582212203454a6906cb2eeb5296fb3233acb03b3a84c7ed2f7682966999087b3252dc05364736f6c634300081e0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
