0g-storage-node/storage-contracts-abis/PoraMineTest.json
2024-07-22 17:32:51 +08:00

945 lines
65 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "PoraMineTest",
"sourceName": "contracts/test/PoraMineTest.sol",
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "settings",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "minerId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "beneficiary",
"type": "address"
}
],
"name": "NewMinerId",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "epoch",
"type": "uint256"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "minerId",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "epochIndex",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "recallPosition",
"type": "uint256"
}
],
"name": "NewSubmission",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "minerId",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
}
],
"name": "UpdateMinerId",
"type": "event"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "contextDigest",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "nonce",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "minerId",
"type": "bytes32"
},
{
"components": [
{
"internalType": "uint256",
"name": "startPosition",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "mineLength",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "shardId",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "shardMask",
"type": "uint64"
}
],
"internalType": "struct RecallRange",
"name": "range",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "recallPosition",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "sealOffset",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "sealedContextDigest",
"type": "bytes32"
},
{
"internalType": "bytes32[128]",
"name": "sealedData",
"type": "bytes32[128]"
},
{
"internalType": "bytes32[]",
"name": "merkleProof",
"type": "bytes32[]"
}
],
"internalType": "struct MineLib.PoraAnswer",
"name": "answer",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint256",
"name": "epoch",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "mineStart",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "flowRoot",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "flowLength",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "blockDigest",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "digest",
"type": "bytes32"
}
],
"internalType": "struct MineContext",
"name": "context",
"type": "tuple"
}
],
"name": "basicCheck",
"outputs": [],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "beneficiaries",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "canSubmit",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "currentSubmissions",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "dataProofEnabled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "difficultyAdjustRatio",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "fixedDifficulty",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "flow",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "difficulty",
"type": "uint256"
},
{
"internalType": "address",
"name": "flow_",
"type": "address"
},
{
"internalType": "address",
"name": "reward_",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "initialized",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "lastMinedEpoch",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "contextDigest",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "nonce",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "minerId",
"type": "bytes32"
},
{
"components": [
{
"internalType": "uint256",
"name": "startPosition",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "mineLength",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "shardId",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "shardMask",
"type": "uint64"
}
],
"internalType": "struct RecallRange",
"name": "range",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "recallPosition",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "sealOffset",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "sealedContextDigest",
"type": "bytes32"
},
{
"internalType": "bytes32[128]",
"name": "sealedData",
"type": "bytes32[128]"
},
{
"internalType": "bytes32[]",
"name": "merkleProof",
"type": "bytes32[]"
}
],
"internalType": "struct MineLib.PoraAnswer",
"name": "answer",
"type": "tuple"
}
],
"name": "pora",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "poraTarget",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "contextDigest",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "nonce",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "minerId",
"type": "bytes32"
},
{
"components": [
{
"internalType": "uint256",
"name": "startPosition",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "mineLength",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "shardId",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "shardMask",
"type": "uint64"
}
],
"internalType": "struct RecallRange",
"name": "range",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "recallPosition",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "sealOffset",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "sealedContextDigest",
"type": "bytes32"
},
{
"internalType": "bytes32[128]",
"name": "sealedData",
"type": "bytes32[128]"
},
{
"internalType": "bytes32[]",
"name": "merkleProof",
"type": "bytes32[]"
}
],
"internalType": "struct MineLib.PoraAnswer",
"name": "answer",
"type": "tuple"
},
{
"internalType": "bytes32[128]",
"name": "unsealedData",
"type": "bytes32[128]"
}
],
"name": "recoverMerkleRoot",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "beneficiary",
"type": "address"
},
{
"internalType": "uint64",
"name": "seed",
"type": "uint64"
}
],
"name": "requestMinerId",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "reward",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "sealDataEnabled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "difficultyAdjustRatio_",
"type": "uint256"
}
],
"name": "setDifficultyAdjustRatio",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "minerId",
"type": "bytes32"
}
],
"name": "setMiner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_targetQuality",
"type": "uint256"
}
],
"name": "setQuality",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "targetMineBlocks_",
"type": "uint256"
}
],
"name": "setTargetMineBlocks",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "targetSubmissions_",
"type": "uint256"
}
],
"name": "setTargetSubmissions",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "contextDigest",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "nonce",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "minerId",
"type": "bytes32"
},
{
"components": [
{
"internalType": "uint256",
"name": "startPosition",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "mineLength",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "shardId",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "shardMask",
"type": "uint64"
}
],
"internalType": "struct RecallRange",
"name": "range",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "recallPosition",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "sealOffset",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "sealedContextDigest",
"type": "bytes32"
},
{
"internalType": "bytes32[128]",
"name": "sealedData",
"type": "bytes32[128]"
},
{
"internalType": "bytes32[]",
"name": "merkleProof",
"type": "bytes32[]"
}
],
"internalType": "struct MineLib.PoraAnswer",
"name": "answer",
"type": "tuple"
}
],
"name": "submit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "targetMineBlocks",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "targetSubmissions",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "targetSubmissionsNextEpoch",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "bytes32",
"name": "minerId",
"type": "bytes32"
}
],
"name": "transferBeneficial",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "bytes32",
"name": "contextDigest",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "nonce",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "minerId",
"type": "bytes32"
},
{
"components": [
{
"internalType": "uint256",
"name": "startPosition",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "mineLength",
"type": "uint256"
},
{
"internalType": "uint64",
"name": "shardId",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "shardMask",
"type": "uint64"
}
],
"internalType": "struct RecallRange",
"name": "range",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "recallPosition",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "sealOffset",
"type": "uint256"
},
{
"internalType": "bytes32",
"name": "sealedContextDigest",
"type": "bytes32"
},
{
"internalType": "bytes32[128]",
"name": "sealedData",
"type": "bytes32[128]"
},
{
"internalType": "bytes32[]",
"name": "merkleProof",
"type": "bytes32[]"
}
],
"internalType": "struct MineLib.PoraAnswer",
"name": "answer",
"type": "tuple"
}
],
"name": "unseal",
"outputs": [
{
"internalType": "bytes32[128]",
"name": "unsealedData",
"type": "bytes32[128]"
}
],
"stateMutability": "pure",
"type": "function"
}
],
"bytecode": "0x60e06040526064600355600a600455600a6005556014600655600060075560006008553480156200002f57600080fd5b5060405162002c0438038062002c048339810160408190526200005291620000d9565b60048117620000613362000080565b6001811615608052600281161560a052600416151560c05250620000f3565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600060208284031215620000ec57600080fd5b5051919050565b60805160a05160c051612ac56200013f6000396000818161033d01528181610d09015261107401526000818161036d0152610acb0152600081816103b30152610a8e0152612ac56000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80637bba7d611161010f578063b0628ee0116100a2578063dddc61a811610071578063dddc61a814610458578063e1498cf914610461578063f2fde38b14610474578063ffbc9bd01461048757600080fd5b8063b0628ee0146103fb578063b4988fd01461040e578063b51e039714610421578063b776a5121461044f57600080fd5b8063a8279182116100de578063a8279182146103a5578063adaa7a0f146103ae578063ae722e82146103d5578063aed75224146103e857600080fd5b80637bba7d61146103385780637eca56881461035f57806382975fe7146103685780638da5cb5b1461038f57600080fd5b806339cd53ee116101875780635bdca855116101565780635bdca855146102f75780636e9bb60b1461030a578063704d3c961461031d578063715018a61461033057600080fd5b806339cd53ee146102925780633baebb75146102bb57806348f61441146102ce57806359e7b5be146102d757600080fd5b8063228cb733116101c3578063228cb7331461023457806331223ba71461025f578063331f3b9c14610276578063343aad821461027f57600080fd5b8063047c13f5146101ea578063158ef93e146101ff5780631600c62414610221575b600080fd5b6101fd6101f83660046123f2565b61048f565b005b60005461020c9060ff1681565b60405190151581526020015b60405180910390f35b6101fd61022f366004612425565b6105ab565b600254610247906001600160a01b031681565b6040516001600160a01b039091168152602001610218565b61026860075481565b604051908152602001610218565b61026860035481565b600154610247906001600160a01b031681565b6102476102a0366004612425565b600a602052600090815260409020546001600160a01b031681565b6101fd6102c93660046126bb565b6105b8565b61026860095481565b6102ea6102e5366004612753565b61084f565b604051610218919061278f565b6101fd610305366004612425565b610866565b6102686103183660046127c1565b610886565b6101fd61032b366004612425565b610899565b6101fd6108a6565b61020c7f000000000000000000000000000000000000000000000000000000000000000081565b61026860055481565b61020c7f000000000000000000000000000000000000000000000000000000000000000081565b60005461010090046001600160a01b0316610247565b61026860085481565b61020c7f000000000000000000000000000000000000000000000000000000000000000081565b6101fd6103e3366004612753565b6108ba565b6102686103f6366004612753565b610d35565b6101fd610409366004612807565b610f38565b6101fd61041c366004612831565b610ff8565b6101fd61042f366004612425565b6000908152600a6020526040902080546001600160a01b03191633179055565b61026860045481565b61026860065481565b6101fd61046f366004612425565b600955565b6101fd61048236600461286d565b6110ce565b61020c611144565b600061049c60014361289e565b60408051914060208301526bffffffffffffffffffffffff193360601b16908201526001600160c01b031960c084901b166054820152605c0160408051601f1981840301815291815281516020928301206000818152600a9093529120549091506001600160a01b0316156105515760405162461bcd60e51b8152602060048201526016602482015275135a5b995c9259081a185cc81c9959da5cdd195c995960521b60448201526064015b60405180910390fd5b6000818152600a602052604080822080546001600160a01b0319166001600160a01b0387169081179091559051909183917fbfeb006f16aca8eb3d9953cf44db6b11b6f3041a313875dfa18f2e9d71bd309e9190a3505050565b6105b36111df565b600355565b815160a08201511461060c5760405162461bcd60e51b815260206004820152601a60248201527f496e636f6e73697374656e74206d696e696e67206469676573740000000000006044820152606401610548565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708160a001510361067f5760405162461bcd60e51b815260206004820152601960248201527f456d707479206469676573742063616e206e6f74206d696e65000000000000006044820152606401610548565b600454600854106106d25760405162461bcd60e51b815260206004820152601c60248201527f45706f63682068617320656e6f756768207375626d697373696f6e73000000006044820152606401610548565b60006101006106e3610400826128b1565b6106ed91906128e6565b6101006106fc610400826128b1565b61070691906128e6565b836060015161071591906128e6565b61071f91906128b1565b6060840151909150610731908261123f565b60015460c0840151604051630fab20e160e31b815260048101919091526000916001600160a01b031690637d590708906024016040805180830381865afa158015610780573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a49190612911565b905060006101006107b861040060046128b1565b6107c291906128e6565b85608001516107d1919061296b565b90508082600001516001600160801b03161080156107fc57508082602001516001600160801b031610155b6108485760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964207365616c656420636f6e74657874206469676573740000006044820152606401610548565b5050505050565b610857612387565b61086082611483565b92915050565b61086e6111df565b60058190556007546000036108835760048190555b50565b60006108928383611597565b9392505050565b6108a16111df565b600655565b6108ae6111df565b6108b8600061180a565b565b60408101516109045760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b6044820152606401610548565b6040808201516000908152600a60205220546001600160a01b03168061096c5760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f74207265676973746572656400000000006044820152606401610548565b60015460408051635a325a9f60e11b815290516000926001600160a01b03169163b464b53e9160048083019260c0929190829003018187875af11580156109b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109db919061297e565b905060075481600001511015610a415760405162461bcd60e51b815260206004820152602560248201527f496e7465726e616c206572726f723a2065706f6368206e756d62657220646563604482015264726561736560d81b6064820152608401610548565b6007548151118015610a5557506000600754115b15610a7a576004546008541015610a6e57610a6e611863565b60006008556005546004555b610a8483826105b8565b610a8c612387565b7f000000000000000000000000000000000000000000000000000000000000000015610ac257610abb84611483565b9050610ac9565b5060e08301515b7f000000000000000000000000000000000000000000000000000000000000000015610b52576000610afb8583611597565b905082604001518114610b505760405162461bcd60e51b815260206004820152601860248201527f496e636f6e73697374656e74206d65726b6c6520726f6f7400000000000000006044820152606401610548565b505b610b5a612387565b90506000610b6785610d35565b9050610b768560600151611873565b600954610b8391906128e6565b811115610bd25760405162461bcd60e51b815260206004820152601b60248201527f446f206e6f7420726561636820746172676574207175616c69747900000000006044820152606401610548565b6002546001600160a01b031663b7a3c04c610100610bf2610400806128b1565b610bfe906104006128b1565b610c099060086128b1565b610c1391906128e6565b8760800151610c2291906128e6565b60408089015190516001600160e01b031960e085901b16815260048101929092526001600160a01b03881660248301526044820152606401600060405180830381600087803b158015610c7457600080fd5b505af1158015610c88573d6000803e3d6000fd5b505050604080870151855160085460808a015184519182526020820152919350917ffedd8f58059af8fd54b4394c01ea8d07cac041988be3b5a822fb779f9c8de3a4910160405180910390a382516007556008805460019190600090610cef90849061296b565b90915550506004546008541015610d07575050505050565b7f000000000000000000000000000000000000000000000000000000000000000061084857610848836118bd565b6040810151600090610d895760405162461bcd60e51b815260206004820152601860248201527f4d696e65722049442063616e6e6f7420626520656d70747900000000000000006044820152606401610548565b60006040518060800160405280846040015181526020018460200151815260200184600001518152602001610dc185606001516118f6565b905290506000610dd08261195e565b90506000610de161040060406128b1565b610def6104006101006128b1565b610df991906128e6565b610e0661040060046128b1565b610e146104006101006128b1565b610e1e91906128e6565b610e2891906128e6565b8560a00151610e3791906129f7565b9050610e41612387565b610e496123a6565b610e588760e0015184866119d6565b92509050610100610e6c61040060046128b1565b610e7691906128e6565b8760a00151610e8591906128b1565b610ec282604051602001610e999190612a0b565b604051602081830303815290604052805190602001208960600151611bcc90919063ffffffff16565b610ecc919061296b565b876080015114610f1e5760405162461bcd60e51b815260206004820152601960248201527f496e636f727265637420726563616c6c20706f736974696f6e000000000000006044820152606401610548565b610f2d8760a001518584611cd2565b979650505050505050565b6000818152600a60205260409020546001600160a01b03163314610f9e5760405162461bcd60e51b815260206004820152601b60248201527f53656e64657220646f6573206e6f74206f776e206d696e6572496400000000006044820152606401610548565b6000818152600a602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519091339184917f9a26a8e7fd42c501b452c02016def8048e3ea28c2bf15127a9b5e2029d989bf191a45050565b60005460ff16156110565760405162461bcd60e51b815260206004820152602260248201527f496e697469616c697a61626c653a20616c726561647920696e697469616c697a604482015261195960f21b6064820152608401610548565b6000805460ff1916600117905561106f836000196128e6565b6009557f00000000000000000000000000000000000000000000000000000000000000001561109f576000196009555b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905550565b6110d66111df565b6001600160a01b03811661113b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610548565b6108838161180a565b600080600160009054906101000a90046001600160a01b03166001600160a01b031663b464b53e6040518163ffffffff1660e01b815260040160c0604051808303816000875af115801561119c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c0919061297e565b9050600754816000015111806111d95750600454600854105b91505090565b6000546001600160a01b036101009091041633146108b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610548565b61010061124e610400806128b1565b61125a906104006128b1565b6112659060086128b1565b61126f91906128e6565b825161127b91906129f7565b156112c85760405162461bcd60e51b815260206004820152601d60248201527f537461727420706f736974696f6e206973206e6f7420616c69676e65640000006044820152606401610548565b6020820151825182916112da9161296b565b11156113205760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e6765206f766572666c6f7760581b6044820152606401610548565b600061132b83611873565b61010061133a610400806128b1565b611346906104006128b1565b611352906104006128b1565b61135d9060086128b1565b61136791906128e6565b61137191906128b1565b905080836020015111156113bf5760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e676520746f6f206c6f6e6760581b6044820152606401610548565b60006113cb8383611f54565b9050808460200151101561141a5760405162461bcd60e51b8152602060048201526016602482015275135a5b9a5b99c81c985b99d9481d1bdbc81cda1bdc9d60521b6044820152606401610548565b83606001518460400151166001600160401b031660001461147d5760405162461bcd60e51b815260206004820152601a60248201527f4d61736b656420626974732073686f756c64206265207a65726f0000000000006044820152606401610548565b50505050565b61148b612387565b60408083015160c0840151608085015192516114bb93906020019283526020830191909152604082015260600190565b60408051808303601f19018152919052805160209091012060e08301515118815260015b60206114ee61040060046128b1565b6114f891906128e6565b8110156115915760e083015161150f60018361289e565b6080811061151f5761151f612a33565b602002015160405160200161153691815260200190565b604051602081830303815290604052805190602001208360e00151826080811061156257611562612a33565b60200201511882826080811061157a5761157a612a33565b602002015261158a60018261296b565b90506114df565b50919050565b6000805b60206115aa61040060046128b1565b6115b491906128e6565b8110156116025761010060208202840120808483608081106115d8576115d8612a33565b6020020181815250505060206101006115f191906128e6565b6115fb908261296b565b905061159b565b50600061161260206101006128e6565b90505b602061162461040060046128b1565b61162e91906128e6565b8110156117015760005b602061164761040060046128b1565b61165191906128e6565b8110156116f857600084826080811061166c5761166c612a33565b60200201519050600085611680858561296b565b6080811061169057611690612a33565b6020020151905081816040516020016116b3929190918252602082015260400190565b604051602081830303815290604052805190602001208684608081106116db576116db612a33565b6020020152506116f19050600183901b8261296b565b9050611638565b5060011b611615565b50815161170c612387565b9250600061010061172061040060046128b1565b61172a91906128e6565b856080015161173991906128e6565b905060005b856101000151518110156118005760008061175a6002856129f7565b60000361178a57849150876101000151838151811061177b5761177b612a33565b602002602001015190506117af565b87610100015183815181106117a1576117a1612a33565b602002602001015191508490505b60408051602081018490529081018290526060016040516020818303038152906040528051906020012094506002846117e891906128e6565b935050506001816117f9919061296b565b905061173e565b5090949350505050565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6108b86001600160f01b03611f6a565b606081015160009019815b6001600160401b038216156118ae57611898600183612a49565b90911690806118a681612a70565b91505061187e565b600160ff9091161b9392505050565b60008160200151436118cf919061289e565b905060006010600954901c905060006118eb828460035461200a565b905061147d81611f6a565b60008160000151826020015183604001518460600151604051602001611941949392919093845260208401929092526001600160401b03908116604084015216606082015260800190565b604051602081830303815290604052805190602001209050919050565b6119666123a6565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b6020808301919091528251908301516040840151606085015161086093859390929091608060016120b9565b6119de6123a6565b6119e6612387565b60005b84811015611a445760005b6040611a0361040060046128b1565b611a0d91906128e6565b811015611a3157611a1d85612178565b9450611a2a60018261296b565b90506119f4565b50611a3d60018261296b565b90506119e9565b5060005b6020611a5761040060046128b1565b611a6191906128e6565b811015611b0157611a7184612178565b9350858160808110611a8557611a85612a33565b6020020151845118828260808110611a9f57611a9f612a33565b602002015285611ab082600161296b565b60808110611ac057611ac0612a33565b602002015184600160200201511882611ada83600161296b565b60808110611aea57611aea612a33565b6020020152611afa60028261296b565b9050611a48565b506000611b0f85600161296b565b90505b611b1f61040060406128b1565b611b2d6104006101006128b1565b611b3791906128e6565b611b4461040060046128b1565b611b526104006101006128b1565b611b5c91906128e6565b611b6691906128e6565b811015611bc05760005b6040611b7f61040060046128b1565b611b8991906128e6565b811015611bad57611b9985612178565b9450611ba660018261296b565b9050611b70565b50611bb960018261296b565b9050611b12565b50829150935093915050565b600080610100611bde610400826128b1565b611be891906128e6565b8460200151611bf791906128e6565b611c0190846129f7565b60408501516060860151602087015192935083161790610100611c26610400826128b1565b611c3091906128e6565b611c43906001600160401b0384166128b1565b1115611c915760405162461bcd60e51b815260206004820152601c60248201527f526563616c6c20706f736974696f6e206f7574206f6620626f756e64000000006044820152606401610548565b610100611ca0610400826128b1565b611caa91906128e6565b611cbd906001600160401b0383166128b1565b8551611cc9919061296b565b95945050505050565b6000611cdc6123a6565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b602080830191909152845190850151611d4291839188919060006080816120b9565b905060005b60046020611d57610400836128b1565b611d6191906128e6565b611d6b919061289e565b811015611e1c576000816004016020026080019050611e0683868460808110611d9657611d96612a33565b602002015187611da786600161296b565b60808110611db757611db7612a33565b602002015188611dc887600261296b565b60808110611dd857611dd8612a33565b602002015189611de988600361296b565b60808110611df957611df9612a33565b60200201518660006120b9565b9250611e15905060048261296b565b9050611d47565b50611f4a818460046020611e32610400836128b1565b611e3c91906128e6565b611e46919061289e565b60808110611e5657611e56612a33565b602002015185600360206104006004611e6f91906128b1565b611e7991906128e6565b611e83919061289e565b60808110611e9357611e93612a33565b602002015186600260206104006004611eac91906128b1565b611eb691906128e6565b611ec0919061289e565b60808110611ed057611ed0612a33565b602002015187600160206104006004611ee991906128b1565b611ef391906128e6565b611efd919061289e565b60808110611f0d57611f0d612a33565b602002015160206104006004611f2391906128b1565b611f2d91906128e6565b611f389060206128b1565b611f4390608061296b565b60016120b9565b5195945050505050565b6000818310611f635781610892565b5090919050565b60095460065460109190911c9060008184611f8660018361289e565b611f9090866128b1565b611f9a919061296b565b611fa491906128e6565b9050611fb18360026128b1565b811115611fc657611fc38360026128b1565b90505b611fd16002846128e6565b811015611fe657611fe36002846128e6565b90505b6001600160f01b03811115611fff57506001600160f01b035b60101b600955505050565b60008080600019858709858702925082811083820303915050806000036120445783828161203a5761203a6128d0565b0492505050610892565b80841161205057600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6120c16123a6565b600c60006120ce856121e5565b8a516020808d0151835184830151604080516001600160e01b031960e08b901b168187015260248101969096526044860193909352606485018f9052608485018e905260a485018d905260c485018c90526001600160c01b031991821660e48601521660ec84015287151560f81b60f4840152805160d58185038101825260f5909401825293945091869184016009600019fa61216a57600080fd5b505050979650505050505050565b6121806123a6565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b602080830191909152825190830151610860918391600080604060016120b9565b6121ed6123a6565b6201000082101561223157600882811c66ffffffffffffff169083901b67ffffffffffffff00161760f01b5b6001600160c01b031916815260006020820152919050565b64010000000082101561227157600882811b63ff00ff001662ff00ff9184901c9190911617601081811b91901c1760e01b6001600160e01b031916612219565b6801000000000000000082101561228b5761221982612321565b600160801b8210156122db576001600160401b038216604083901c6122af82612321565b6001600160c01b03191683526122c481612321565b6001600160c01b03191660208401525061231c9050565b60405162461bcd60e51b8152602060048201526016602482015275626c616b65326220696e70757420746f6f206c6f6e6760501b6044820152606401610548565b919050565b65ff000000ff00600882811b91821664ff000000ff9390911c92831617601090811b67ff000000ff0000009290921666ff000000ff0000939093169290921790911c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760c01b90565b6040518061100001604052806080906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461231c57600080fd5b80356001600160401b038116811461231c57600080fd5b6000806040838503121561240557600080fd5b61240e836123c4565b915061241c602084016123db565b90509250929050565b60006020828403121561243757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156124775761247761243e565b60405290565b60405160c081016001600160401b03811182821017156124775761247761243e565b6000608082840312156124b157600080fd5b604051608081018181106001600160401b03821117156124d3576124d361243e565b806040525080915082358152602083013560208201526124f5604084016123db565b6040820152612506606084016123db565b60608201525092915050565b600082601f83011261252357600080fd5b6040516110008082018281106001600160401b03821117156125475761254761243e565b6040528301818582111561255a57600080fd5b845b8281101561257457803582526020918201910161255c565b509195945050505050565b600082601f83011261259057600080fd5b813560206001600160401b03808311156125ac576125ac61243e565b8260051b604051601f19603f830116810181811084821117156125d1576125d161243e565b6040529384528581018301938381019250878511156125ef57600080fd5b83870191505b84821015610f2d578135835291830191908301906125f5565b6000611160828403121561262157600080fd5b612629612454565b9050813581526020820135602082015260408201356040820152612650836060840161249f565b606082015260e082013560808201526101008083013560a083015261012083013560c0830152612684846101408501612512565b60e08301526111408301356001600160401b038111156126a357600080fd5b6126af8582860161257f565b82840152505092915050565b60008082840360e08112156126cf57600080fd5b83356001600160401b038111156126e557600080fd5b6126f18682870161260e565b93505060c0601f198201121561270657600080fd5b5061270f61247d565b6020840135815260408401356020820152606084013560408201526080840135606082015260a0840135608082015260c084013560a0820152809150509250929050565b60006020828403121561276557600080fd5b81356001600160401b0381111561277b57600080fd5b6127878482850161260e565b949350505050565b6110008101818360005b60808110156127b8578151835260209283019290910190600101612799565b50505092915050565b60008061102083850312156127d557600080fd5b82356001600160401b038111156127eb57600080fd5b6127f78582860161260e565b92505061241c8460208501612512565b6000806040838503121561281a57600080fd5b612823836123c4565b946020939093013593505050565b60008060006060848603121561284657600080fd5b83359250612856602085016123c4565b9150612864604085016123c4565b90509250925092565b60006020828403121561287f57600080fd5b610892826123c4565b634e487b7160e01b600052601160045260246000fd5b8181038181111561086057610860612888565b60008160001904831182151516156128cb576128cb612888565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826128f5576128f56128d0565b500490565b80516001600160801b038116811461231c57600080fd5b60006040828403121561292357600080fd5b604051604081018181106001600160401b03821117156129455761294561243e565b604052612951836128fa565b815261295f602084016128fa565b60208201529392505050565b8082018082111561086057610860612888565b600060c0828403121561299057600080fd5b60405160c081018181106001600160401b03821117156129b2576129b261243e565b8060405250825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b600082612a0657612a066128d0565b500690565b60408101818360005b60028110156127b8578151835260209283019290910190600101612a14565b634e487b7160e01b600052603260045260246000fd5b6001600160401b03828116828216039080821115612a6957612a69612888565b5092915050565b600060ff821660ff8103612a8657612a86612888565b6001019291505056fea2646970667358221220486bb9117f7c39fec3c79f64489850bca4287f500fab1577bdbcda1f53fec85f64736f6c63430008100033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80637bba7d611161010f578063b0628ee0116100a2578063dddc61a811610071578063dddc61a814610458578063e1498cf914610461578063f2fde38b14610474578063ffbc9bd01461048757600080fd5b8063b0628ee0146103fb578063b4988fd01461040e578063b51e039714610421578063b776a5121461044f57600080fd5b8063a8279182116100de578063a8279182146103a5578063adaa7a0f146103ae578063ae722e82146103d5578063aed75224146103e857600080fd5b80637bba7d61146103385780637eca56881461035f57806382975fe7146103685780638da5cb5b1461038f57600080fd5b806339cd53ee116101875780635bdca855116101565780635bdca855146102f75780636e9bb60b1461030a578063704d3c961461031d578063715018a61461033057600080fd5b806339cd53ee146102925780633baebb75146102bb57806348f61441146102ce57806359e7b5be146102d757600080fd5b8063228cb733116101c3578063228cb7331461023457806331223ba71461025f578063331f3b9c14610276578063343aad821461027f57600080fd5b8063047c13f5146101ea578063158ef93e146101ff5780631600c62414610221575b600080fd5b6101fd6101f83660046123f2565b61048f565b005b60005461020c9060ff1681565b60405190151581526020015b60405180910390f35b6101fd61022f366004612425565b6105ab565b600254610247906001600160a01b031681565b6040516001600160a01b039091168152602001610218565b61026860075481565b604051908152602001610218565b61026860035481565b600154610247906001600160a01b031681565b6102476102a0366004612425565b600a602052600090815260409020546001600160a01b031681565b6101fd6102c93660046126bb565b6105b8565b61026860095481565b6102ea6102e5366004612753565b61084f565b604051610218919061278f565b6101fd610305366004612425565b610866565b6102686103183660046127c1565b610886565b6101fd61032b366004612425565b610899565b6101fd6108a6565b61020c7f000000000000000000000000000000000000000000000000000000000000000081565b61026860055481565b61020c7f000000000000000000000000000000000000000000000000000000000000000081565b60005461010090046001600160a01b0316610247565b61026860085481565b61020c7f000000000000000000000000000000000000000000000000000000000000000081565b6101fd6103e3366004612753565b6108ba565b6102686103f6366004612753565b610d35565b6101fd610409366004612807565b610f38565b6101fd61041c366004612831565b610ff8565b6101fd61042f366004612425565b6000908152600a6020526040902080546001600160a01b03191633179055565b61026860045481565b61026860065481565b6101fd61046f366004612425565b600955565b6101fd61048236600461286d565b6110ce565b61020c611144565b600061049c60014361289e565b60408051914060208301526bffffffffffffffffffffffff193360601b16908201526001600160c01b031960c084901b166054820152605c0160408051601f1981840301815291815281516020928301206000818152600a9093529120549091506001600160a01b0316156105515760405162461bcd60e51b8152602060048201526016602482015275135a5b995c9259081a185cc81c9959da5cdd195c995960521b60448201526064015b60405180910390fd5b6000818152600a602052604080822080546001600160a01b0319166001600160a01b0387169081179091559051909183917fbfeb006f16aca8eb3d9953cf44db6b11b6f3041a313875dfa18f2e9d71bd309e9190a3505050565b6105b36111df565b600355565b815160a08201511461060c5760405162461bcd60e51b815260206004820152601a60248201527f496e636f6e73697374656e74206d696e696e67206469676573740000000000006044820152606401610548565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708160a001510361067f5760405162461bcd60e51b815260206004820152601960248201527f456d707479206469676573742063616e206e6f74206d696e65000000000000006044820152606401610548565b600454600854106106d25760405162461bcd60e51b815260206004820152601c60248201527f45706f63682068617320656e6f756768207375626d697373696f6e73000000006044820152606401610548565b60006101006106e3610400826128b1565b6106ed91906128e6565b6101006106fc610400826128b1565b61070691906128e6565b836060015161071591906128e6565b61071f91906128b1565b6060840151909150610731908261123f565b60015460c0840151604051630fab20e160e31b815260048101919091526000916001600160a01b031690637d590708906024016040805180830381865afa158015610780573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a49190612911565b905060006101006107b861040060046128b1565b6107c291906128e6565b85608001516107d1919061296b565b90508082600001516001600160801b03161080156107fc57508082602001516001600160801b031610155b6108485760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964207365616c656420636f6e74657874206469676573740000006044820152606401610548565b5050505050565b610857612387565b61086082611483565b92915050565b61086e6111df565b60058190556007546000036108835760048190555b50565b60006108928383611597565b9392505050565b6108a16111df565b600655565b6108ae6111df565b6108b8600061180a565b565b60408101516109045760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b6044820152606401610548565b6040808201516000908152600a60205220546001600160a01b03168061096c5760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f74207265676973746572656400000000006044820152606401610548565b60015460408051635a325a9f60e11b815290516000926001600160a01b03169163b464b53e9160048083019260c0929190829003018187875af11580156109b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109db919061297e565b905060075481600001511015610a415760405162461bcd60e51b815260206004820152602560248201527f496e7465726e616c206572726f723a2065706f6368206e756d62657220646563604482015264726561736560d81b6064820152608401610548565b6007548151118015610a5557506000600754115b15610a7a576004546008541015610a6e57610a6e611863565b60006008556005546004555b610a8483826105b8565b610a8c612387565b7f000000000000000000000000000000000000000000000000000000000000000015610ac257610abb84611483565b9050610ac9565b5060e08301515b7f000000000000000000000000000000000000000000000000000000000000000015610b52576000610afb8583611597565b905082604001518114610b505760405162461bcd60e51b815260206004820152601860248201527f496e636f6e73697374656e74206d65726b6c6520726f6f7400000000000000006044820152606401610548565b505b610b5a612387565b90506000610b6785610d35565b9050610b768560600151611873565b600954610b8391906128e6565b811115610bd25760405162461bcd60e51b815260206004820152601b60248201527f446f206e6f7420726561636820746172676574207175616c69747900000000006044820152606401610548565b6002546001600160a01b031663b7a3c04c610100610bf2610400806128b1565b610bfe906104006128b1565b610c099060086128b1565b610c1391906128e6565b8760800151610c2291906128e6565b60408089015190516001600160e01b031960e085901b16815260048101929092526001600160a01b03881660248301526044820152606401600060405180830381600087803b158015610c7457600080fd5b505af1158015610c88573d6000803e3d6000fd5b505050604080870151855160085460808a015184519182526020820152919350917ffedd8f58059af8fd54b4394c01ea8d07cac041988be3b5a822fb779f9c8de3a4910160405180910390a382516007556008805460019190600090610cef90849061296b565b90915550506004546008541015610d07575050505050565b7f000000000000000000000000000000000000000000000000000000000000000061084857610848836118bd565b6040810151600090610d895760405162461bcd60e51b815260206004820152601860248201527f4d696e65722049442063616e6e6f7420626520656d70747900000000000000006044820152606401610548565b60006040518060800160405280846040015181526020018460200151815260200184600001518152602001610dc185606001516118f6565b905290506000610dd08261195e565b90506000610de161040060406128b1565b610def6104006101006128b1565b610df991906128e6565b610e0661040060046128b1565b610e146104006101006128b1565b610e1e91906128e6565b610e2891906128e6565b8560a00151610e3791906129f7565b9050610e41612387565b610e496123a6565b610e588760e0015184866119d6565b92509050610100610e6c61040060046128b1565b610e7691906128e6565b8760a00151610e8591906128b1565b610ec282604051602001610e999190612a0b565b604051602081830303815290604052805190602001208960600151611bcc90919063ffffffff16565b610ecc919061296b565b876080015114610f1e5760405162461bcd60e51b815260206004820152601960248201527f496e636f727265637420726563616c6c20706f736974696f6e000000000000006044820152606401610548565b610f2d8760a001518584611cd2565b979650505050505050565b6000818152600a60205260409020546001600160a01b03163314610f9e5760405162461bcd60e51b815260206004820152601b60248201527f53656e64657220646f6573206e6f74206f776e206d696e6572496400000000006044820152606401610548565b6000818152600a602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519091339184917f9a26a8e7fd42c501b452c02016def8048e3ea28c2bf15127a9b5e2029d989bf191a45050565b60005460ff16156110565760405162461bcd60e51b815260206004820152602260248201527f496e697469616c697a61626c653a20616c726561647920696e697469616c697a604482015261195960f21b6064820152608401610548565b6000805460ff1916600117905561106f836000196128e6565b6009557f00000000000000000000000000000000000000000000000000000000000000001561109f576000196009555b600180546001600160a01b039384166001600160a01b0319918216179091556002805492909316911617905550565b6110d66111df565b6001600160a01b03811661113b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610548565b6108838161180a565b600080600160009054906101000a90046001600160a01b03166001600160a01b031663b464b53e6040518163ffffffff1660e01b815260040160c0604051808303816000875af115801561119c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c0919061297e565b9050600754816000015111806111d95750600454600854105b91505090565b6000546001600160a01b036101009091041633146108b85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610548565b61010061124e610400806128b1565b61125a906104006128b1565b6112659060086128b1565b61126f91906128e6565b825161127b91906129f7565b156112c85760405162461bcd60e51b815260206004820152601d60248201527f537461727420706f736974696f6e206973206e6f7420616c69676e65640000006044820152606401610548565b6020820151825182916112da9161296b565b11156113205760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e6765206f766572666c6f7760581b6044820152606401610548565b600061132b83611873565b61010061133a610400806128b1565b611346906104006128b1565b611352906104006128b1565b61135d9060086128b1565b61136791906128e6565b61137191906128b1565b905080836020015111156113bf5760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e676520746f6f206c6f6e6760581b6044820152606401610548565b60006113cb8383611f54565b9050808460200151101561141a5760405162461bcd60e51b8152602060048201526016602482015275135a5b9a5b99c81c985b99d9481d1bdbc81cda1bdc9d60521b6044820152606401610548565b83606001518460400151166001600160401b031660001461147d5760405162461bcd60e51b815260206004820152601a60248201527f4d61736b656420626974732073686f756c64206265207a65726f0000000000006044820152606401610548565b50505050565b61148b612387565b60408083015160c0840151608085015192516114bb93906020019283526020830191909152604082015260600190565b60408051808303601f19018152919052805160209091012060e08301515118815260015b60206114ee61040060046128b1565b6114f891906128e6565b8110156115915760e083015161150f60018361289e565b6080811061151f5761151f612a33565b602002015160405160200161153691815260200190565b604051602081830303815290604052805190602001208360e00151826080811061156257611562612a33565b60200201511882826080811061157a5761157a612a33565b602002015261158a60018261296b565b90506114df565b50919050565b6000805b60206115aa61040060046128b1565b6115b491906128e6565b8110156116025761010060208202840120808483608081106115d8576115d8612a33565b6020020181815250505060206101006115f191906128e6565b6115fb908261296b565b905061159b565b50600061161260206101006128e6565b90505b602061162461040060046128b1565b61162e91906128e6565b8110156117015760005b602061164761040060046128b1565b61165191906128e6565b8110156116f857600084826080811061166c5761166c612a33565b60200201519050600085611680858561296b565b6080811061169057611690612a33565b6020020151905081816040516020016116b3929190918252602082015260400190565b604051602081830303815290604052805190602001208684608081106116db576116db612a33565b6020020152506116f19050600183901b8261296b565b9050611638565b5060011b611615565b50815161170c612387565b9250600061010061172061040060046128b1565b61172a91906128e6565b856080015161173991906128e6565b905060005b856101000151518110156118005760008061175a6002856129f7565b60000361178a57849150876101000151838151811061177b5761177b612a33565b602002602001015190506117af565b87610100015183815181106117a1576117a1612a33565b602002602001015191508490505b60408051602081018490529081018290526060016040516020818303038152906040528051906020012094506002846117e891906128e6565b935050506001816117f9919061296b565b905061173e565b5090949350505050565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b6108b86001600160f01b03611f6a565b606081015160009019815b6001600160401b038216156118ae57611898600183612a49565b90911690806118a681612a70565b91505061187e565b600160ff9091161b9392505050565b60008160200151436118cf919061289e565b905060006010600954901c905060006118eb828460035461200a565b905061147d81611f6a565b60008160000151826020015183604001518460600151604051602001611941949392919093845260208401929092526001600160401b03908116604084015216606082015260800190565b604051602081830303815290604052805190602001209050919050565b6119666123a6565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b6020808301919091528251908301516040840151606085015161086093859390929091608060016120b9565b6119de6123a6565b6119e6612387565b60005b84811015611a445760005b6040611a0361040060046128b1565b611a0d91906128e6565b811015611a3157611a1d85612178565b9450611a2a60018261296b565b90506119f4565b50611a3d60018261296b565b90506119e9565b5060005b6020611a5761040060046128b1565b611a6191906128e6565b811015611b0157611a7184612178565b9350858160808110611a8557611a85612a33565b6020020151845118828260808110611a9f57611a9f612a33565b602002015285611ab082600161296b565b60808110611ac057611ac0612a33565b602002015184600160200201511882611ada83600161296b565b60808110611aea57611aea612a33565b6020020152611afa60028261296b565b9050611a48565b506000611b0f85600161296b565b90505b611b1f61040060406128b1565b611b2d6104006101006128b1565b611b3791906128e6565b611b4461040060046128b1565b611b526104006101006128b1565b611b5c91906128e6565b611b6691906128e6565b811015611bc05760005b6040611b7f61040060046128b1565b611b8991906128e6565b811015611bad57611b9985612178565b9450611ba660018261296b565b9050611b70565b50611bb960018261296b565b9050611b12565b50829150935093915050565b600080610100611bde610400826128b1565b611be891906128e6565b8460200151611bf791906128e6565b611c0190846129f7565b60408501516060860151602087015192935083161790610100611c26610400826128b1565b611c3091906128e6565b611c43906001600160401b0384166128b1565b1115611c915760405162461bcd60e51b815260206004820152601c60248201527f526563616c6c20706f736974696f6e206f7574206f6620626f756e64000000006044820152606401610548565b610100611ca0610400826128b1565b611caa91906128e6565b611cbd906001600160401b0383166128b1565b8551611cc9919061296b565b95945050505050565b6000611cdc6123a6565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b602080830191909152845190850151611d4291839188919060006080816120b9565b905060005b60046020611d57610400836128b1565b611d6191906128e6565b611d6b919061289e565b811015611e1c576000816004016020026080019050611e0683868460808110611d9657611d96612a33565b602002015187611da786600161296b565b60808110611db757611db7612a33565b602002015188611dc887600261296b565b60808110611dd857611dd8612a33565b602002015189611de988600361296b565b60808110611df957611df9612a33565b60200201518660006120b9565b9250611e15905060048261296b565b9050611d47565b50611f4a818460046020611e32610400836128b1565b611e3c91906128e6565b611e46919061289e565b60808110611e5657611e56612a33565b602002015185600360206104006004611e6f91906128b1565b611e7991906128e6565b611e83919061289e565b60808110611e9357611e93612a33565b602002015186600260206104006004611eac91906128b1565b611eb691906128e6565b611ec0919061289e565b60808110611ed057611ed0612a33565b602002015187600160206104006004611ee991906128b1565b611ef391906128e6565b611efd919061289e565b60808110611f0d57611f0d612a33565b602002015160206104006004611f2391906128b1565b611f2d91906128e6565b611f389060206128b1565b611f4390608061296b565b60016120b9565b5195945050505050565b6000818310611f635781610892565b5090919050565b60095460065460109190911c9060008184611f8660018361289e565b611f9090866128b1565b611f9a919061296b565b611fa491906128e6565b9050611fb18360026128b1565b811115611fc657611fc38360026128b1565b90505b611fd16002846128e6565b811015611fe657611fe36002846128e6565b90505b6001600160f01b03811115611fff57506001600160f01b035b60101b600955505050565b60008080600019858709858702925082811083820303915050806000036120445783828161203a5761203a6128d0565b0492505050610892565b80841161205057600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6120c16123a6565b600c60006120ce856121e5565b8a516020808d0151835184830151604080516001600160e01b031960e08b901b168187015260248101969096526044860193909352606485018f9052608485018e905260a485018d905260c485018c90526001600160c01b031991821660e48601521660ec84015287151560f81b60f4840152805160d58185038101825260f5909401825293945091869184016009600019fa61216a57600080fd5b505050979650505050505050565b6121806123a6565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b602080830191909152825190830151610860918391600080604060016120b9565b6121ed6123a6565b6201000082101561223157600882811c66ffffffffffffff169083901b67ffffffffffffff00161760f01b5b6001600160c01b031916815260006020820152919050565b64010000000082101561227157600882811b63ff00ff001662ff00ff9184901c9190911617601081811b91901c1760e01b6001600160e01b031916612219565b6801000000000000000082101561228b5761221982612321565b600160801b8210156122db576001600160401b038216604083901c6122af82612321565b6001600160c01b03191683526122c481612321565b6001600160c01b03191660208401525061231c9050565b60405162461bcd60e51b8152602060048201526016602482015275626c616b65326220696e70757420746f6f206c6f6e6760501b6044820152606401610548565b919050565b65ff000000ff00600882811b91821664ff000000ff9390911c92831617601090811b67ff000000ff0000009290921666ff000000ff0000939093169290921790911c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760c01b90565b6040518061100001604052806080906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b80356001600160a01b038116811461231c57600080fd5b80356001600160401b038116811461231c57600080fd5b6000806040838503121561240557600080fd5b61240e836123c4565b915061241c602084016123db565b90509250929050565b60006020828403121561243757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156124775761247761243e565b60405290565b60405160c081016001600160401b03811182821017156124775761247761243e565b6000608082840312156124b157600080fd5b604051608081018181106001600160401b03821117156124d3576124d361243e565b806040525080915082358152602083013560208201526124f5604084016123db565b6040820152612506606084016123db565b60608201525092915050565b600082601f83011261252357600080fd5b6040516110008082018281106001600160401b03821117156125475761254761243e565b6040528301818582111561255a57600080fd5b845b8281101561257457803582526020918201910161255c565b509195945050505050565b600082601f83011261259057600080fd5b813560206001600160401b03808311156125ac576125ac61243e565b8260051b604051601f19603f830116810181811084821117156125d1576125d161243e565b6040529384528581018301938381019250878511156125ef57600080fd5b83870191505b84821015610f2d578135835291830191908301906125f5565b6000611160828403121561262157600080fd5b612629612454565b9050813581526020820135602082015260408201356040820152612650836060840161249f565b606082015260e082013560808201526101008083013560a083015261012083013560c0830152612684846101408501612512565b60e08301526111408301356001600160401b038111156126a357600080fd5b6126af8582860161257f565b82840152505092915050565b60008082840360e08112156126cf57600080fd5b83356001600160401b038111156126e557600080fd5b6126f18682870161260e565b93505060c0601f198201121561270657600080fd5b5061270f61247d565b6020840135815260408401356020820152606084013560408201526080840135606082015260a0840135608082015260c084013560a0820152809150509250929050565b60006020828403121561276557600080fd5b81356001600160401b0381111561277b57600080fd5b6127878482850161260e565b949350505050565b6110008101818360005b60808110156127b8578151835260209283019290910190600101612799565b50505092915050565b60008061102083850312156127d557600080fd5b82356001600160401b038111156127eb57600080fd5b6127f78582860161260e565b92505061241c8460208501612512565b6000806040838503121561281a57600080fd5b612823836123c4565b946020939093013593505050565b60008060006060848603121561284657600080fd5b83359250612856602085016123c4565b9150612864604085016123c4565b90509250925092565b60006020828403121561287f57600080fd5b610892826123c4565b634e487b7160e01b600052601160045260246000fd5b8181038181111561086057610860612888565b60008160001904831182151516156128cb576128cb612888565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826128f5576128f56128d0565b500490565b80516001600160801b038116811461231c57600080fd5b60006040828403121561292357600080fd5b604051604081018181106001600160401b03821117156129455761294561243e565b604052612951836128fa565b815261295f602084016128fa565b60208201529392505050565b8082018082111561086057610860612888565b600060c0828403121561299057600080fd5b60405160c081018181106001600160401b03821117156129b2576129b261243e565b8060405250825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b600082612a0657612a066128d0565b500690565b60408101818360005b60028110156127b8578151835260209283019290910190600101612a14565b634e487b7160e01b600052603260045260246000fd5b6001600160401b03828116828216039080821115612a6957612a69612888565b5092915050565b600060ff821660ff8103612a8657612a86612888565b6001019291505056fea2646970667358221220486bb9117f7c39fec3c79f64489850bca4287f500fab1577bdbcda1f53fec85f64736f6c63430008100033",
"linkReferences": {},
"deployedLinkReferences": {}
}