Files
smom-dbis-138/artifacts/contracts/tokenization/TokenizedEUR.sol/TokenizedEUR.json
2026-03-02 12:14:09 -08:00

970 lines
42 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "TokenizedEUR",
"sourceName": "contracts/tokenization/TokenizedEUR.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "admin",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"inputs": [],
"name": "EnforcedPause",
"type": "error"
},
{
"inputs": [],
"name": "ExpectedPause",
"type": "error"
},
{
"inputs": [],
"name": "FabricTxAlreadyProcessed",
"type": "error"
},
{
"inputs": [],
"name": "InsufficientFabricBalance",
"type": "error"
},
{
"inputs": [],
"name": "InvalidFabricAttestation",
"type": "error"
},
{
"inputs": [],
"name": "ZeroAddress",
"type": "error"
},
{
"inputs": [],
"name": "ZeroAmount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "fabricTxHash",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "string",
"name": "tokenId",
"type": "string"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "FabricAttestationReceived",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": true,
"internalType": "string",
"name": "fabricTokenId",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "fabricTxHash",
"type": "bytes32"
}
],
"name": "TokenizedEURBurned",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"indexed": true,
"internalType": "string",
"name": "fabricTokenId",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "fabricTxHash",
"type": "bytes32"
}
],
"name": "TokenizedEURMinted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"inputs": [],
"name": "ATTESTOR_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "BURNER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MINTER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "string",
"name": "fabricTokenId",
"type": "string"
},
{
"internalType": "bytes32",
"name": "fabricTxHash",
"type": "bytes32"
}
],
"name": "burnForFabric",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "burnFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"name": "fabricTokenBalances",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "fabricTokenId",
"type": "string"
}
],
"name": "getFabricTokenBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "fabricTxHash",
"type": "bytes32"
}
],
"name": "isFabricTxProcessed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "string",
"name": "fabricTokenId",
"type": "string"
},
{
"internalType": "bytes32",
"name": "fabricTxHash",
"type": "bytes32"
},
{
"components": [
{
"internalType": "bytes32",
"name": "fabricTxHash",
"type": "bytes32"
},
{
"internalType": "string",
"name": "tokenId",
"type": "string"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "address",
"name": "minter",
"type": "address"
},
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
}
],
"internalType": "struct TokenizedEUR.FabricAttestation",
"name": "attestation",
"type": "tuple"
}
],
"name": "mintFromFabric",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "processedFabricTxs",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x6080346200037e57601f90601f196001600160401b03620018ec38819003858101841685018381118682101762000282578592829160405283396020948591810103126200037e5751926001600160a01b03841684036200037e576200006462000383565b600d81526c2a37b5b2b734bd32b21022aaa960991b828201526200008762000383565b9560058752641155548b5560da1b83880152815192848411620002825760039384546001948582811c9216801562000373575b848310146200035d57818584931162000307575b508390858311600114620002a45760009262000298575b505060001982871b1c191690841b1784555b8751948511620002825760049586548481811c9116801562000277575b83821014620002625783811162000217575b5081928611600114620001a957505083929183916200018c986000956200019d575b50501b92600019911b1c19161790555b60ff19600654166006556200016d81620003a3565b50620001798162000424565b506200018581620004c7565b5062000565565b506040516112c89081620006048239f35b01519350388062000148565b85949291939516978660005283600020936000905b8a8210620001ff575050846200018c9910620001e4575b50505050811b01905562000158565b01519060f884600019921b161c1916905538808080620001d5565b808885978294968601518155019601930190620001be565b87600052826000208480890160051c820192858a1062000258575b0160051c019085905b8281106200024b57505062000126565b600081550185906200023b565b9250819262000232565b602288634e487b7160e01b6000525260246000fd5b90607f169062000114565b634e487b7160e01b600052604160045260246000fd5b015190503880620000e5565b90898794169188600052856000209260005b87828210620002f05750508411620002d7575b505050811b018455620000f7565b015160001983891b60f8161c19169055388080620002c9565b8385015186558a97909501949384019301620002b6565b90915086600052836000208580850160051c82019286861062000353575b918891869594930160051c01915b82811062000343575050620000ce565b6000815585945088910162000333565b9250819262000325565b634e487b7160e01b600052602260045260246000fd5b91607f1691620000ba565b600080fd5b60408051919082016001600160401b038111838210176200028257604052565b6001600160a01b031660008181527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc602052604081205490919060ff16620004205781805260056020526040822081835260205260408220600160ff198254161790553391600080516020620018cc8339815191528180a4600190565b5090565b6001600160a01b031660008181527f15a28d26fa1bf736cf7edc9922607171ccb09c3c73b808e7772a3013e068a52260205260408120549091907f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a69060ff16620004c25780835260056020526040832082845260205260408320600160ff19825416179055600080516020620018cc833981519152339380a4600190565b505090565b6001600160a01b031660008181527f847f481f687befb06ed3511f1a8dcef57e83007c0147ae5047583d705617093760205260408120549091907f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8489060ff16620004c25780835260056020526040832082845260205260408320600160ff19825416179055600080516020620018cc833981519152339380a4600190565b6001600160a01b031660008181527f9216028466ae3d178d2cc82224e9164d3357b0abf92315e21b3d9ea4f232a03060205260408120549091907fa7e0cd0f2772b23ee4c329892293a6bd99d48c306b094d6d008c9a8bb8b731e49060ff16620004c25780835260056020526040832082845260205260408320600160ff19825416179055600080516020620018cc833981519152339380a460019056fe608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a714610d115750816306fdde0314610c1a578163095ea7b314610b7057816318160ddd14610b5157816323b872dd14610b14578163248a9ca314610ae9578163282c51f314610aae5781632f2ff15d14610a84578163313ce56714610a6857816333878ee81461073657816336568abe14610a225781633f4ba83a146109b857816342966c681461099a5781634a7e7148146104475781635a807447146107f25781635c975abb146107ce57816362723644146107935781636571fb051461073657816367ce3c71146104de57816370a08231146104a757816379cc6790146104745781637a0de9b9146104475781638456cb59146103ec57816391d14854146103a557816395d89b4114610285578163a217fddf1461026a578163a9059cbb14610239578163d5391393146101fe578163d547741f146101ba575063dd62ed3e1461016f57600080fd5b346101b657806003193601126101b6578060209261018b610dac565b610193610dc7565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b5080fd5b919050346101fa57806003193601126101fa576101f691356101f160016101df610dc7565b938387526005602052862001546110b8565b61115e565b5080f35b8280fd5b5050346101b657816003193601126101b657602090517f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68152f35b5050346101b657806003193601126101b657602090610263610259610dac565b6024359033610f82565b5160018152f35b5050346101b657816003193601126101b65751908152602090f35b8284346103a257806003193601126103a2578151918184549260018460011c9160018616958615610398575b6020968785108114610385579087899a92868b999a9b52918260001461035b575050600114610300575b85886102fc896102ed848a0385610ddd565b51928284938452830190610d87565b0390f35b815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b82841061034357505050820101816102ed6102fc886102db565b8054848a018601528895508794909301928101610329565b60ff19168882015294151560051b870190940194508593506102ed92506102fc91508990506102db565b634e487b7160e01b835260228a52602483fd5b92607f16926102b1565b80fd5b9050346101fa57816003193601126101fa578160209360ff926103c6610dc7565b90358252600586528282206001600160a01b039091168252855220549151911615158152f35b5050346101b657816003193601126101b65760207f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589161042a611060565b610432611274565b600160ff19600654161760065551338152a180f35b9050346101fa5760203660031901126101fa578160209360ff923581526007855220541690519015158152f35b5050346101b6573660031901126103a2576104a4610490610dac565b6024359061049f823383610eaf565b6111d5565b80f35b5050346101b65760203660031901126101b65760209181906001600160a01b036104cf610dac565b16815280845220549051908152f35b8383346101b6576003199060a0368301126101fa576104fb610dac565b67ffffffffffffffff919060243560443584811161072e576105209036908901610e15565b93606435956084359182116107325760c090823603011261072e577f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a69283885260209360058552858920338a52855260ff868a205416156107105750610584611274565b6001600160a01b03169081156107005782156106f0578688526007845260ff85892054166106e05786818a0135036106d057604483910135036106c057869750857ee528c6b601f504d72f30c352a7623cc7521c1ba1eace1d996166f907f6017e96975260078352838820600160ff1982541617905583518381875161060d8183858c01610d64565b81016008815203019020610622838254610e8c565b905561063082600254610e8c565b60025580885287835283882082815401905580887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef858751868152a361067585610e6c565b907f427d384bfd76582d3460926ac6a9a504cb64e0053368620dfb04912b4bf87e418580518581528a87820152a36106b68351948486958652850190610d87565b918301520390a280f35b8351630172069b60e61b81528890fd5b8451630172069b60e61b81528990fd5b84516379eeec0360e11b81528990fd5b8451631f2a200560e01b81528990fd5b845163d92e233d60e01b81528990fd5b855163e2517d3f60e01b815233818c01526024810191909152604490fd5b8680fd5b8780fd5b8284346103a25760203660031901126103a25782359067ffffffffffffffff82116103a25750602061076f819461078193369101610e15565b81845193828580945193849201610d64565b81016008815203019020549051908152f35b5050346101b657816003193601126101b657602090517fa7e0cd0f2772b23ee4c329892293a6bd99d48c306b094d6d008c9a8bb8b731e48152f35b5050346101b657816003193601126101b65760209060ff6006541690519015158152f35b8383346101b65760803660031901126101b65761080d610dac565b6024359160443567ffffffffffffffff8111610996576108309036908701610e15565b926064357f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8489485875260209560058752848820338952875260ff858920541615610978575061087d611274565b6001600160a01b0385169485156107005783156106f0578288526007875260ff85892054166106e0578451848351918981818701946108bd818388610d64565b81016008815203019020541061096857876108f791858b5260078252878b20600160ff198254161790558751809381928751928391610d64565b810160088152030190208054908582039182116109555785610948937fecb82cc1900aa7a4f72d8cc2532c2989e27c092cb360a180ad11a6d79348102a989796959361094393556111d5565b610e6c565b958351928352820152a380f35b634e487b7160e01b8a5260118b5260248afd5b855163cec4ad3760e01b81528a90fd5b845163e2517d3f60e01b815233818b01526024810191909152604490fd5b8480fd5b8390346101b65760203660031901126101b6576104a49035336111d5565b9050346101fa57826003193601126101fa576109d2611060565b6006549060ff821615610a14575060ff1916600655513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602090a180f35b8251638dfc202b60e01b8152fd5b8383346101b657806003193601126101b657610a3c610dc7565b90336001600160a01b03831603610a5957506101f691923561115e565b5163334bd91960e11b81528390fd5b5050346101b657816003193601126101b6576020905160128152f35b919050346101fa57806003193601126101fa576101f69135610aa960016101df610dc7565b6110de565b5050346101b657816003193601126101b657602090517f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8488152f35b9050346101fa5760203660031901126101fa5781602093600192358152600585522001549051908152f35b5050346101b65760603660031901126101b657602090610263610b35610dac565b610b3d610dc7565b60443591610b4c833383610eaf565b610f82565b5050346101b657816003193601126101b6576020906002549051908152f35b9050346101fa57816003193601126101fa57610b8a610dac565b602435903315610c03576001600160a01b0316918215610bec57508083602095338152600187528181208582528752205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b8351634a1406b160e11b8152908101859052602490fd5b835163e602df0560e01b8152808401869052602490fd5b8284346103a257806003193601126103a257815191816003549260018460011c9160018616958615610d07575b6020968785108114610385578899509688969785829a529182600014610ce0575050600114610c84575b5050506102fc92916102ed910385610ddd565b9190869350600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410610cc857505050820101816102ed6102fc610c71565b8054848a018601528895508794909301928101610caf565b60ff19168782015293151560051b860190930193508492506102ed91506102fc9050610c71565b92607f1692610c47565b8491346101fa5760203660031901126101fa573563ffffffff60e01b81168091036101fa5760209250637965db0b60e01b8114908115610d53575b5015158152f35b6301ffc9a760e01b14905083610d4c565b60005b838110610d775750506000910152565b8181015183820152602001610d67565b90602091610da081518092818552858086019101610d64565b601f01601f1916010190565b600435906001600160a01b0382168203610dc257565b600080fd5b602435906001600160a01b0382168203610dc257565b90601f8019910116810190811067ffffffffffffffff821117610dff57604052565b634e487b7160e01b600052604160045260246000fd5b81601f82011215610dc25780359067ffffffffffffffff8211610dff5760405192610e4a601f8401601f191660200185610ddd565b82845260208383010111610dc257816000926020809301838601378301015290565b610e8490602060405192828480945193849201610d64565b810103902090565b91908201809211610e9957565b634e487b7160e01b600052601160045260246000fd5b9160018060a01b038093169160009383855260016020526040938486209183169182875260205284862054926000198403610eee575b50505050505050565b848410610f5257508015610f3a578115610f2257855260016020528385209085526020520391205538808080808080610ee5565b8451634a1406b160e11b815260048101879052602490fd5b845163e602df0560e01b815260048101879052602490fd5b8551637dc7a0d960e11b81526001600160a01b039190911660048201526024810184905260448101859052606490fd5b916001600160a01b03808416928315611047571692831561102e5760009083825281602052604082205490838210610ffc575091604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b604051634b637e8f60e11b815260006004820152602490fd5b3360009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc602052604081205460ff161561109a5750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b80600052600560205260406000203360005260205260ff604060002054161561109a5750565b906000918083526005602052604083209160018060a01b03169182845260205260ff604084205416156000146111595780835260056020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b906000918083526005602052604083209160018060a01b03169182845260205260ff604084205416600014611159578083526005602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b906001600160a01b03821690811561104757600092828452836020526040842054908282106112425750817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926020928587528684520360408620558060025403600255604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101829052606490fd5b60ff6006541661128057565b60405163d93c066560e01b8152600490fdfea264697066735822122021196c3a6b92163846157be25cc3cd1a7dae4ea03fcd0ddde64a4b41ccd2192164736f6c634300081600332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
"deployedBytecode": "0x608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a714610d115750816306fdde0314610c1a578163095ea7b314610b7057816318160ddd14610b5157816323b872dd14610b14578163248a9ca314610ae9578163282c51f314610aae5781632f2ff15d14610a84578163313ce56714610a6857816333878ee81461073657816336568abe14610a225781633f4ba83a146109b857816342966c681461099a5781634a7e7148146104475781635a807447146107f25781635c975abb146107ce57816362723644146107935781636571fb051461073657816367ce3c71146104de57816370a08231146104a757816379cc6790146104745781637a0de9b9146104475781638456cb59146103ec57816391d14854146103a557816395d89b4114610285578163a217fddf1461026a578163a9059cbb14610239578163d5391393146101fe578163d547741f146101ba575063dd62ed3e1461016f57600080fd5b346101b657806003193601126101b6578060209261018b610dac565b610193610dc7565b6001600160a01b0391821683526001865283832091168252845220549051908152f35b5080fd5b919050346101fa57806003193601126101fa576101f691356101f160016101df610dc7565b938387526005602052862001546110b8565b61115e565b5080f35b8280fd5b5050346101b657816003193601126101b657602090517f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68152f35b5050346101b657806003193601126101b657602090610263610259610dac565b6024359033610f82565b5160018152f35b5050346101b657816003193601126101b65751908152602090f35b8284346103a257806003193601126103a2578151918184549260018460011c9160018616958615610398575b6020968785108114610385579087899a92868b999a9b52918260001461035b575050600114610300575b85886102fc896102ed848a0385610ddd565b51928284938452830190610d87565b0390f35b815286935091907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b82841061034357505050820101816102ed6102fc886102db565b8054848a018601528895508794909301928101610329565b60ff19168882015294151560051b870190940194508593506102ed92506102fc91508990506102db565b634e487b7160e01b835260228a52602483fd5b92607f16926102b1565b80fd5b9050346101fa57816003193601126101fa578160209360ff926103c6610dc7565b90358252600586528282206001600160a01b039091168252855220549151911615158152f35b5050346101b657816003193601126101b65760207f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589161042a611060565b610432611274565b600160ff19600654161760065551338152a180f35b9050346101fa5760203660031901126101fa578160209360ff923581526007855220541690519015158152f35b5050346101b6573660031901126103a2576104a4610490610dac565b6024359061049f823383610eaf565b6111d5565b80f35b5050346101b65760203660031901126101b65760209181906001600160a01b036104cf610dac565b16815280845220549051908152f35b8383346101b6576003199060a0368301126101fa576104fb610dac565b67ffffffffffffffff919060243560443584811161072e576105209036908901610e15565b93606435956084359182116107325760c090823603011261072e577f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a69283885260209360058552858920338a52855260ff868a205416156107105750610584611274565b6001600160a01b03169081156107005782156106f0578688526007845260ff85892054166106e05786818a0135036106d057604483910135036106c057869750857ee528c6b601f504d72f30c352a7623cc7521c1ba1eace1d996166f907f6017e96975260078352838820600160ff1982541617905583518381875161060d8183858c01610d64565b81016008815203019020610622838254610e8c565b905561063082600254610e8c565b60025580885287835283882082815401905580887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef858751868152a361067585610e6c565b907f427d384bfd76582d3460926ac6a9a504cb64e0053368620dfb04912b4bf87e418580518581528a87820152a36106b68351948486958652850190610d87565b918301520390a280f35b8351630172069b60e61b81528890fd5b8451630172069b60e61b81528990fd5b84516379eeec0360e11b81528990fd5b8451631f2a200560e01b81528990fd5b845163d92e233d60e01b81528990fd5b855163e2517d3f60e01b815233818c01526024810191909152604490fd5b8680fd5b8780fd5b8284346103a25760203660031901126103a25782359067ffffffffffffffff82116103a25750602061076f819461078193369101610e15565b81845193828580945193849201610d64565b81016008815203019020549051908152f35b5050346101b657816003193601126101b657602090517fa7e0cd0f2772b23ee4c329892293a6bd99d48c306b094d6d008c9a8bb8b731e48152f35b5050346101b657816003193601126101b65760209060ff6006541690519015158152f35b8383346101b65760803660031901126101b65761080d610dac565b6024359160443567ffffffffffffffff8111610996576108309036908701610e15565b926064357f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8489485875260209560058752848820338952875260ff858920541615610978575061087d611274565b6001600160a01b0385169485156107005783156106f0578288526007875260ff85892054166106e0578451848351918981818701946108bd818388610d64565b81016008815203019020541061096857876108f791858b5260078252878b20600160ff198254161790558751809381928751928391610d64565b810160088152030190208054908582039182116109555785610948937fecb82cc1900aa7a4f72d8cc2532c2989e27c092cb360a180ad11a6d79348102a989796959361094393556111d5565b610e6c565b958351928352820152a380f35b634e487b7160e01b8a5260118b5260248afd5b855163cec4ad3760e01b81528a90fd5b845163e2517d3f60e01b815233818b01526024810191909152604490fd5b8480fd5b8390346101b65760203660031901126101b6576104a49035336111d5565b9050346101fa57826003193601126101fa576109d2611060565b6006549060ff821615610a14575060ff1916600655513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602090a180f35b8251638dfc202b60e01b8152fd5b8383346101b657806003193601126101b657610a3c610dc7565b90336001600160a01b03831603610a5957506101f691923561115e565b5163334bd91960e11b81528390fd5b5050346101b657816003193601126101b6576020905160128152f35b919050346101fa57806003193601126101fa576101f69135610aa960016101df610dc7565b6110de565b5050346101b657816003193601126101b657602090517f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8488152f35b9050346101fa5760203660031901126101fa5781602093600192358152600585522001549051908152f35b5050346101b65760603660031901126101b657602090610263610b35610dac565b610b3d610dc7565b60443591610b4c833383610eaf565b610f82565b5050346101b657816003193601126101b6576020906002549051908152f35b9050346101fa57816003193601126101fa57610b8a610dac565b602435903315610c03576001600160a01b0316918215610bec57508083602095338152600187528181208582528752205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b8351634a1406b160e11b8152908101859052602490fd5b835163e602df0560e01b8152808401869052602490fd5b8284346103a257806003193601126103a257815191816003549260018460011c9160018616958615610d07575b6020968785108114610385578899509688969785829a529182600014610ce0575050600114610c84575b5050506102fc92916102ed910385610ddd565b9190869350600383527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410610cc857505050820101816102ed6102fc610c71565b8054848a018601528895508794909301928101610caf565b60ff19168782015293151560051b860190930193508492506102ed91506102fc9050610c71565b92607f1692610c47565b8491346101fa5760203660031901126101fa573563ffffffff60e01b81168091036101fa5760209250637965db0b60e01b8114908115610d53575b5015158152f35b6301ffc9a760e01b14905083610d4c565b60005b838110610d775750506000910152565b8181015183820152602001610d67565b90602091610da081518092818552858086019101610d64565b601f01601f1916010190565b600435906001600160a01b0382168203610dc257565b600080fd5b602435906001600160a01b0382168203610dc257565b90601f8019910116810190811067ffffffffffffffff821117610dff57604052565b634e487b7160e01b600052604160045260246000fd5b81601f82011215610dc25780359067ffffffffffffffff8211610dff5760405192610e4a601f8401601f191660200185610ddd565b82845260208383010111610dc257816000926020809301838601378301015290565b610e8490602060405192828480945193849201610d64565b810103902090565b91908201809211610e9957565b634e487b7160e01b600052601160045260246000fd5b9160018060a01b038093169160009383855260016020526040938486209183169182875260205284862054926000198403610eee575b50505050505050565b848410610f5257508015610f3a578115610f2257855260016020528385209085526020520391205538808080808080610ee5565b8451634a1406b160e11b815260048101879052602490fd5b845163e602df0560e01b815260048101879052602490fd5b8551637dc7a0d960e11b81526001600160a01b039190911660048201526024810184905260448101859052606490fd5b916001600160a01b03808416928315611047571692831561102e5760009083825281602052604082205490838210610ffc575091604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815220818154019055604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101839052606490fd5b60405163ec442f0560e01b815260006004820152602490fd5b604051634b637e8f60e11b815260006004820152602490fd5b3360009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc602052604081205460ff161561109a5750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b80600052600560205260406000203360005260205260ff604060002054161561109a5750565b906000918083526005602052604083209160018060a01b03169182845260205260ff604084205416156000146111595780835260056020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b906000918083526005602052604083209160018060a01b03169182845260205260ff604084205416600014611159578083526005602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b906001600160a01b03821690811561104757600092828452836020526040842054908282106112425750817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926020928587528684520360408620558060025403600255604051908152a3565b60405163391434e360e21b81526001600160a01b03919091166004820152602481019190915260448101829052606490fd5b60ff6006541661128057565b60405163d93c066560e01b8152600490fdfea264697066735822122021196c3a6b92163846157be25cc3cd1a7dae4ea03fcd0ddde64a4b41ccd2192164736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}