@mean-finance/uniswap-v3-oracle
Version:
428 lines • 51 kB
JSON
{
"address": "0xB210CE856631EeEB767eFa666EC7C1C57738d438",
"abi": [
{
"inputs": [
{
"internalType": "contract IUniswapV3Factory",
"name": "_UNISWAP_V3_FACTORY",
"type": "address"
},
{
"internalType": "uint8",
"name": "_CARDINALITY_PER_MINUTE",
"type": "uint8"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "CARDINALITY_PER_MINUTE",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UNISWAP_V3_FACTORY",
"outputs": [
{
"internalType": "contract IUniswapV3Factory",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint24",
"name": "_feeTier",
"type": "uint24"
}
],
"name": "addNewFeeTier",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_tokenA",
"type": "address"
},
{
"internalType": "address",
"name": "_tokenB",
"type": "address"
}
],
"name": "getAllPoolsForPair",
"outputs": [
{
"internalType": "address[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_tokenA",
"type": "address"
},
{
"internalType": "address",
"name": "_tokenB",
"type": "address"
}
],
"name": "isPairSupported",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_tokenA",
"type": "address"
},
{
"internalType": "address",
"name": "_tokenB",
"type": "address"
},
{
"internalType": "uint16",
"name": "_cardinality",
"type": "uint16"
}
],
"name": "prepareAllAvailablePoolsWithCardinality",
"outputs": [
{
"internalType": "address[]",
"name": "_preparedPools",
"type": "address[]"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_tokenA",
"type": "address"
},
{
"internalType": "address",
"name": "_tokenB",
"type": "address"
},
{
"internalType": "uint32",
"name": "_period",
"type": "uint32"
}
],
"name": "prepareAllAvailablePoolsWithTimePeriod",
"outputs": [
{
"internalType": "address[]",
"name": "_preparedPools",
"type": "address[]"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_tokenA",
"type": "address"
},
{
"internalType": "address",
"name": "_tokenB",
"type": "address"
},
{
"internalType": "uint24[]",
"name": "_feeTiers",
"type": "uint24[]"
},
{
"internalType": "uint16",
"name": "_cardinality",
"type": "uint16"
}
],
"name": "prepareSpecificFeeTiersWithCardinality",
"outputs": [
{
"internalType": "address[]",
"name": "_preparedPools",
"type": "address[]"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_tokenA",
"type": "address"
},
{
"internalType": "address",
"name": "_tokenB",
"type": "address"
},
{
"internalType": "uint24[]",
"name": "_feeTiers",
"type": "uint24[]"
},
{
"internalType": "uint32",
"name": "_period",
"type": "uint32"
}
],
"name": "prepareSpecificFeeTiersWithTimePeriod",
"outputs": [
{
"internalType": "address[]",
"name": "_preparedPools",
"type": "address[]"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_pools",
"type": "address[]"
},
{
"internalType": "uint16",
"name": "_cardinality",
"type": "uint16"
}
],
"name": "prepareSpecificPoolsWithCardinality",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_pools",
"type": "address[]"
},
{
"internalType": "uint32",
"name": "_period",
"type": "uint32"
}
],
"name": "prepareSpecificPoolsWithTimePeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint128",
"name": "_baseAmount",
"type": "uint128"
},
{
"internalType": "address",
"name": "_baseToken",
"type": "address"
},
{
"internalType": "address",
"name": "_quoteToken",
"type": "address"
},
{
"internalType": "uint32",
"name": "_period",
"type": "uint32"
}
],
"name": "quoteAllAvailablePoolsWithTimePeriod",
"outputs": [
{
"internalType": "uint256",
"name": "_quoteAmount",
"type": "uint256"
},
{
"internalType": "address[]",
"name": "_queriedPools",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint128",
"name": "_baseAmount",
"type": "uint128"
},
{
"internalType": "address",
"name": "_baseToken",
"type": "address"
},
{
"internalType": "address",
"name": "_quoteToken",
"type": "address"
},
{
"internalType": "uint24[]",
"name": "_feeTiers",
"type": "uint24[]"
},
{
"internalType": "uint32",
"name": "_period",
"type": "uint32"
}
],
"name": "quoteSpecificFeeTiersWithTimePeriod",
"outputs": [
{
"internalType": "uint256",
"name": "_quoteAmount",
"type": "uint256"
},
{
"internalType": "address[]",
"name": "_queriedPools",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint128",
"name": "_baseAmount",
"type": "uint128"
},
{
"internalType": "address",
"name": "_baseToken",
"type": "address"
},
{
"internalType": "address",
"name": "_quoteToken",
"type": "address"
},
{
"internalType": "address[]",
"name": "_pools",
"type": "address[]"
},
{
"internalType": "uint32",
"name": "_period",
"type": "uint32"
}
],
"name": "quoteSpecificPoolsWithTimePeriod",
"outputs": [
{
"internalType": "uint256",
"name": "_quoteAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "supportedFeeTiers",
"outputs": [
{
"internalType": "uint24[]",
"name": "",
"type": "uint24[]"
}
],
"stateMutability": "view",
"type": "function"
}
],
"transactionHash": "0x9d19b041161bd2c21e6d95a4f505c79ae38f68fb414c8ed64563e3f2e67f10ed",
"receipt": {
"to": "0xbb681d77506df5CA21D2214ab3923b4C056aa3e2",
"from": "0xe48a5173AdE669651120cb5E99e6fE140d4d73da",
"contractAddress": null,
"transactionIndex": 78,
"gasUsed": "2312170",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"blockHash": "0xab9df11a1f63fccd759429799822090a577aa4110cbaf5792bee373e429fcfe4",
"transactionHash": "0x9d19b041161bd2c21e6d95a4f505c79ae38f68fb414c8ed64563e3f2e67f10ed",
"logs": [],
"events": [],
"blockNumber": 7072823,
"cumulativeGasUsed": "5171093",
"status": 1,
"byzantium": true
},
"args": [
"0x1F98431c8aD98523631AE4a59f267346ea31F984",
4
],
"numDeployments": 1,
"bytecode": "0x60c06040523480156200001157600080fd5b506040516200289638038062002896833981016040819052620000349162000127565b60609190911b6001600160601b03191660805260f81b7fff000000000000000000000000000000000000000000000000000000000000001660a05260008054600180820183558280527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563600a8084048201805462ffffff95839006600390810261010090810a888102199093166101f4909302929092179092558654808601885583810485018054918590068402830a80890219909216610bb8909202919091179055865494850190965581840490920180549190930690910290930a9182021990921661271090910217905562000173565b600080604083850312156200013a578182fd5b82516001600160a01b038116811462000151578283fd5b602084015190925060ff8116811462000168578182fd5b809150509250929050565b60805160601c60a05160f81c6126e5620001b16000398061070e5280610be15250806103f4528061067c52806108695280610c6a52506126e56000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806355eba79211610097578063bc4389f711610066578063bc4389f71461020d578063d8045eca14610222578063e85dd38314610235578063f73e5aab14610248576100f5565b806355eba792146101b257806362d99119146101c55780639446994a146101d8578063b7604e53146101f8576100f5565b80631c49cbb5116100d35780631c49cbb51461016457806333e4c28e14610177578063354b1a7d1461018a57806343dfc58d1461019f576100f5565b80630757bc81146100fa57806307f7ca9f146101245780631b2a933c14610144575b600080fd5b61010d610108366004612436565b61025d565b60405161011b929190612688565b60405180910390f35b61013761013236600461235b565b610286565b60405161011b919061267f565b61015761015236600461222d565b6102d4565b60405161011b91906124fc565b61015761017236600461226f565b6102f3565b610157610185366004612151565b61030b565b61019d6101983660046122f1565b6103a4565b005b61019d6101ad366004612489565b6103b7565b61019d6101c03660046122a8565b610599565b6101576101d336600461211f565b6105d7565b6101eb6101e636600461211f565b610667565b60405161011b9190612558565b61020061070c565b60405161011b91906126a1565b610215610730565b60405161011b919061250f565b61010d6102303660046123de565b6107b2565b6101576102433660046121c5565b61084b565b610250610867565b60405161011b9190612563565b6000606061026c85858561088b565b905061027b86868684876109aa565b915094509492505050565b60006102c98787878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506109aa915050565b979650505050505050565b60606102e084846105d7565b90506102ec8183610b3e565b9392505050565b6060610303848461015285610bd4565b949350505050565b606061034b8686868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610c0f92505050565b80519091508314610391576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610388906125f2565b60405180910390fd5b61039b8183610b3e565b95945050505050565b6103b283836101c084610bd4565b505050565b6040517f22afcccb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906322afcccb9061042990849060040161266f565b60206040518083038186803b15801561044157600080fd5b505afa158015610455573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610479919061233a565b60020b6104b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038890612629565b60005b60005481101561053c578162ffffff16600082815481106104d257fe5b90600052602060002090600a91828204019190066003029054906101000a900462ffffff1662ffffff161415610534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038890612584565b6001016104b5565b5060008054600181018255908052600a8082047f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301805462ffffff948516600393909406929092026101000a928302939092021916919091179055565b6103b2838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250859250610b3e915050565b606061065e8383600080548060200260200160405190810160405280929190818152602001828054801561065457602002820191906000526020600020906000905b82829054906101000a900462ffffff1662ffffff16815260200190600301906020826002010492830192600103820291508084116106195790505b5050505050610c0f565b90505b92915050565b60008054815b818110156107015760006106dc7f00000000000000000000000000000000000000000000000000000000000000006106d78888600087815481106106ad57fe5b90600052602060002090600a91828204019190066003029054906101000a900462ffffff16610d21565b610d9e565b90506106e781610ed4565b156106f85760019350505050610661565b5060010161066d565b506000949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606060008054806020026020016040519081016040528092919081815260200182805480156107a857602002820191906000526020600020906000905b82829054906101000a900462ffffff1662ffffff168152602001906003019060208260020104928301926001038202915080841161076d5790505b5050505050905090565b600060606107f48787878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610c0f92505050565b80519091508414610831576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610388906125f2565b61083e88888884876109aa565b9150965096945050505050565b606061085d8686868661018587610bd4565b9695505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600061089985856105d7565b905063ffffffff83166108ad5790506102ec565b805167ffffffffffffffff811180156108c557600080fd5b506040519080825280602002602001820160405280156108ef578160200160208202803683370190505b5091506000805b8251811015610996578463ffffffff1661092284838151811061091557fe5b6020026020010151610ede565b63ffffffff161061098e5782818151811061093957fe5b602002602001015184838060010194508151811061095357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b6001016108f6565b506109a18382611109565b50509392505050565b6000808351116109e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610388906125bb565b6000835167ffffffffffffffff81118015610a0057600080fd5b50604051908082528060200260200182016040528015610a3a57816020015b610a27612035565b815260200190600190039081610a1f5790505b50905060005b8451811015610af05760008463ffffffff1611610a7857610a73858281518110610a6657fe5b602002602001015161111f565b610a95565b610a95858281518110610a8757fe5b60200260200101518561150f565b838381518110610aa157fe5b6020026020010151600001848481518110610ab857fe5b6020908102919091018101516fffffffffffffffffffffffffffffffff909316920191909152600291820b90910b9052600101610a40565b5060008151600114610b0a57610b0582611940565b610b24565b81600081518110610b1757fe5b6020026020010151600001515b9050610b3281898989611a2c565b98975050505050505050565b60005b82518110156103b257828181518110610b5657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166332148f67836040518263ffffffff1660e01b8152600401610b969190612660565b600060405180830381600087803b158015610bb057600080fd5b505af1158015610bc4573d6000803e3d6000fd5b505060019092019150610b419050565b6000603c63ffffffff60ff7f000000000000000000000000000000000000000000000000000000000000000016840216046001019050919050565b6060815167ffffffffffffffff81118015610c2957600080fd5b50604051908082528060200260200182016040528015610c53578160200160208202803683370190505b5090506000805b8351811015610d0e576000610ca77f00000000000000000000000000000000000000000000000000000000000000006106d78989898781518110610c9a57fe5b6020026020010151610d21565b9050610cb281610ed4565b15610d055780848480600101955081518110610cca57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b50600101610c5a565b50610d198282611109565b509392505050565b610d2961204c565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610d61579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610de057600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b803b15155b919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610f2957600080fd5b505afa158015610f3d573d6000803e3d6000fd5b505050506040513d60e0811015610f5357600080fd5b506040810151606090910151909250905061ffff8116610fd457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4e49000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1663252c09d78461ffff168660010161ffff168161100757fe5b066040518263ffffffff1660e01b8152600401808261ffff16815260200191505060806040518083038186803b15801561104057600080fd5b505afa158015611054573d6000803e3d6000fd5b505050506040513d608081101561106a57600080fd5b5080516060909101519092509050806110fe578573ffffffffffffffffffffffffffffffffffffffff1663252c09d760006040518263ffffffff1660e01b81526004018082815260200191505060806040518083038186803b1580156110cf57600080fd5b505afa1580156110e3573d6000803e3d6000fd5b505050506040513d60808110156110f957600080fd5b505191505b504203949350505050565b80825114156111175761111b565b8082525b5050565b60008060008060008573ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561116d57600080fd5b505afa158015611181573d6000803e3d6000fd5b505050506040513d60e081101561119757600080fd5b50602081015160408201516060909201519094509092509050600161ffff82161161122357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4e454f0000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008060008873ffffffffffffffffffffffffffffffffffffffff1663252c09d7866040518263ffffffff1660e01b8152600401808261ffff16815260200191505060806040518083038186803b15801561127d57600080fd5b505afa158015611291573d6000803e3d6000fd5b505050506040513d60808110156112a757600080fd5b508051602082015160409092015190945090925090504263ffffffff9081169084161461135257858973ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b15801561131557600080fd5b505afa158015611329573d6000803e3d6000fd5b505050506040513d602081101561133f57600080fd5b5051909850965061150a95505050505050565b60008461ffff1660018661ffff168861ffff1601038161136e57fe5b0690506000806000808d73ffffffffffffffffffffffffffffffffffffffff1663252c09d7866040518263ffffffff1660e01b81526004018082815260200191505060806040518083038186803b1580156113c857600080fd5b505afa1580156113dc573d6000803e3d6000fd5b505050506040513d60808110156113f257600080fd5b50805160208201516040830151606090930151919650945090925090508061147b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4f4e490000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b83880363ffffffff811684890360060b8161149257fe5b059b50600077ffffffffffffffffffffffffffffffffffffffff0000000084890360201b1663ffffffff831673ffffffffffffffffffffffffffffffffffffffff0277ffffffffffffffffffffffffffffffffffffffffffffffff16816114f557fe5b9d9f50909c049c505050505050505050505050505b915091565b60008063ffffffff831661158457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4250000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60408051600280825260608201835260009260208301908036833701905050905083816000815181106115b357fe5b602002602001019063ffffffff16908163ffffffff16815250506000816001815181106115dc57fe5b63ffffffff9092166020928302919091018201526040517f883bdbfd00000000000000000000000000000000000000000000000000000000815260048101828152835160248301528351600093849373ffffffffffffffffffffffffffffffffffffffff8b169363883bdbfd9388939192839260449091019185820191028083838b5b8381101561167757818101518382015260200161165f565b505050509050019250505060006040518083038186803b15801561169a57600080fd5b505afa1580156116ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160409081528110156116f557600080fd5b810190808051604051939291908464010000000082111561171557600080fd5b90830190602082018581111561172a57600080fd5b825186602082028301116401000000008211171561174757600080fd5b82525081516020918201928201910280838360005b8381101561177457818101518382015260200161175c565b505050509050016040526020018051604051939291908464010000000082111561179d57600080fd5b9083019060208201858111156117b257600080fd5b82518660208202830111640100000000821117156117cf57600080fd5b82525081516020918201928201910280838360005b838110156117fc5781810151838201526020016117e4565b505050509050016040525050509150915060008260008151811061181c57fe5b60200260200101518360018151811061183157fe5b602002602001015103905060008260008151811061184b57fe5b60200260200101518360018151811061186057fe5b60200260200101510390508763ffffffff168260060b8161187d57fe5b05965060008260060b1280156118a757508763ffffffff168260060b816118a057fe5b0760060b15155b156118d2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909601955b63ffffffff881673ffffffffffffffffffffffffffffffffffffffff0277ffffffffffffffffffffffffffffffffffffffff00000000602083901b1677ffffffffffffffffffffffffffffffffffffffffffffffff82168161193057fe5b0496505050505050509250929050565b6000806000805b84518110156119d55784818151811061195c57fe5b6020026020010151602001516fffffffffffffffffffffffffffffffff1685828151811061198657fe5b60200260200101516000015160020b02830192508481815181106119a657fe5b6020026020010151602001516fffffffffffffffffffffffffffffffff16820191508080600101915050611947565b508082816119df57fe5b0592506000821280156119fa57508082816119f657fe5b0715155b15611a25577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201915b5050919050565b600080611a3886611bd5565b90506fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff821611611b065773ffffffffffffffffffffffffffffffffffffffff80821680029084811690861610611ac857611ac37801000000000000000000000000000000000000000000000000876fffffffffffffffffffffffffffffffff1683611f68565b611afe565b611afe81876fffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000611f68565b925050611bcc565b6000611b3273ffffffffffffffffffffffffffffffffffffffff83168068010000000000000000611f68565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610611b9a57611b95700100000000000000000000000000000000876fffffffffffffffffffffffffffffffff1683611f68565b611bc8565b611bc881876fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000611f68565b9250505b50949350505050565b60008060008360020b12611bec578260020b611bf4565b8260020b6000035b9050620d89e8811115611c6857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f5400000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600060018216611c8957700100000000000000000000000000000000611c9b565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611ccf576ffff97272373d413259a46990580e213a0260801c5b6004821615611cee576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611d0d576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611d2c576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611d4b576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611d6a576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611d89576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611da9576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611dc9576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611de9576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611e09576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611e29576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611e49576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611e69576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611e89576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611eaa576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611eca576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611ee9576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611f06576b048a170391f7dc42444e8fa20260801c5b60008460020b1315611f3f57807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81611f3b57fe5b0490505b640100000000810615611f53576001611f56565b60005b60ff16602082901c0192505050919050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870986860292508281109083900303905080611fbc5760008411611fb157600080fd5b5082900490506102ec565b808411611fc857600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ed957600080fd5b60008083601f8401126120a1578182fd5b50813567ffffffffffffffff8111156120b8578182fd5b60208301915083602080830285010111156120d257600080fd5b9250929050565b80356fffffffffffffffffffffffffffffffff81168114610ed957600080fd5b803561ffff81168114610ed957600080fd5b803563ffffffff81168114610ed957600080fd5b60008060408385031215612131578182fd5b61213a8361206c565b91506121486020840161206c565b90509250929050565b600080600080600060808688031215612168578081fd5b6121718661206c565b945061217f6020870161206c565b9350604086013567ffffffffffffffff81111561219a578182fd5b6121a688828901612090565b90945092506121b99050606087016120f9565b90509295509295909350565b6000806000806000608086880312156121dc578081fd5b6121e58661206c565b94506121f36020870161206c565b9350604086013567ffffffffffffffff81111561220e578182fd5b61221a88828901612090565b90945092506121b990506060870161210b565b600080600060608486031215612241578283fd5b61224a8461206c565b92506122586020850161206c565b9150612266604085016120f9565b90509250925092565b600080600060608486031215612283578283fd5b61228c8461206c565b925061229a6020850161206c565b91506122666040850161210b565b6000806000604084860312156122bc578283fd5b833567ffffffffffffffff8111156122d2578384fd5b6122de86828701612090565b90945092506122669050602085016120f9565b600080600060408486031215612305578283fd5b833567ffffffffffffffff81111561231b578384fd5b61232786828701612090565b909450925061226690506020850161210b565b60006020828403121561234b578081fd5b81518060020b81146102ec578182fd5b60008060008060008060a08789031215612373578081fd5b61237c876120d9565b955061238a6020880161206c565b94506123986040880161206c565b9350606087013567ffffffffffffffff8111156123b3578182fd5b6123bf89828a01612090565b90945092506123d290506080880161210b565b90509295509295509295565b60008060008060008060a087890312156123f6578182fd5b6123ff876120d9565b955061240d6020880161206c565b945061241b6040880161206c565b9350606087013567ffffffffffffffff8111156123b3578283fd5b6000806000806080858703121561244b578182fd5b612454856120d9565b93506124626020860161206c565b92506124706040860161206c565b915061247e6060860161210b565b905092959194509250565b60006020828403121561249a578081fd5b813562ffffff811681146102ec578182fd5b6000815180845260208085019450808401835b838110156124f157815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016124bf565b509495945050505050565b60006020825261065e60208301846124ac565b6020808252825182820181905260009190848201906040850190845b8181101561254c57835162ffffff168352928401929184019160010161252b565b50909695505050505050565b901515815260200190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b60208082526016908201527f5469657220616c726561647920737570706f7274656400000000000000000000604082015260600190565b60208082526010908201527f4e6f20646566696e656420706f6f6c7300000000000000000000000000000000604082015260600190565b6020808252601d908201527f476976656e207469657220646f6573206e6f74206861766520706f6f6c000000604082015260600190565b60208082526010908201527f496e76616c696420666565207469657200000000000000000000000000000000604082015260600190565b61ffff91909116815260200190565b62ffffff91909116815260200190565b90815260200190565b60008382526040602083015261030360408301846124ac565b60ff9190911681526020019056fea264697066735822122098f8aa0c7542652995caa0819ce04ce9aac1b7b05b0e1e8c9446dc15bc051a9764736f6c63430007060033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806355eba79211610097578063bc4389f711610066578063bc4389f71461020d578063d8045eca14610222578063e85dd38314610235578063f73e5aab14610248576100f5565b806355eba792146101b257806362d99119146101c55780639446994a146101d8578063b7604e53146101f8576100f5565b80631c49cbb5116100d35780631c49cbb51461016457806333e4c28e14610177578063354b1a7d1461018a57806343dfc58d1461019f576100f5565b80630757bc81146100fa57806307f7ca9f146101245780631b2a933c14610144575b600080fd5b61010d610108366004612436565b61025d565b60405161011b929190612688565b60405180910390f35b61013761013236600461235b565b610286565b60405161011b919061267f565b61015761015236600461222d565b6102d4565b60405161011b91906124fc565b61015761017236600461226f565b6102f3565b610157610185366004612151565b61030b565b61019d6101983660046122f1565b6103a4565b005b61019d6101ad366004612489565b6103b7565b61019d6101c03660046122a8565b610599565b6101576101d336600461211f565b6105d7565b6101eb6101e636600461211f565b610667565b60405161011b9190612558565b61020061070c565b60405161011b91906126a1565b610215610730565b60405161011b919061250f565b61010d6102303660046123de565b6107b2565b6101576102433660046121c5565b61084b565b610250610867565b60405161011b9190612563565b6000606061026c85858561088b565b905061027b86868684876109aa565b915094509492505050565b60006102c98787878787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506109aa915050565b979650505050505050565b60606102e084846105d7565b90506102ec8183610b3e565b9392505050565b6060610303848461015285610bd4565b949350505050565b606061034b8686868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610c0f92505050565b80519091508314610391576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610388906125f2565b60405180910390fd5b61039b8183610b3e565b95945050505050565b6103b283836101c084610bd4565b505050565b6040517f22afcccb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906322afcccb9061042990849060040161266f565b60206040518083038186803b15801561044157600080fd5b505afa158015610455573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610479919061233a565b60020b6104b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038890612629565b60005b60005481101561053c578162ffffff16600082815481106104d257fe5b90600052602060002090600a91828204019190066003029054906101000a900462ffffff1662ffffff161415610534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038890612584565b6001016104b5565b5060008054600181018255908052600a8082047f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56301805462ffffff948516600393909406929092026101000a928302939092021916919091179055565b6103b2838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250859250610b3e915050565b606061065e8383600080548060200260200160405190810160405280929190818152602001828054801561065457602002820191906000526020600020906000905b82829054906101000a900462ffffff1662ffffff16815260200190600301906020826002010492830192600103820291508084116106195790505b5050505050610c0f565b90505b92915050565b60008054815b818110156107015760006106dc7f00000000000000000000000000000000000000000000000000000000000000006106d78888600087815481106106ad57fe5b90600052602060002090600a91828204019190066003029054906101000a900462ffffff16610d21565b610d9e565b90506106e781610ed4565b156106f85760019350505050610661565b5060010161066d565b506000949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606060008054806020026020016040519081016040528092919081815260200182805480156107a857602002820191906000526020600020906000905b82829054906101000a900462ffffff1662ffffff168152602001906003019060208260020104928301926001038202915080841161076d5790505b5050505050905090565b600060606107f48787878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250610c0f92505050565b80519091508414610831576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610388906125f2565b61083e88888884876109aa565b9150965096945050505050565b606061085d8686868661018587610bd4565b9695505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060600061089985856105d7565b905063ffffffff83166108ad5790506102ec565b805167ffffffffffffffff811180156108c557600080fd5b506040519080825280602002602001820160405280156108ef578160200160208202803683370190505b5091506000805b8251811015610996578463ffffffff1661092284838151811061091557fe5b6020026020010151610ede565b63ffffffff161061098e5782818151811061093957fe5b602002602001015184838060010194508151811061095357fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b6001016108f6565b506109a18382611109565b50509392505050565b6000808351116109e6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610388906125bb565b6000835167ffffffffffffffff81118015610a0057600080fd5b50604051908082528060200260200182016040528015610a3a57816020015b610a27612035565b815260200190600190039081610a1f5790505b50905060005b8451811015610af05760008463ffffffff1611610a7857610a73858281518110610a6657fe5b602002602001015161111f565b610a95565b610a95858281518110610a8757fe5b60200260200101518561150f565b838381518110610aa157fe5b6020026020010151600001848481518110610ab857fe5b6020908102919091018101516fffffffffffffffffffffffffffffffff909316920191909152600291820b90910b9052600101610a40565b5060008151600114610b0a57610b0582611940565b610b24565b81600081518110610b1757fe5b6020026020010151600001515b9050610b3281898989611a2c565b98975050505050505050565b60005b82518110156103b257828181518110610b5657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166332148f67836040518263ffffffff1660e01b8152600401610b969190612660565b600060405180830381600087803b158015610bb057600080fd5b505af1158015610bc4573d6000803e3d6000fd5b505060019092019150610b419050565b6000603c63ffffffff60ff7f000000000000000000000000000000000000000000000000000000000000000016840216046001019050919050565b6060815167ffffffffffffffff81118015610c2957600080fd5b50604051908082528060200260200182016040528015610c53578160200160208202803683370190505b5090506000805b8351811015610d0e576000610ca77f00000000000000000000000000000000000000000000000000000000000000006106d78989898781518110610c9a57fe5b6020026020010151610d21565b9050610cb281610ed4565b15610d055780848480600101955081518110610cca57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b50600101610c5a565b50610d198282611109565b509392505050565b610d2961204c565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115610d61579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610610de057600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b803b15155b919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610f2957600080fd5b505afa158015610f3d573d6000803e3d6000fd5b505050506040513d60e0811015610f5357600080fd5b506040810151606090910151909250905061ffff8116610fd457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4e49000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1663252c09d78461ffff168660010161ffff168161100757fe5b066040518263ffffffff1660e01b8152600401808261ffff16815260200191505060806040518083038186803b15801561104057600080fd5b505afa158015611054573d6000803e3d6000fd5b505050506040513d608081101561106a57600080fd5b5080516060909101519092509050806110fe578573ffffffffffffffffffffffffffffffffffffffff1663252c09d760006040518263ffffffff1660e01b81526004018082815260200191505060806040518083038186803b1580156110cf57600080fd5b505afa1580156110e3573d6000803e3d6000fd5b505050506040513d60808110156110f957600080fd5b505191505b504203949350505050565b80825114156111175761111b565b8082525b5050565b60008060008060008573ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561116d57600080fd5b505afa158015611181573d6000803e3d6000fd5b505050506040513d60e081101561119757600080fd5b50602081015160408201516060909201519094509092509050600161ffff82161161122357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4e454f0000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008060008873ffffffffffffffffffffffffffffffffffffffff1663252c09d7866040518263ffffffff1660e01b8152600401808261ffff16815260200191505060806040518083038186803b15801561127d57600080fd5b505afa158015611291573d6000803e3d6000fd5b505050506040513d60808110156112a757600080fd5b508051602082015160409092015190945090925090504263ffffffff9081169084161461135257858973ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b15801561131557600080fd5b505afa158015611329573d6000803e3d6000fd5b505050506040513d602081101561133f57600080fd5b5051909850965061150a95505050505050565b60008461ffff1660018661ffff168861ffff1601038161136e57fe5b0690506000806000808d73ffffffffffffffffffffffffffffffffffffffff1663252c09d7866040518263ffffffff1660e01b81526004018082815260200191505060806040518083038186803b1580156113c857600080fd5b505afa1580156113dc573d6000803e3d6000fd5b505050506040513d60808110156113f257600080fd5b50805160208201516040830151606090930151919650945090925090508061147b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f4f4e490000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b83880363ffffffff811684890360060b8161149257fe5b059b50600077ffffffffffffffffffffffffffffffffffffffff0000000084890360201b1663ffffffff831673ffffffffffffffffffffffffffffffffffffffff0277ffffffffffffffffffffffffffffffffffffffffffffffff16816114f557fe5b9d9f50909c049c505050505050505050505050505b915091565b60008063ffffffff831661158457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4250000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60408051600280825260608201835260009260208301908036833701905050905083816000815181106115b357fe5b602002602001019063ffffffff16908163ffffffff16815250506000816001815181106115dc57fe5b63ffffffff9092166020928302919091018201526040517f883bdbfd00000000000000000000000000000000000000000000000000000000815260048101828152835160248301528351600093849373ffffffffffffffffffffffffffffffffffffffff8b169363883bdbfd9388939192839260449091019185820191028083838b5b8381101561167757818101518382015260200161165f565b505050509050019250505060006040518083038186803b15801561169a57600080fd5b505afa1580156116ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160409081528110156116f557600080fd5b810190808051604051939291908464010000000082111561171557600080fd5b90830190602082018581111561172a57600080fd5b825186602082028301116401000000008211171561174757600080fd5b82525081516020918201928201910280838360005b8381101561177457818101518382015260200161175c565b505050509050016040526020018051604051939291908464010000000082111561179d57600080fd5b9083019060208201858111156117b257600080fd5b82518660208202830111640100000000821117156117cf57600080fd5b82525081516020918201928201910280838360005b838110156117fc5781810151838201526020016117e4565b505050509050016040525050509150915060008260008151811061181c57fe5b60200260200101518360018151811061183157fe5b602002602001015103905060008260008151811061184b57fe5b60200260200101518360018151811061186057fe5b60200260200101510390508763ffffffff168260060b8161187d57fe5b05965060008260060b1280156118a757508763ffffffff168260060b816118a057fe5b0760060b15155b156118d2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909601955b63ffffffff881673ffffffffffffffffffffffffffffffffffffffff0277ffffffffffffffffffffffffffffffffffffffff00000000602083901b1677ffffffffffffffffffffffffffffffffffffffffffffffff82168161193057fe5b0496505050505050509250929050565b6000806000805b84518110156119d55784818151811061195c57fe5b6020026020010151602001516fffffffffffffffffffffffffffffffff1685828151811061198657fe5b60200260200101516000015160020b02830192508481815181106119a657fe5b6020026020010151602001516fffffffffffffffffffffffffffffffff16820191508080600101915050611947565b508082816119df57fe5b0592506000821280156119fa57508082816119f657fe5b0715155b15611a25577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201915b5050919050565b600080611a3886611bd5565b90506fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff821611611b065773ffffffffffffffffffffffffffffffffffffffff80821680029084811690861610611ac857611ac37801000000000000000000000000000000000000000000000000876fffffffffffffffffffffffffffffffff1683611f68565b611afe565b611afe81876fffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000611f68565b925050611bcc565b6000611b3273ffffffffffffffffffffffffffffffffffffffff83168068010000000000000000611f68565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610611b9a57611b95700100000000000000000000000000000000876fffffffffffffffffffffffffffffffff1683611f68565b611bc8565b611bc881876fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000611f68565b9250505b50949350505050565b60008060008360020b12611bec578260020b611bf4565b8260020b6000035b9050620d89e8811115611c6857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f5400000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600060018216611c8957700100000000000000000000000000000000611c9b565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611ccf576ffff97272373d413259a46990580e213a0260801c5b6004821615611cee576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611d0d576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611d2c576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611d4b576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611d6a576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611d89576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611da9576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611dc9576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611de9576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611e09576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611e29576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611e49576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611e69576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611e89576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611eaa576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611eca576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611ee9576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611f06576b048a170391f7dc42444e8fa20260801c5b60008460020b1315611f3f57807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81611f3b57fe5b0490505b640100000000810615611f53576001611f56565b60005b60ff16602082901c0192505050919050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870986860292508281109083900303905080611fbc5760008411611fb157600080fd5b5082900490506102ec565b808411611fc857600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ed957600080fd5b60008083601f8401126120a1578182fd5b50813567ffffffffffffffff8111156120b8578182fd5b60208301915083602080830285010111156120d257600080fd5b9250929050565b80356fffffffffffffffffffffffffffffffff81168114610ed957600080fd5b803561ffff81168114610ed957600080fd5b803563ffffffff81168114610ed957600080fd5b60008060408385031215612131578182fd5b61213a8361206c565b91506121486020840161206c565b90509250929050565b600080600080600060808688031215612168578081fd5b6121718661206c565b945061217f6020870161206c565b9350604086013567ffffffffffffffff81111561219a578182fd5b6121a688828901612090565b90945092506121b99050606087016120f9565b90509295509295909350565b6000806000806000608086880312156121dc578081fd5b6121e58661206c565b94506121f36020870161206c565b9350604086013567ffffffffffffffff81111561220e578182fd5b61221a88828901612090565b90945092506121b990506060870161210b565b600080600060608486031215612241578283fd5b61224a8461206c565b92506122586020850161206c565b9150612266604085016120f9565b90509250925092565b600080600060608486031215612283578283fd5b61228c8461206c565b925061229a6020850161206c565b91506122666040850161210b565b6000806000604084860312156122bc578283fd5b833567ffffffffffffffff8111156122d2578384fd5b6122de86828701612090565b90945092506122669050602085016120f9565b600080600060408486031215612305578283fd5b833567ffffffffffffffff81111561231b578384fd5b61232786828701612090565b909450925061226690506020850161210b565b60006020828403121561234b578081fd5b81518060020b81146102ec578182fd5b60008060008060008060a08789031215612373578081fd5b61237c876120d9565b955061238a6020880161206c565b94506123986040880161206c565b9350606087013567ffffffffffffffff8111156123b3578182fd5b6123bf89828a01612090565b90945092506123d290506080880161210b565b90509295509295509295565b60008060008060008060a087890312156123f6578182fd5b6123ff876120d9565b955061240d6020880161206c565b945061241b6040880161206c565b9350606087013567ffffffffffffffff8111156123b3578283fd5b6000806000806080858703121561244b578182fd5b612454856120d9565b93506124626020860161206c565b92506124706040860161206c565b915061247e6060860161210b565b905092959194509250565b60006020828403121561249a578081fd5b813562ffffff811681146102ec578182fd5b6000815180845260208085019450808401835b838110156124f157815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016124bf565b50949594505