UNPKG

randomness-js

Version:

A library for consuming, verifying and using randomness from the dcipher network

69 lines (67 loc) 111 kB
/* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ import { Contract, ContractFactory, ContractTransactionResponse, Interface, } from "ethers"; import type { Signer, ContractDeployTransaction, ContractRunner } from "ethers"; import type { NonPayableOverrides } from "../../common"; import type { DeployAllContracts, DeployAllContractsInterface, } from "../../DeployAllContracts.s.sol/DeployAllContracts"; const _abi = [ { type: "function", name: "IS_SCRIPT", inputs: [], outputs: [ { name: "", type: "bool", internalType: "bool", }, ], stateMutability: "view", }, { type: "function", name: "deployAll", inputs: [], outputs: [ { name: "bn254SignatureScheme", type: "address", internalType: "contract BN254SignatureScheme", }, { name: "randomnessSenderInstance", type: "address", internalType: "contract RandomnessSender", }, { name: "signatureSchemeAddressProvider", type: "address", internalType: "contract SignatureSchemeAddressProvider", }, { name: "signatureSenderInstance", type: "address", internalType: "contract SignatureSender", }, ], stateMutability: "nonpayable", }, { type: "function", name: "run", inputs: [], outputs: [], stateMutability: "nonpayable", }, ] as const; const _bytecode = "0x6080604052600c805462ff00ff191662010001179055348015601f575f5ffd5b5061d37d8061002d5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80632d82333514610043578063c040622614610090578063f8ccbf471461009a575b5f5ffd5b61004b6100bd565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184169183019190915290911660608201526080015b60405180910390f35b6100986100f5565b005b600c546100ad9062010000900460ff1681565b6040519015158152602001610087565b5f808080806100ca610103565b92506100d4610512565b94506100e083826109d9565b91506100ec82826110d3565b93505090919293565b6100fd6100bd565b50505050565b5f5f60405180602001610115906126b9565b601f1982820381018352601f909101166040526101306117db565b6040805173ffffffffffffffffffffffffffffffffffffffff90921660208301520160408051601f19818403018152908290526101709291602001612754565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663afc980406040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156101e8575f5ffd5b505af11580156101fa573d5f5f3e3d5ffd5b50506040517f7ed1ec7d00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5553455f52414e44414d555f464143544f52590000000000000000000000000060448201525f9250737109709ecfa91a80626ff3989d68f67f5b1dd12d9150637ed1ec7d90606401602060405180830381865afa158015610294573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102b89190612770565b1561043c576040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f52414e44414d555f435245415445325f464143544f52595f434f4e545241435460448201527f5f414444524553530000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015610377573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039b9190612796565b6040517fcdcb760a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091169063cdcb760a906103f290601a9086906004016127f7565b6020604051808303815f875af115801561040e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104329190612796565b9050809250610493565b601a6104466117db565b604051610452906126b9565b73ffffffffffffffffffffffffffffffffffffffff90911681526020018190604051809103905ff590508015801561048c573d5f5f3e3d5ffd5b5092508290505b6104eb6040518060400160405280601581526020017f4465706c6f796d656e745f696e7075742e6a736f6e000000000000000000000081525060405180606001604052806025815260200161d2ee602591398361192b565b61050d60405180606001604052806035815260200161d24f6035913982611a6c565b505090565b5f5f60405180602001610524906126c6565b6020820181038252601f19601f8201166040525090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663afc980406040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156105a1575f5ffd5b505af11580156105b3573d5f5f3e3d5ffd5b50506040517f7ed1ec7d00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5553455f52414e44414d555f464143544f5259000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250637ed1ec7d9150606401602060405180830381865afa15801561064b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061066f9190612770565b156107f4576040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f52414e44414d555f435245415445325f464143544f52595f434f4e545241435460448201527f5f4144445245535300000000000000000000000000000000000000000000000060648201525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015610730573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107549190612796565b6040517fcdcb760a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091169063cdcb760a906107ab90601a9086906004016127f7565b6020604051808303815f875af11580156107c7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107eb9190612796565b92506108249050565b604051601a90610803906126c6565b8190604051809103905ff5905080158015610820573d5f5f3e3d5ffd5b5091505b6108466040518060600160405280602b815260200161d224602b913983611a6c565b5f61089e6040518060400160405280601581526020017f4465706c6f796d656e745f696e7075742e6a736f6e000000000000000000000081525060405180606001604052806025815260200161d2ee60259139611ae3565b90505f8190507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663afc980406040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561090b575f5ffd5b505af115801561091d573d5f5f3e3d5ffd5b5050604080518082018252600581527f424e323534000000000000000000000000000000000000000000000000000000602082015290517fbab867da00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516935063bab867da92506109a69190889060040161280f565b5f604051808303815f87803b1580156109bd575f5ffd5b505af11580156109cf573d5f5f3e3d5ffd5b5050505050505090565b5f5f6109e3611c43565b90508215610b94577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663afc980406040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610a52575f5ffd5b505af1158015610a64573d5f5f3e3d5ffd5b505050505f610add6040518060400160405280601581526020017f4465706c6f796d656e745f696e7075742e6a736f6e00000000000000000000008152506040518060400160405280601b81526020017f7369676e617475726553656e64657250726f7879416464726573730000000000815250611ae3565b604080517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201929092525f6044820152919250821690634f1ef286906064015f604051808303815f87803b158015610b55575f5ffd5b505af1158015610b67573d5f5f3e3d5ffd5b50505050610b8d6040518060600160405280603c815260200161d1b2603c913983611a6c565b91506110cc565b5f60405180602001610ba5906126d3565b601f1982820381018352601f90910116604081815273ffffffffffffffffffffffffffffffffffffffff85166020830152808201525f606082015260800160408051601f1981840301815290829052610c019291602001612754565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663afc980406040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610c79575f5ffd5b505af1158015610c8b573d5f5f3e3d5ffd5b50506040517f7ed1ec7d00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5553455f52414e44414d555f464143544f52590000000000000000000000000060448201525f9250737109709ecfa91a80626ff3989d68f67f5b1dd12d9150637ed1ec7d90606401602060405180830381865afa158015610d25573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d499190612770565b15610ecd576040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f52414e44414d555f435245415445325f464143544f52595f434f4e545241435460448201527f5f414444524553530000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015610e08573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2c9190612796565b6040517fcdcb760a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091169063cdcb760a90610e8390601a9086906004016127f7565b6020604051808303815f875af1158015610e9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec39190612796565b9050809350610f2f565b5f601a5f1b84604051610edf906126d3565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190525f908201526060018190604051809103905ff5905080158015610f27573d5f5f3e3d5ffd5b509450849150505b610fa46040518060400160405280601581526020017f4465706c6f796d656e745f696e7075742e6a736f6e00000000000000000000008152506040518060400160405280601b81526020017f7369676e617475726553656e64657250726f78794164647265737300000000008152508361192b565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663afc980406040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561100b575f5ffd5b505af115801561101d573d5f5f3e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663702ef38c611045611f7a565b5161104e611f7a565b6020015161105a6117db565b8a6040518563ffffffff1660e01b815260040161107a9493929190612868565b5f604051808303815f87803b158015611091575f5ffd5b505af11580156110a3573d5f5f3e3d5ffd5b505050506110c96040518060600160405280602c815260200161d186602c913982611a6c565b50505b5092915050565b5f5f6110dd61229b565b90508215611287577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663afc980406040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561114c575f5ffd5b505af115801561115e573d5f5f3e3d5ffd5b505050505f6111d76040518060400160405280601581526020017f4465706c6f796d656e745f696e7075742e6a736f6e00000000000000000000008152506040518060400160405280601c81526020017f72616e646f6d6e65737353656e64657250726f78794164647265737300000000815250611ae3565b604080517f4f1ef28600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201929092525f6044820152919250821690634f1ef286906064015f604051808303815f87803b15801561124f575f5ffd5b505af1158015611261573d5f5f3e3d5ffd5b50505050610b8d6040518060600160405280603d815260200161d284603d913983611a6c565b5f60405180602001611298906126d3565b601f1982820381018352601f90910116604081815273ffffffffffffffffffffffffffffffffffffffff85166020830152808201525f606082015260800160408051601f19818403018152908290526112f49291602001612754565b60405160208183030381529060405290507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663afc980406040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561136c575f5ffd5b505af115801561137e573d5f5f3e3d5ffd5b50506040517f7ed1ec7d00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5553455f52414e44414d555f464143544f52590000000000000000000000000060448201525f9250737109709ecfa91a80626ff3989d68f67f5b1dd12d9150637ed1ec7d90606401602060405180830381865afa158015611418573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061143c9190612770565b156115c0576040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f52414e44414d555f435245415445325f464143544f52595f434f4e545241435460448201527f5f414444524553530000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156114fb573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061151f9190612796565b6040517fcdcb760a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091169063cdcb760a9061157690601a9086906004016127f7565b6020604051808303815f875af1158015611592573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b69190612796565b9050809350611622565b5f601a5f1b846040516115d2906126d3565b73ffffffffffffffffffffffffffffffffffffffff90911681526040602082018190525f908201526060018190604051809103905ff590508015801561161a573d5f5f3e3d5ffd5b509450849150505b6116976040518060400160405280601581526020017f4465706c6f796d656e745f696e7075742e6a736f6e00000000000000000000008152506040518060400160405280601c81526020017f72616e646f6d6e65737353656e64657250726f787941646472657373000000008152508361192b565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663afc980406040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156116fe575f5ffd5b505af1158015611710573d5f5f3e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff1663485cc955876117396117db565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff9283166004820152911660248201526044015f604051808303815f87803b1580156117a3575f5ffd5b505af11580156117b5573d5f5f3e3d5ffd5b505050506110c96040518060600160405280602d815260200161d2c1602d913982611a6c565b6040517fc1978d1f00000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f505249564154455f4b455900000000000000000000000000000000000000000060448201525f908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa158015611873573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061189791906128c4565b6040517fffa1864900000000000000000000000000000000000000000000000000000000815260048101829052909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015611901573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119259190612796565b91505090565b604080518082018252601a81527f6465706c6f796d656e742061646472657373657320696e707574000000000000602082015290517f972c60620000000000000000000000000000000000000000000000000000000081525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d9063972c6062906119b3908590889088906004016128db565b5f604051808303815f875af11580156119ce573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119f59190810190612953565b9050737109709ecfa91a80626ff3989d68f67f5b1dd12d63e23cd19f82611a1b886125ce565b6040518363ffffffff1660e01b8152600401611a38929190612a07565b5f604051808303815f87803b158015611a4f575f5ffd5b505af1158015611a61573d5f5f3e3d5ffd5b505050505050505050565b611adf8282604051602401611a8292919061280f565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f319af3330000000000000000000000000000000000000000000000000000000017905261268e565b5050565b5f5f611aee846125ce565b6040517f60f9bb110000000000000000000000000000000000000000000000000000000081529091505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d906360f9bb1190611b43908590600401612a34565b5f60405180830381865afa158015611b5d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b849190810190612953565b90505f84604051602001611b989190612a46565b60408051601f19818403018152908290527f1e19e6570000000000000000000000000000000000000000000000000000000082529150737109709ecfa91a80626ff3989d68f67f5b1dd12d90631e19e65790611bfa9085908590600401612a07565b602060405180830381865afa158015611c15573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c399190612796565b9695505050505050565b5f5f60405180602001611c55906126e0565b6020820181038252601f19601f8201166040525090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663afc980406040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611cd2575f5ffd5b505af1158015611ce4573d5f5f3e3d5ffd5b50506040517f7ed1ec7d00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5553455f52414e44414d555f464143544f5259000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250637ed1ec7d9150606401602060405180830381865afa158015611d7c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da09190612770565b15611f21576040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f52414e44414d555f435245415445325f464143544f52595f434f4e545241435460448201527f5f414444524553530000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa158015611e5f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e839190612796565b6040517fcdcb760a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091169063cdcb760a90611eda90601a9085906004016127f7565b6020604051808303815f875af1158015611ef6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1a9190612796565b9150611f54565b5f601a5f1b604051611f32906126e0565b8190604051809103905ff5905080158015611f4f573d5f5f3e3d5ffd5b509250505b611f7660405180606001604052806035815260200161d3136035913983611a6c565b5090565b611f826126ed565b60408051608081018083527fc1978d1f00000000000000000000000000000000000000000000000000000000905260206084820152601160a48201527f424c535f5055424c49435f4b45595f583000000000000000000000000000000060c4820152908190810180737109709ecfa91a80626ff3989d68f67f5b1dd12d63c1978d1f60e48501602060405180830381865afa158015612023573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061204791906128c4565b81526040517fc1978d1f000000000000000000000000000000000000000000000000000000008152602060048201819052601160248301527f424c535f5055424c49435f4b45595f5831000000000000000000000000000000604483015290910190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa1580156120e3573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061210791906128c4565b9052815260408051808201918290527fc1978d1f00000000000000000000000000000000000000000000000000000000909152602060448201819052601160648301527f424c535f5055424c49435f4b45595f593000000000000000000000000000000060848301529091019080737109709ecfa91a80626ff3989d68f67f5b1dd12d63c1978d1f60a48301602060405180830381865afa1580156121ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121d291906128c4565b81526040517fc1978d1f000000000000000000000000000000000000000000000000000000008152602060048201819052601160248301527f424c535f5055424c49435f4b45595f5931000000000000000000000000000000604483015290910190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c1978d1f90606401602060405180830381865afa15801561226e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061229291906128c4565b90529052919050565b5f5f604051806020016122ad90612712565b6020820181038252601f19601f8201166040525090507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663afc980406040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561232a575f5ffd5b505af115801561233c573d5f5f3e3d5ffd5b50506040517f7ed1ec7d00000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5553455f52414e44414d555f464143544f5259000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9250637ed1ec7d9150606401602060405180830381865afa1580156123d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123f89190612770565b15612579576040517f350d56bf00000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f52414e44414d555f435245415445325f464143544f52595f434f4e545241435460448201527f5f414444524553530000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063350d56bf90608401602060405180830381865afa1580156124b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124db9190612796565b6040517fcdcb760a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091169063cdcb760a9061253290601a9085906004016127f7565b6020604051808303815f875af115801561254e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125729190612796565b91506125ac565b5f601a5f1b60405161258a90612712565b8190604051809103905ff59050801580156125a7573d5f5f3e3d5ffd5b509250505b611f7660405180606001604052806036815260200161d1ee6036913983611a6c565b60605f7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663d930a0e66040518163ffffffff1660e01b81526004015f60405180830381865afa15801561263b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526126629190810190612953565b90508083604051602001612677929190612a77565b604051602081830303815290604052915050919050565b6126978161269a565b50565b5f6a636f6e736f6c652e6c6f6790505f5f835160208501845afa505050565b610bda80612ab383390190565b6129d58061368d83390190565b6104468061606283390190565b61468b806164a883390190565b604051806040016040528061270061271f565b815260200161270d61271f565b905290565b6126538061ab3383390190565b60405180604001604052806002906020820280368337509192915050565b5f81518060208401855e5f93019283525090919050565b5f612768612762838661273d565b8461273d565b949350505050565b5f60208284031215612780575f5ffd5b8151801515811461278f575f5ffd5b9392505050565b5f602082840312156127a6575f5ffd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461278f575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b828152604060208201525f61276860408301846127c9565b604081525f61282160408301856127c9565b905073ffffffffffffffffffffffffffffffffffffffff831660208301529392505050565b805f5b60028110156100fd578151845260209384019390910190600101612849565b60c081016128768287612846565b6128836040830186612846565b73ffffffffffffffffffffffffffffffffffffffff8416608083015273ffffffffffffffffffffffffffffffffffffffff831660a083015295945050505050565b5f602082840312156128d4575f5ffd5b5051919050565b606081525f6128ed60608301866127c9565b82810360208401526128ff81866127c9565b91505073ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60208284031215612963575f5ffd5b815167ffffffffffffffff811115612979575f5ffd5b8201601f81018413612989575f5ffd5b805167ffffffffffffffff8111156129a3576129a3612926565b604051601f19603f601f19601f8501160116810181811067ffffffffffffffff821117156129d3576129d3612926565b6040528181528282016020018610156129ea575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b604081525f612a1960408301856127c9565b8281036020840152612a2b81856127c9565b95945050505050565b602081525f61278f60208301846127c9565b7f2e0000000000000000000000000000000000000000000000000000000000000081525f61278f600183018461273d565b5f612a82828561273d565b7f2f7363726970742f6a736f6e2f000000000000000000000000000000000000008152612a2b600d82018561273d56fe608060405234801561000f575f5ffd5b50604051610bda380380610bda83398101604081905261002e916101a7565b6001600160a01b03811661003f5750335b6100495f826100fe565b61008e5760405162461bcd60e51b815260206004820152601160248201527011dc985b9d081c9bdb194819985a5b1959607a1b60448201526064015b60405180910390fd5b6100b87fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775826100fe565b6100f85760405162461bcd60e51b815260206004820152601160248201527011dc985b9d081c9bdb194819985a5b1959607a1b6044820152606401610085565b506101d4565b5f828152602081815260408083206001600160a01b038516845290915281205460ff1661019e575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556101563390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101a1565b505f5b92915050565b5f602082840312156101b7575f5ffd5b81516001600160a01b03811681146101cd575f5ffd5b9392505050565b6109f9806101e15f395ff3fe608060405234801561000f575f5ffd5b50600436106100c4575f3560e01c80635bb09cf81161007d578063a217fddf11610058578063a217fddf146101fd578063bab867da14610204578063d547741f14610217575f5ffd5b80635bb09cf81461015b57806375b238fc1461019357806391d14854146101ba575f5ffd5b80632f2ff15d116100ad5780632f2ff15d146101205780632fc9fa331461013557806336568abe14610148575f5ffd5b806301ffc9a7146100c8578063248a9ca3146100f0575b5f5ffd5b6100db6100d6366004610831565b61022a565b60405190151581526020015b60405180910390f35b6101126100fe366004610877565b5f9081526020819052604090206001015490565b6040519081526020016100e7565b61013361012e3660046108b6565b6102c2565b005b6100db610143366004610925565b6102ec565b6101336101563660046108b6565b610346565b61016e610169366004610925565b6103a4565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100e7565b6101127fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b6100db6101c83660046108b6565b5f9182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6101125f81565b610133610212366004610964565b6103e5565b6101336102253660046108b6565b6105c5565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806102bc57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f828152602081905260409020600101546102dc816105e9565b6102e683836105f6565b50505050565b5f5f73ffffffffffffffffffffffffffffffffffffffff16600184846040516103169291906109b4565b9081526040519081900360200190205473ffffffffffffffffffffffffffffffffffffffff161415905092915050565b73ffffffffffffffffffffffffffffffffffffffff81163314610395576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61039f82826106ef565b505050565b5f600183836040516103b79291906109b4565b9081526040519081900360200190205473ffffffffffffffffffffffffffffffffffffffff16905092915050565b61040e7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756105e9565b73ffffffffffffffffffffffffffffffffffffffff811615801590610449575073ffffffffffffffffffffffffffffffffffffffff81163b15155b6104da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f496e76616c696420636f6e7472616374206164647265737320666f722073636860448201527f656d65416464726573730000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b80600184846040516104ed9291906109b4565b908152604051908190036020018120805473ffffffffffffffffffffffffffffffffffffffff939093167fffffffffffffffffffffffff00000000000000000000000000000000000000009093169290921790915560019061055290859085906109b4565b9081526040519081900360200181205473ffffffffffffffffffffffffffffffffffffffff169061058690859085906109b4565b604051908190038120428252907f0a1cd6a1e0a7b200d28ead555f3cee96e0d2def049535fbcfdc2926bc4cec5049060200160405180910390a3505050565b5f828152602081905260409020600101546105df816105e9565b6102e683836106ef565b6105f381336107a8565b50565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff166106e8575f8381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556106863390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016102bc565b505f6102bc565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff16156106e8575f8381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016102bc565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661082d576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044016104d1565b5050565b5f60208284031215610841575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610870575f5ffd5b9392505050565b5f60208284031215610887575f5ffd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146108b1575f5ffd5b919050565b5f5f604083850312156108c7575f5ffd5b823591506108d76020840161088e565b90509250929050565b5f5f83601f8401126108f0575f5ffd5b50813567ffffffffffffffff811115610907575f5ffd5b60208301915083602082850101111561091e575f5ffd5b9250929050565b5f5f60208385031215610936575f5ffd5b823567ffffffffffffffff81111561094c575f5ffd5b610958858286016108e0565b90969095509350505050565b5f5f5f60408486031215610976575f5ffd5b833567ffffffffffffffff81111561098c575f5ffd5b610998868287016108e0565b90945092506109ab90506020850161088e565b90509250925092565b818382375f910190815291905056fea26469706673582212204365ebfe0316198161211e6648f602ef30b54b8310b64cd331285d5e76802ca464736f6c634300081c0033608060405234801561000f575f5ffd5b506100194661004b565b6040516020016100299190610212565b6040516020818303038152906040525f90816100459190610318565b5061042a565b604080518082018252601081526f181899199a1a9b1b9c1cb0b131b232b360811b602082015281516042808252608082019093526060925f9190602082018180368337019050509050600360fc1b815f815181106100ab576100ab6103d2565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106100d9576100d96103d2565b60200101906001600160f81b03191690815f1a9053505f5b602081101561020a5782600486836020811061010f5761010f6103d2565b1a60f81b6001600160f81b031916901c60f81c60ff1681518110610135576101356103d2565b01602001516001600160f81b031916826101508360026103fa565b61015b906002610417565b8151811061016b5761016b6103d2565b60200101906001600160f81b03191690815f1a90535082858260208110610194576101946103d2565b825191901a600f169081106101ab576101ab6103d2565b01602001516001600160f81b031916826101c68360026103fa565b6101d1906002610417565b6101dc906001610417565b815181106101ec576101ec6103d2565b60200101906001600160f81b03191690815f1a9053506001016100f1565b509392505050565b7f646369706865722d72616e646f6d6e6573732d7630312d424e32353447315f5881527f4d443a4b454343414b2d3235365f535644575f524f5f0000000000000000000060208201525f82518060208501603685015e605f60f81b6036939091019283015250603701919050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806102a857607f821691505b6020821081036102c657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561031357805f5260205f20601f840160051c810160208510156102f15750805b601f840160051c820191505b81811015610310575f81556001016102fd565b50505b505050565b81516001600160401b0381111561033157610331610280565b6103458161033f8454610294565b846102cc565b6020601f821160018114610377575f83156103605750848201515b5f19600385901b1c1916600184901b178455610310565b5f84815260208120601f198516915b828110156103a65787850151825560209485019460019092019101610386565b50848210156103c357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610411576104116103e6565b92915050565b80820180821115610411576104116103e6565b61259e806104375f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c80638a1f165a1161004d5780638a1f165a146100c3578063eae1e15b146100ff578063f6e548e914610112575f5ffd5b80633033cc51146100735780633408e470146100a05780635f7c7522146100ae575b5f5ffd5b610086610081366004612188565b610135565b604080519283526020830191909152015b60405180910390f35b604051468152602001610097565b6100b6610214565b6040516100979190612213565b6100b66040518060400160405280600581526020017f424e32353400000000000000000000000000000000000000000000000000000081525081565b6100b661010d366004612188565b61029f565b61012561012036600461222c565b6102d9565b6040519015158152602001610097565b5f5f5f6101fe5f8054610147906122cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610173906122cb565b80156101be5780601f10610195576101008083540402835291602001916101be565b820191905f5260205f20905b8154815290600101906020018083116101a157829003601f168201915b505050505086868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506103c892505050565b80516020909101519093509150505b9250929050565b5f8054610220906122cb565b80601f016020809104026020016040519081016040528092919081815260200182805461024c906122cb565b80156102975780601f1061026e57610100808354040283529160200191610297565b820191905f5260205f20905b81548152906001019060200180831161027a57829003601f168201915b505050505081565b60605f5f6102ad8585610135565b915091506102ce6040518060400160405280848152602001838152506104ad565b925050505b92915050565b5f5f61031988888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506104e692505050565b90505f61035a87878080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506104e692505050565b90505f61039b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061058392505050565b90505f5f6103aa84848761063e565b915091508180156103b85750805b9c9b505050505050505050505050565b604080518082019091525f80825260208201525f6103e684846107b1565b90505f6103f982825b60200201516108fc565b90505f6104078360016103ef565b90506104116120cb565b825181526020808401518282015282516040808401919091529083015160608301525f908460808460066107d05a03fa90508061048557816040517f128e3f0800000000000000000000000000000000000000000000000000000000815260040161047c9190612349565b60405180910390fd5b6040805180820190915284518152602081018560016020020151905298975050505050505050565b6040805181815260608181018352915f919060208201818036833750508451602095860151958301525060408101939093525090919050565b604080518082019091525f80825260208201528151604014610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c6964204731206279746573206c656e677468000000000000000000604482015260640161047c565b5060208181015160409283015183518085019094529083529082015290565b61058b6120e9565b81516080146105f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f496e76616c6964204732206279746573206c656e677468000000000000000000604482015260640161047c565b50602081810151604080840151606080860151608096870151845197880185528785019586529187019290925292855281518083019092528152808301919091529082015290565b5f5f5f604051806101800160405280875f01518152602001876020015181526020017f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c281526020017f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed81526020017f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec81526020017f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d8152602001855f0151815260200185602001518152602001865f01516001600281106107215761072161231c565b60200201518152602001865f01515f600281106107405761074061231c565b6020020151815260200186602001516001600281106107615761076161231c565b6020020151815260200186602001515f600281106107815761078161231c565b60200201519052905061079261210e565b6020816101808460086107d05a03fa9051151597909650945050505050565b6107b961212c565b5f6107c48484610da4565b90505f5f5f5f6018850177ffffffffffffffffffffffffffffffffffffffffffffffff815116935060308601905077ffffffffffffffffffffffffffffffffffffffffffffffff81511694507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47857f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4778010000000000000000000000000000000000000000000000008709086048870151606088015177ffffffffffffffffffffffffffffffffffffffffffffffff908116975016945092507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47905084817801000000000000000000000000000000000000000000000000860908604080518082019091529283526020830152509695505050505050565b61090461212c565b7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478210610960576040517fd53e94150000000000000000000000000000000000000000000000000000000081526004810183905260240161047c565b5f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760047f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478586090990505f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478260010890507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610a1e837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476123a6565b60010891505f610a507f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47838509610f8e565b90505f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4778016789af3a83522eb353c98fc6b36d713d5d8d1cc5dffffffa7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47847f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47888b09090990505f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47610b24837f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476123a6565b7f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea30890505f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47837f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea30890505f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4786870990505f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4786830990505f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47807f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478485097f10216f7ba065e00de81ac1e7808072c9dd2b2385cd7b438469602eb24829a9bd0960010890505f5f610c5e610c5988610f98565b61100a565b5f0b600103610cc757868c52610c7387610f98565b9050610c7e816110ba565b60208e0191909152915081610cc2576040517f396ec7710000000000000000000000000000000000000000000000000000000081526004810182905260240161047c565b610d43565b610cd3610c5987610f98565b5f0b600103610ce857858c52610c7386610f98565b828c52610cf483610f98565b9050610cff816110ba565b60208e0191909152915081610d43576040517f396ec7710000000000000000000000000000000000000000000000000000000081526004810182905260240161047c565b60208c0151610d51906110f4565b610d5a8e6110f4565b14610d945760208c0151610d8e907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476123a6565b60208d01525b5050505050505050505050919050565b815160609060ff811115610de657836040517f26e4f9ba00000000000000000000000000000000000000000000000000000000815260040161047c9190612213565b60408051608880825260c082019092525f916020820181803683370190505090505f81855f60605f8a88604051602001610e2697969594939291906123d0565b60405160208183030381529060405290505f818051906020012090505f8160018987604051602001610e5b94939291906124ab565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815282825280516020820120606080855260808501909352909350915f91602082018180368337019050509050600360015b81811015610f5257858418610ecc82600161251d565b8d8b604051602001610ee194939291906124ab565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830181028501810195909552805194810194909420939450600101610eb6565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020908102820101919091529550505050505092915050565b5f6102d382611100565b5f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760037f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47847f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47868709090892915050565b5f5f61101583611858565b905061104260017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd476123a6565b810361107057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92915050565b8015801590611080575080600114155b156102d3576040517f396ec7710000000000000000000000000000000000000000000000000000000081526004810184905260240161047c565b5f5f6110c583611985565b9150827f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47838409149050915091565b5f6102d3600283612530565b5f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478083840991508083830981838209828283098385830984848309858484098684850997508684840987858409945087898a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087838a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985050868889099750868889099750868889099750868889099750868889099750868889099750868489099750868889099750868889099750868889099750868889099750868889099750868989099750868889099750868889099750868889099750868889099750868889099750868889099750868989099750868889099750868889099750868889099750868889099750868889099750868689099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868189099750508587880996508587880996508587880996508585880996508587880996508587880996508587880996508585880996508587880996508587880996508587880996508587880996508587880996508587880996508587880996508587880996508583880996508587880996508587880996508587880996508587880996508581880996505050838586099450838586099450838586099450838586099450838186099450508284850993508284850993508284850993508281850993508284850993508284850993508285850993508284850993508284850993508284850993508284850993508284850993508284850993508281850995945050505050565b6040805160c080825260e082019092525f918291906020820181803683370190505060208082018181526040830182905260608301829052608083018690527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea360a08401527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4760c0808501919091529293505f92839160055afa90505f5192508061197e576040517fc6daf7ab000000000000000000000000000000000000000000000000000000008152600481018590527f183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea360248201527f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47604482015260640161047c565b5050919050565b5f7f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478083840991508083830981838209828283098385830984848309858484098684850997508684840987858409945087898a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087878a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a09985087898a09985087898a09985087898a09985087838a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087828a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087848a09985087898a09985087898a09985087898a09985087898a09985087898a09985087868a09985087898a09985087898a099850878a8a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087898a09985087818a09985050868889099750868889099750868889099750868889099750868889099750868889099750868489099750868889099750868889099750868889099750868889099750868889099750868989099750868889099750868889099750868889099750868889099750868889099750868889099750868989099750868889099750868889099750868889099750868889099750868889099750868689099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868889099750868189099750508587880996508587880996508587880996508585880996508587880996508587880996508587880996508585880996508587880996508587880996508587880996508587880996508587880996508587880996508587880996508587880996508583880996508587880996508587880996508587880996508587880996508581880996508587880996508587880996508587880996508587880996508583880996508587880996508587880996508587880996508584880996508587880996508587880996508587880996508587880996508587880996508581880996505050505050808283099392505050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806120fc61212c565b815260200161210961212c565b905290565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b5f5f83601f84011261215a575f5ffd5b50813567ffffffffffffffff811115612171575f5ffd5b60208301915083602082850101111561020d575f5ffd5b5f5f60208385031215612199575f5ffd5b823567ffffffffffffffff8111156121af575f5ffd5b6121bb8582860161214a565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61222560208301846121c7565b9392505050565b5f5f5f5f5f5f60608789031215612241575f5ffd5b863567ffffffffffffffff811115612257575f5ffd5b61226389828a0161214a565b909750955050602087013567ffffffffffffffff811115612282575f5ffd5b61228e89828a0161214a565b909550935050604087013567ffffffffffffffff8111156122ad575f5ffd5b6122b989828a0161214a565b979a9699509497509295939492505050565b600181811c908216806122df57607f821691505b602082108103612316577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6080810181835f5b6004811015612370578151835260209283019290910190600101612351565b50505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156102d3576102d3612379565b5f81518060208