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

559 lines
33 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "ReserveOracle",
"sourceName": "contracts/iso4217w/oracle/ReserveOracle.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "admin",
"type": "address"
},
{
"internalType": "uint256",
"name": "quorumThreshold_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "stalenessThreshold_",
"type": "uint256"
}
],
"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": [],
"name": "ReentrancyGuardReentrantCall",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "string",
"name": "currencyCode",
"type": "string"
},
{
"indexed": false,
"internalType": "uint256",
"name": "consensusReserve",
"type": "uint256"
}
],
"name": "QuorumMet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "string",
"name": "currencyCode",
"type": "string"
},
{
"indexed": true,
"internalType": "address",
"name": "reporter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "reserveBalance",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
}
],
"name": "ReserveReportSubmitted",
"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"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "ORACLE_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "oracle",
"type": "address"
}
],
"name": "addOracle",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "currencyCode",
"type": "string"
}
],
"name": "getConsensusReserve",
"outputs": [
{
"internalType": "uint256",
"name": "consensusReserve",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "currencyCode",
"type": "string"
}
],
"name": "getReports",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "reporter",
"type": "address"
},
{
"internalType": "uint256",
"name": "reserveBalance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "attestationHash",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "isValid",
"type": "bool"
}
],
"internalType": "struct IReserveOracle.ReserveReport[]",
"name": "reports",
"type": "tuple[]"
}
],
"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": "string",
"name": "currencyCode",
"type": "string"
}
],
"name": "getVerifiedReserve",
"outputs": [
{
"internalType": "uint256",
"name": "reserveBalance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
}
],
"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": "address",
"name": "",
"type": "address"
}
],
"name": "isOracle",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "currencyCode",
"type": "string"
}
],
"name": "isQuorumMet",
"outputs": [
{
"internalType": "bool",
"name": "quorumMet",
"type": "bool"
},
{
"internalType": "uint256",
"name": "reportCount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "quorumThreshold",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "oracle",
"type": "address"
}
],
"name": "removeOracle",
"outputs": [],
"stateMutability": "nonpayable",
"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": "uint256",
"name": "threshold",
"type": "uint256"
}
],
"name": "setQuorumThreshold",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "threshold",
"type": "uint256"
}
],
"name": "setStalenessThreshold",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "stalenessThreshold",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "currencyCode",
"type": "string"
},
{
"internalType": "uint256",
"name": "reserveBalance",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "attestationHash",
"type": "bytes32"
}
],
"name": "submitReserveReport",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x6080346100a357601f6200160338819003918201601f19168301916001600160401b038311848410176100a8578084926060946040528339810103126100a35780516001600160a01b038116918282036100a35761007460406020830151920151926001805561006e816100be565b5061013d565b5060025560035560005260076020526040600020600160ff198254161790556040516114049081620001df8239f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b031660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff1661013957818052816020526040822081835260205260408220600160ff198254161790553391600080516020620015e38339815191528180a4600190565b5090565b6001600160a01b031660008181527fa629f6981c2f6895a67dc766e8e03ff72d04a413d0d8773a3ca56e9e474032c160205260408120549091907f68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef19060ff166101d957808352826020526040832082845260205260408320600160ff19825416179055600080516020620015e3833981519152339380a4600190565b50509056fe608060409080825260048036101561001657600080fd5b600091823560e01c90816301ffc9a714610d015750806307e2cea514610cd85780631a68638a14610b9c578063248a9ca314610b715780632f2ff15d14610b4857806336568abe14610b025780634524c7e114610a92578063552579b114610a4d5780637b7a91dd14610a2e57806391d14854146109e7578063a217fddf146109cc578063a84f6ebb146109ad578063a97e5c931461096f578063c70454dc146108f0578063d4e7c7c71461040e578063d547741f146103d4578063df5dd1a51461033d578063f277637a146101cc578063fb01e7f2146101ab5763fdc85fc41461010057600080fd5b346101a75760203660031901126101a757610119610e1b565b90610122611109565b6001600160a01b03821680845260076020528484205490919060ff1615610164575082526007602052918120805460ff1916905590610160906112a0565b5080f35b606490602086519162461bcd60e51b8352820152601c60248201527f526573657276654f7261636c653a206e6f7420616e206f7261636c65000000006044820152fd5b5080fd5b50346101a75760203660031901126101a7576101c5611109565b3560035580f35b50903461033a57602091826003193601126101a757803567ffffffffffffffff811161033657836102036102159236908501610da9565b81875193828580945193849201610e31565b81018481520301902080549061022a82610e54565b9261023787519485610d87565b8284529084528484208491868086015b8585106102e157505050505050816003548042116000146102da5761026c9042610e6c565b905b82518110156102c65760806102838285610e8f565b5101511515806102af575b61029b575b60010161026e565b926102a7600191610eb9565b939050610293565b5081866102bc8386610e8f565b510151101561028e565b505050600254811015918351928352820152f35b508061026e565b6001916005918b516102f281610d55565b848060a01b038754168152848701548382015260028701548d8201526003870154606082015260ff8688015416151560808201528152019301930192918790610247565b8280fd5b80fd5b50346101a75760203660031901126101a757610357610e1b565b90610360611109565b6001600160a01b038216908115610391575082526007602052918120805460ff191660011790559061016090611187565b606490602086519162461bcd60e51b8352820152601b60248201527f526573657276654f7261636c653a207a65726f206164647265737300000000006044820152fd5b508234610336578060031936011261033657610160913561040960016103f8610e05565b938387528660205286200154611161565b611339565b50823461033657606036600319011261033657813567ffffffffffffffff81116108ec5761043f9036908401610da9565b6024928335906000805160206113af83398151915291828752602092878452858820338952845260ff8689205416156108cf575060029060019660028854146108bf57600288553389526007855260ff878a205416156108725781156108315760038651036107dc57878751938751948781818b01976104c081838b610e31565b810189815203019020906003548042116000146107d4576104e19042610e6c565b905b8c845b61078e575b5050505050865185818851610501818389610e31565b81018781520301902090875161051681610d55565b338152868101848152898201904282526060830192604435845260808101958d87528054906801000000000000000082101561077b579061055b918f820181556110a1565b95909561076b575090889493929160018060a01b039051166bffffffffffffffffffffffff60a01b855416178455518c840155516002830155516003820155019051151560ff801983541691161790556105b4856110bd565b865191825242858301527f8eccd79bdbe0a4407fe26cb9db6eb0e92a18b23890238749bdc39a2cae609a39873393a3845163793bb1bd60e11b81528581806105fe888783016110dd565b0381305afa908115610761578891610727575b5061061e575b8686805580f35b828461063c938751948592839263552579b160e01b845283016110dd565b0381305afa91821561071d5787926106ca575b507f33ee88f44f7bbb32f184d48f528cd2281cb4e07e2eb2d5cd312634e81cb5f5fa936106a56106ba928488518781865161068b818388610e31565b810160058152030190205587519182918451928391610e31565b810190600682528581429303019020556110bd565b9351908152a28280808080610617565b9091508281813d8311610716575b6106e28183610d87565b810103126107125751907f33ee88f44f7bbb32f184d48f528cd2281cb4e07e2eb2d5cd312634e81cb5f5fa61064f565b8680fd5b503d6106d8565b85513d89823e3d90fd5b90508581813d831161075a575b61073e8183610d87565b81010312610756575180151581036107565788610611565b8780fd5b503d610734565b86513d8a823e3d90fd5b634e487b7160e01b8f528e8a528efd5b50634e487b7160e01b8f5260418a52858ffd5b83548110156107cf578083836107a58894886110a1565b500154106107b5575b01846104e6565b896107c082876110a1565b5001805460ff191690556107ae565b6104eb565b508b906104e3565b83602b608492878a519362461bcd60e51b85528401528201527f526573657276654f7261636c653a20696e76616c69642063757272656e63792060448201526a18dbd91948199bdc9b585d60aa1b6064820152fd5b83601b606492878a519362461bcd60e51b85528401528201527f526573657276654f7261636c653a207a65726f207265736572766500000000006044820152fd5b836084918689519262461bcd60e51b8452830152808201527f526573657276654f7261636c653a206e6f7420617574686f72697a6564206f7260448201526361636c6560e01b6064820152fd5b8651633ee5aeb560e01b81528490fd5b855163e2517d3f60e01b8152338185015280880191909152604490fd5b8380fd5b5082903461033657602036600319011261033657803567ffffffffffffffff81116108ec5761092191369101610da9565b6109586020835183519082818187019361093c818387610e31565b8101600581520301902054938551938492839251928391610e31565b810160068152030190205482519182526020820152f35b8284346101a75760203660031901126101a75760209160ff9082906001600160a01b0361099a610e1b565b1681526007855220541690519015158152f35b8284346101a757816003193601126101a7576020906003549051908152f35b8284346101a757816003193601126101a75751908152602090f35b508290346103365781600319360112610336578160209360ff92610a09610e05565b903582528186528282206001600160a01b039091168252855220549151911615158152f35b8284346101a757816003193601126101a7576020906002549051908152f35b5091903461033a57602036600319011261033a5782359067ffffffffffffffff821161033a5750610a86602093610a8b92369101610da9565b610ec8565b9051908152f35b5082903461033657602036600319011261033657803591610ab1611109565b8215610abf57505060025580f35b906020606492519162461bcd60e51b8352820152601d60248201527f526573657276654f7261636c653a207a65726f207468726573686f6c640000006044820152fd5b5091346101a757806003193601126101a757610b1c610e05565b90336001600160a01b03831603610b395750610160919235611339565b5163334bd91960e11b81528390fd5b5082346103365780600319360112610336576101609135610b6c60016103f8610e05565b611227565b5082903461033657602036600319011261033657816020936001923581528085522001549051908152f35b50346101a7576020908160031936011261033657803567ffffffffffffffff81116108ec5792610bd483610203879636908601610da9565b810185815203019020918254610be981610e54565b91610bf687519384610d87565b81835285830190819585528685209085925b848410610c7c575050505050845193808501918186525180925285850193925b828110610c355785850386f35b835180516001600160a01b03168652808301518684015287810151888701526060808201519087015260809081015115159086015260a09094019392810192600101610c28565b6005896001928c9b98999b51610c9181610d55565b848060a01b03875416815284870154838201528d6002880154908201526003870154606082015260ff86880154161515608082015281520193019301929197959497610c08565b8284346101a757816003193601126101a757602090516000805160206113af8339815191528152f35b91905034610336576020366003190112610336573563ffffffff60e01b81168091036103365760209250637965db0b60e01b8114908115610d44575b5015158152f35b6301ffc9a760e01b14905083610d3d565b60a0810190811067ffffffffffffffff821117610d7157604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610d7157604052565b81601f82011215610e005780359067ffffffffffffffff8211610d715760405192610dde601f8401601f191660200185610d87565b82845260208383010111610e0057816000926020809301838601378301015290565b600080fd5b602435906001600160a01b0382168203610e0057565b600435906001600160a01b0382168203610e0057565b60005b838110610e445750506000910152565b8181015183820152602001610e34565b67ffffffffffffffff8111610d715760051b60200190565b91908203918211610e7957565b634e487b7160e01b600052601160045260246000fd5b8051821015610ea35760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b6000198114610e795760010190565b906040918251918151610ee081856020809601610e31565b830192828160049560048152030190208054610efb81610e54565b90610f0887519283610d87565b80825284820160009384528584208685925b84841061104b575050505050805191610f3283610e54565b92610f3f88519485610d87565b808452610f4e601f1991610e54565b013686850137809360035480421160001461104457610f6d9042610e6c565b915b805b8451811015610fe2576080610f868287610e8f565b510151151580610fcb575b610f9e575b600101610f71565b95610fc360019189610fb08a89610e8f565b510151610fbd828a610e8f565b52610eb9565b969050610f96565b50838a610fd88388610e8f565b5101511015610f91565b50955096505050929092831561103d57829190825b85841061100657505050500490565b909192936110148584610e8f565b51810180911161102a5793600101929190610ff7565b634e487b7160e01b825260118452602482fd5b5050905090565b5081610f6f565b6001916005918c5161105c81610d55565b848060a01b03865416815284860154838201528d6002870154908201526003860154606082015260ff8d87015416151560808201528152019201920191908790610f1a565b8054821015610ea3576000526005602060002091020190600090565b6110d590602060405192828480945193849201610e31565b810103902090565b604091602082526110fd8151809281602086015260208686019101610e31565b601f01601f1916010190565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205460ff16156111435750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b80600052600060205260406000203360005260205260ff60406000205416156111435750565b6001600160a01b031660008181527fa629f6981c2f6895a67dc766e8e03ff72d04a413d0d8773a3ca56e9e474032c160205260408120549091906000805160206113af8339815191529060ff1661122257808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054161560001461122257808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b6001600160a01b031660008181527fa629f6981c2f6895a67dc766e8e03ff72d04a413d0d8773a3ca56e9e474032c160205260408120549091906000805160206113af8339815191529060ff16156112225780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146112225780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a460019056fe68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef1a2646970667358221220d3fe6fd5905e05c0cc1fc9645ca01b17b9be6371ebf6a5f5697b5eb144ad0f7e64736f6c634300081600332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
"deployedBytecode": "0x608060409080825260048036101561001657600080fd5b600091823560e01c90816301ffc9a714610d015750806307e2cea514610cd85780631a68638a14610b9c578063248a9ca314610b715780632f2ff15d14610b4857806336568abe14610b025780634524c7e114610a92578063552579b114610a4d5780637b7a91dd14610a2e57806391d14854146109e7578063a217fddf146109cc578063a84f6ebb146109ad578063a97e5c931461096f578063c70454dc146108f0578063d4e7c7c71461040e578063d547741f146103d4578063df5dd1a51461033d578063f277637a146101cc578063fb01e7f2146101ab5763fdc85fc41461010057600080fd5b346101a75760203660031901126101a757610119610e1b565b90610122611109565b6001600160a01b03821680845260076020528484205490919060ff1615610164575082526007602052918120805460ff1916905590610160906112a0565b5080f35b606490602086519162461bcd60e51b8352820152601c60248201527f526573657276654f7261636c653a206e6f7420616e206f7261636c65000000006044820152fd5b5080fd5b50346101a75760203660031901126101a7576101c5611109565b3560035580f35b50903461033a57602091826003193601126101a757803567ffffffffffffffff811161033657836102036102159236908501610da9565b81875193828580945193849201610e31565b81018481520301902080549061022a82610e54565b9261023787519485610d87565b8284529084528484208491868086015b8585106102e157505050505050816003548042116000146102da5761026c9042610e6c565b905b82518110156102c65760806102838285610e8f565b5101511515806102af575b61029b575b60010161026e565b926102a7600191610eb9565b939050610293565b5081866102bc8386610e8f565b510151101561028e565b505050600254811015918351928352820152f35b508061026e565b6001916005918b516102f281610d55565b848060a01b038754168152848701548382015260028701548d8201526003870154606082015260ff8688015416151560808201528152019301930192918790610247565b8280fd5b80fd5b50346101a75760203660031901126101a757610357610e1b565b90610360611109565b6001600160a01b038216908115610391575082526007602052918120805460ff191660011790559061016090611187565b606490602086519162461bcd60e51b8352820152601b60248201527f526573657276654f7261636c653a207a65726f206164647265737300000000006044820152fd5b508234610336578060031936011261033657610160913561040960016103f8610e05565b938387528660205286200154611161565b611339565b50823461033657606036600319011261033657813567ffffffffffffffff81116108ec5761043f9036908401610da9565b6024928335906000805160206113af83398151915291828752602092878452858820338952845260ff8689205416156108cf575060029060019660028854146108bf57600288553389526007855260ff878a205416156108725781156108315760038651036107dc57878751938751948781818b01976104c081838b610e31565b810189815203019020906003548042116000146107d4576104e19042610e6c565b905b8c845b61078e575b5050505050865185818851610501818389610e31565b81018781520301902090875161051681610d55565b338152868101848152898201904282526060830192604435845260808101958d87528054906801000000000000000082101561077b579061055b918f820181556110a1565b95909561076b575090889493929160018060a01b039051166bffffffffffffffffffffffff60a01b855416178455518c840155516002830155516003820155019051151560ff801983541691161790556105b4856110bd565b865191825242858301527f8eccd79bdbe0a4407fe26cb9db6eb0e92a18b23890238749bdc39a2cae609a39873393a3845163793bb1bd60e11b81528581806105fe888783016110dd565b0381305afa908115610761578891610727575b5061061e575b8686805580f35b828461063c938751948592839263552579b160e01b845283016110dd565b0381305afa91821561071d5787926106ca575b507f33ee88f44f7bbb32f184d48f528cd2281cb4e07e2eb2d5cd312634e81cb5f5fa936106a56106ba928488518781865161068b818388610e31565b810160058152030190205587519182918451928391610e31565b810190600682528581429303019020556110bd565b9351908152a28280808080610617565b9091508281813d8311610716575b6106e28183610d87565b810103126107125751907f33ee88f44f7bbb32f184d48f528cd2281cb4e07e2eb2d5cd312634e81cb5f5fa61064f565b8680fd5b503d6106d8565b85513d89823e3d90fd5b90508581813d831161075a575b61073e8183610d87565b81010312610756575180151581036107565788610611565b8780fd5b503d610734565b86513d8a823e3d90fd5b634e487b7160e01b8f528e8a528efd5b50634e487b7160e01b8f5260418a52858ffd5b83548110156107cf578083836107a58894886110a1565b500154106107b5575b01846104e6565b896107c082876110a1565b5001805460ff191690556107ae565b6104eb565b508b906104e3565b83602b608492878a519362461bcd60e51b85528401528201527f526573657276654f7261636c653a20696e76616c69642063757272656e63792060448201526a18dbd91948199bdc9b585d60aa1b6064820152fd5b83601b606492878a519362461bcd60e51b85528401528201527f526573657276654f7261636c653a207a65726f207265736572766500000000006044820152fd5b836084918689519262461bcd60e51b8452830152808201527f526573657276654f7261636c653a206e6f7420617574686f72697a6564206f7260448201526361636c6560e01b6064820152fd5b8651633ee5aeb560e01b81528490fd5b855163e2517d3f60e01b8152338185015280880191909152604490fd5b8380fd5b5082903461033657602036600319011261033657803567ffffffffffffffff81116108ec5761092191369101610da9565b6109586020835183519082818187019361093c818387610e31565b8101600581520301902054938551938492839251928391610e31565b810160068152030190205482519182526020820152f35b8284346101a75760203660031901126101a75760209160ff9082906001600160a01b0361099a610e1b565b1681526007855220541690519015158152f35b8284346101a757816003193601126101a7576020906003549051908152f35b8284346101a757816003193601126101a75751908152602090f35b508290346103365781600319360112610336578160209360ff92610a09610e05565b903582528186528282206001600160a01b039091168252855220549151911615158152f35b8284346101a757816003193601126101a7576020906002549051908152f35b5091903461033a57602036600319011261033a5782359067ffffffffffffffff821161033a5750610a86602093610a8b92369101610da9565b610ec8565b9051908152f35b5082903461033657602036600319011261033657803591610ab1611109565b8215610abf57505060025580f35b906020606492519162461bcd60e51b8352820152601d60248201527f526573657276654f7261636c653a207a65726f207468726573686f6c640000006044820152fd5b5091346101a757806003193601126101a757610b1c610e05565b90336001600160a01b03831603610b395750610160919235611339565b5163334bd91960e11b81528390fd5b5082346103365780600319360112610336576101609135610b6c60016103f8610e05565b611227565b5082903461033657602036600319011261033657816020936001923581528085522001549051908152f35b50346101a7576020908160031936011261033657803567ffffffffffffffff81116108ec5792610bd483610203879636908601610da9565b810185815203019020918254610be981610e54565b91610bf687519384610d87565b81835285830190819585528685209085925b848410610c7c575050505050845193808501918186525180925285850193925b828110610c355785850386f35b835180516001600160a01b03168652808301518684015287810151888701526060808201519087015260809081015115159086015260a09094019392810192600101610c28565b6005896001928c9b98999b51610c9181610d55565b848060a01b03875416815284870154838201528d6002880154908201526003870154606082015260ff86880154161515608082015281520193019301929197959497610c08565b8284346101a757816003193601126101a757602090516000805160206113af8339815191528152f35b91905034610336576020366003190112610336573563ffffffff60e01b81168091036103365760209250637965db0b60e01b8114908115610d44575b5015158152f35b6301ffc9a760e01b14905083610d3d565b60a0810190811067ffffffffffffffff821117610d7157604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117610d7157604052565b81601f82011215610e005780359067ffffffffffffffff8211610d715760405192610dde601f8401601f191660200185610d87565b82845260208383010111610e0057816000926020809301838601378301015290565b600080fd5b602435906001600160a01b0382168203610e0057565b600435906001600160a01b0382168203610e0057565b60005b838110610e445750506000910152565b8181015183820152602001610e34565b67ffffffffffffffff8111610d715760051b60200190565b91908203918211610e7957565b634e487b7160e01b600052601160045260246000fd5b8051821015610ea35760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b6000198114610e795760010190565b906040918251918151610ee081856020809601610e31565b830192828160049560048152030190208054610efb81610e54565b90610f0887519283610d87565b80825284820160009384528584208685925b84841061104b575050505050805191610f3283610e54565b92610f3f88519485610d87565b808452610f4e601f1991610e54565b013686850137809360035480421160001461104457610f6d9042610e6c565b915b805b8451811015610fe2576080610f868287610e8f565b510151151580610fcb575b610f9e575b600101610f71565b95610fc360019189610fb08a89610e8f565b510151610fbd828a610e8f565b52610eb9565b969050610f96565b50838a610fd88388610e8f565b5101511015610f91565b50955096505050929092831561103d57829190825b85841061100657505050500490565b909192936110148584610e8f565b51810180911161102a5793600101929190610ff7565b634e487b7160e01b825260118452602482fd5b5050905090565b5081610f6f565b6001916005918c5161105c81610d55565b848060a01b03865416815284860154838201528d6002870154908201526003860154606082015260ff8d87015416151560808201528152019201920191908790610f1a565b8054821015610ea3576000526005602060002091020190600090565b6110d590602060405192828480945193849201610e31565b810103902090565b604091602082526110fd8151809281602086015260208686019101610e31565b601f01601f1916010190565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205460ff16156111435750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b80600052600060205260406000203360005260205260ff60406000205416156111435750565b6001600160a01b031660008181527fa629f6981c2f6895a67dc766e8e03ff72d04a413d0d8773a3ca56e9e474032c160205260408120549091906000805160206113af8339815191529060ff1661122257808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054161560001461122257808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b6001600160a01b031660008181527fa629f6981c2f6895a67dc766e8e03ff72d04a413d0d8773a3ca56e9e474032c160205260408120549091906000805160206113af8339815191529060ff16156112225780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146112225780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a460019056fe68e79a7bf1e0bc45d0a330c573bc367f9cf464fd326078812f301165fbda4ef1a2646970667358221220d3fe6fd5905e05c0cc1fc9645ca01b17b9be6371ebf6a5f5697b5eb144ad0f7e64736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}