0 txs
0 calls
constructor
constructor(address[] auxPolynomials, address oodsContract, address memoryPageFactRegistry_, address merkleStatementContractAddress, address friStatementContractAddress, uint256 numSecurityBits_, uint256 minProofOfWorkBits_)
functions
getLayoutInfo
purefunction getLayoutInfo() pure returns (uint256 publicMemoryOffset, uint256 selectedBuiltins)
PAGE_INFO_ADDRESS_OFFSET
viewfunction PAGE_INFO_ADDRESS_OFFSET() view returns (uint256)
PAGE_INFO_HASH_OFFSET
viewfunction PAGE_INFO_HASH_OFFSET() view returns (uint256)
PAGE_INFO_SIZE_IN_BYTES
viewfunction PAGE_INFO_SIZE_IN_BYTES() view returns (uint256)
PAGE_INFO_SIZE_OFFSET
viewfunction PAGE_INFO_SIZE_OFFSET() view returns (uint256)
PAGE_INFO_SIZE
viewfunction PAGE_INFO_SIZE() view returns (uint256)
verifyProofExternal
nonpayablefunction verifyProofExternal(uint256[] proofParams, uint256[] proof, uint256[] publicInput)
events
LogBool
event LogBool(bool val)
LogDebug
event LogDebug(uint256 val)
LogGas
event LogGas(string name, uint256 val)
LogValue
event LogValue(bytes32 val)
ReadFieldElementEvent
event ReadFieldElementEvent(uint256 val)
ReadHashEvent
event ReadHashEvent(bytes32 val)
SendRandomnessEvent
event SendRandomnessEvent(uint256 val)
errors
No errors.
creation bytecode
0x60c06040523480156200001157600080fd5b506040516200514838038062005148833981810160405260e08110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82518660208202830111640100000000821117156200008c57600080fd5b82525081516020918201928201910280838360005b83811015620000bb578181015183820152602001620000a1565b50505050919091016040908152602083015190830151606084015160808086015160a08088015160c09098015192889052829052600080546001600160a01b0319166001600160a01b0387161781558a51959950939750919591945090929091849186918a918a918a91889188918691906200013357fe5b6020908102919091010151600a80546001600160a01b0319166001600160a01b039092169190911790556200016885620001b9565b5050600b80546001600160a01b03199081166001600160a01b0393841617909155600c8054821695831695909517909455600d805490941694169390931790915550620003d8975050505050505050565b80600181518110620001c757fe5b6020026020010151600160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806002815181106200020357fe5b6020026020010151600260006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806003815181106200023f57fe5b6020026020010151600360006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806004815181106200027b57fe5b6020026020010151600460006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600581518110620002b757fe5b6020026020010151600560006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600681518110620002f357fe5b6020026020010151600660006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806007815181106200032f57fe5b6020026020010151600760006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806008815181106200036b57fe5b6020026020010151600860006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600981518110620003a757fe5b6020026020010151600960006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050565b60805160a051614d4762000401600039806107a152508061081a5280610c085250614d476000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635b4c41c21161005b5780635b4c41c2146101ba5780638080fdfb146101c2578063b7a771f7146101e3578063e5b62b29146101eb5761007d565b80631cb7dd791461008257806329e10520146101985780634c14a6f9146101b2575b600080fd5b6101966004803603606081101561009857600080fd5b8101906020810181356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460208302840111640100000000831117156100e757600080fd5b91939092909160208101903564010000000081111561010557600080fd5b82018360208201111561011757600080fd5b8035906020019184602083028401116401000000008311171561013957600080fd5b91939092909160208101903564010000000081111561015757600080fd5b82018360208201111561016957600080fd5b8035906020019184602083028401116401000000008311171561018b57600080fd5b5090925090506101f3565b005b6101a0610299565b60408051918252519081900360200190f35b6101a061029e565b6101a06102a3565b6101ca6102a8565b6040805192835260208301919091528051918290030190f35b6101a06102b0565b6101a06102b5565b61029186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020808a02828101820190935289825290935089925088918291850190849080828437600092019190915250506040805160208089028281018201909352888252909350889250879182918501908490808284376000920191909152506102ba92505050565b505050505050565b600281565b600381565b600181565b60199060bf90565b606081565b600081565b60606102c68285610567565b905060006102d382610d9a565b90506102f0816102e286610da1565b6102eb86610da4565b610ddd565b6102fb816001610dfa565b60001c8260068151811061030b57fe5b60200260200101818152505061031f610e0f565b1561036d5761034681610330610e20565b6103418561033c610e25565b610e2b565b610ead565b610351816001610dfa565b82518390600790811061036057fe5b6020026020010181815250505b61037f8160016103418561016f610e2b565b61038a816001610dfa565b60001c8260088151811061039a57fe5b6020026020010181815250506103b881600161034185610168610e2b565b60006103c2610fcb565b9050805b6103ce610fd1565b8201811015610401576103e2836001610fd7565b8482815181106103ee57fe5b60209081029190910101526001016103c6565b5061040b83610fec565b61041d826001610341866102b1610e2b565b610428826001610dfa565b60001c836101318151811061043957fe5b6020026020010181815250506000610450846111d3565b519050600061046185610127610e2b565b905060015b600183038110156104b357610482856001836020028501610ead565b61048d856001610dfa565b60001c868261013101815181106104a057fe5b6020908102919091010152600101610466565b506104c8846001610341886101268701610e2b565b6104d1856111eb565b6104ef84866003815181106104e257fe5b6020026020010151611336565b610532848660098151811061050057fe5b602002602001015160018860008151811061051757fe5b60200260200101510361052b89606d610e2b565b606061142b565b8560098151811061053f57fe5b60200260200101818152505061055485611591565b61055d856116b5565b5050505050505050565b606060058251116105d957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e76616c69642070726f6f66506172616d732e000000000000000000000000604482015290519081900360640190fd5b816004815181106105e657fe5b602002602001015160050182511461065f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e76616c69642070726f6f66506172616d732e000000000000000000000000604482015290519081900360640190fd5b60008260018151811061066e57fe5b6020026020010151905060108111156106d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614c6a6022913960400191505060405180910390fd5b600181101561072c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614beb6022913960400191505060405180910390fd5b60008360028151811061073b57fe5b60200260200101519050603281111561079f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614cbe6022913960400191505060405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811015610818576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614c0d6025913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008110610890576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806149c16026913960400191505060405180910390fd5b60008460038151811061089f57fe5b60200260200101519050600a811115610903576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180614a2f602b913960400191505060405180910390fd5b60008560048151811061091257fe5b60200260200101519050600a81111561098c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f546f6f206d616e79206672692073746570732e00000000000000000000000000604482015290519081900360640190fd5b600181116109fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4e6f7420656e6f756768206672692073746570732e0000000000000000000000604482015290519081900360640190fd5b60608167ffffffffffffffff81118015610a1457600080fd5b50604051908082528060200260200182016040528015610a3e578160200160208202803683370190505b50905060005b82811015610a8257878160050181518110610a5b57fe5b6020026020010151828281518110610a6f57fe5b6020908102919091010152600101610a44565b506000610a8e896116c1565b9097509050610a9e828286611e68565b6000610aac88610126610e2b565b90508281528460020a8861013b81518110610ac357fe5b6020026020010181815250508160020a8861014681518110610ae157fe5b6020026020010181815250508660020a88600181518110610afe57fe5b6020026020010181815250508588600381518110610b1857fe5b602002602001018181525050600089600081518110610b3357fe5b6020026020010151905060008111610b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180614ace6026913960400191505060405180910390fd5b6030811115610c0657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f546f6f206d616e7920717565726965732e000000000000000000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000087898302011015610c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180614b736032913960400191505060405180910390fd5b8089600981518110610c9157fe5b60200260200101818152505087830189600281518110610cad57fe5b60200260200101818152505088600281518110610cc657fe5b602002602001015160020a89600081518110610cde57fe5b6020026020010181815250506000610d3760038b600081518110610cfe57fe5b602002602001015160017f08000000000000110000000000000000000000000000000000000000000000010381610d3157fe5b0461201d565b9050808a600481518110610d4757fe5b602002602001018181525050610d71818b600181518110610d6457fe5b602002602001015161201d565b8a61016781518110610d7f57fe5b60200260200101818152505050505050505050505092915050565b6101600190565b90565b60008082601981518110610db457fe5b602002602001015190506000610dcb600083612051565b60209081029401939093209392505050565b602082018352610df5610def8461206c565b82612072565b505050565b600080610e07848461207e565b949350505050565b600080610e1a6120b8565b11905090565b600690565b61016990565b6000806104f58310610e9e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4f766572666c6f772070726f74656374696f6e206661696c6564000000000000604482015290519081900360640190fd5b50506020908102919091010190565b63010000008210610f1f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4f766572666c6f772070726f74656374696f6e206661696c65642e0000000000604482015290519081900360640190fd5b7ff80000000000020f00000000000000000000000000000000000000000000001f60208401604085016020850284015b80851015610fc257835b848110610f7157506040832082516001018352610f59565b7f08000000000000110000000000000000000000000000000000000000000000017e400000000000011000000000000121000000000000000000000000000000008209865250602085019450610f4f565b50505050505050565b61017090565b61011190565b600080610e07610fe7858561207e565b6120bd565b610ff581612108565b806101698151811061100357fe5b60200260200101518161014d8151811061101957fe5b602002602001018181525050806101696001018151811061103657fe5b60200260200101518161014e8151811061104c57fe5b602002602001018181525050806101696002018151811061106957fe5b6020026020010151816101508151811061107f57fe5b6020026020010181815250506000611096826123ad565b9050808261014f815181106110a757fe5b602002602001018181525050506110bd816125f0565b600a5460405160009173ffffffffffffffffffffffffffffffffffffffff16906127c0906128409060208183888601877ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa61111d573d6000803e3d6000fd5b805194505060006111798661027f8151811061113557fe5b6020026020010151611174886101688151811061114e57fe5b60200260200101518961027f6001018151811061116757fe5b6020026020010151612df7565b612e24565b9050808514610291576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806149e76027913960400191505060405180910390fd5b606060006111e383610126610e2b565b519392505050565b6000600a905060008261013b8151811061120157fe5b60200260200101519050600080600090507f08000000000000110000000000000000000000000000000000000000000000006020850260208701018051935060208502808501855b8181101561126257805185109590951794602001611249565b50602083810180516001017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe089019081529390910190922090915260006040830152905250801561131457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c6964206669656c6420656c656d656e742e00000000000000000000604482015290519081900360640190fd5b818561013c8151811061132357fe5b6020026020010181815250505050505050565b8061134057611427565b60007f0123456789abcded00000000000000000000000000000000000000000000000060005260208301518060085282602853602960002060005283518051602052602860002092506001820160005260286000206020860152600060408601526008810185525050600082610100036001901b905080821061142457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f50726f6f66206f6620776f726b20636865636b206661696c65642e0000000000604482015290519081900360640190fd5b50505b5050565b60006801000000000000000084106114a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f6d61736b206d757374206265203c20322a2a36342e0000000000000000000000604482015290519081900360640190fd5b60008084815b8881101561157757826114d0576114c86114c38b61206c565b612e51565b935061010092505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092019183831c8816827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b8982111561154357508781035180831061153657611543565b808252888203915061151d565b808314611556578282529388019361156c565b5b8482101561156c578189018051909252611557565b5050506001016114aa565b50848682038161158357fe5b049998505050505050505050565b61159a81612e87565b6115d7816115a6613074565b6115ae613079565b6115ba856102b2610e2b565b856006815181106115c757fe5b602002602001015160001b61307e565b6115df610e0f565b1561161d5761161d816115f0613074565b6115f86120b8565b61160d85611604613079565b6102b201610e2b565b856006600101815181106115c757fe5b61164a816116296131ef565b6116316131ef565b61163d85610492610e2b565b856008815181106115c757fe5b6000805473ffffffffffffffffffffffffffffffffffffffff169061167083606d610e2b565b8351909150611200908190839060010160200286867ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa611424573d6000803e3d6000fd5b6116be816131f4565b50565b60606000601a8351101561173657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f7075626c6963496e70757420697320746f6f2073686f72742e00000000000000604482015290519081900360640190fd5b604080516104f5808252619ec082019092529060208201619ea08036833701905050915062010000826101478151811061176c57fe5b602002602001018181525050618000826101488151811061178957fe5b6020026020010181815250506000836001815181106117a457fe5b602002602001015190506032811061181d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e756d626572206f6620737465707320697320746f6f206c617267652e000000604482015290519081900360640190fd5b80836104f28151811061182c57fe5b6020026020010181815250506004810191508360028151811061184b57fe5b6020026020010151836101528151811061186157fe5b6020026020010181815250508360038151811061187a57fe5b6020026020010151836101538151811061189057fe5b60200260200101818152505082610153815181106118aa57fe5b602002602001015183610152815181106118c057fe5b6020026020010151111561193557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f72635f6d696e206d757374206265203c3d2072635f6d61780000000000000000604482015290519081900360640190fd5b826101478151811061194357fe5b6020026020010151836101538151811061195957fe5b6020026020010151106119cd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f72635f6d6178206f7574206f662072616e676500000000000000000000000000604482015290519081900360640190fd5b67737461726b6e6574846004815181106119e357fe5b602002602001015114611a5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4c61796f757420636f6465206d69736d617463682e0000000000000000000000604482015290519081900360640190fd5b83600581518110611a6457fe5b60200260200101518361014a81518110611a7a57fe5b60200260200101818152505083600681518110611a9357fe5b60200260200101518361014c81518110611aa957fe5b60200260200101818152505060018361014a81518110611ac557fe5b602002602001015114611b3957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e76616c696420696e697469616c2070630000000000000000000000000000604482015290519081900360640190fd5b60016004018361014c81518110611b4c57fe5b602002602001015114611bc057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e76616c69642066696e616c20706300000000000000000000000000000000604482015290519081900360640190fd5b83600781518110611bcd57fe5b60200260200101518361014981518110611be357fe5b60200260200101818152505083600881518110611bfc57fe5b60200260200101518361014b81518110611c1257fe5b602002602001018181525050600184601981518110611c2d57fe5b602002602001015110158015611c595750620186a084601981518110611c4f57fe5b6020026020010151105b611cc457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f496e76616c6964206e756d626572206f66206d656d6f72792070616765732e00604482015290519081900360640190fd5b83601981518110611cd157fe5b6020026020010151836104f481518110611ce757fe5b6020026020010181815250506000805b846104f481518110611d0557fe5b6020026020010151811015611d9d57600086611d20836136eb565b81518110611d2a57fe5b6020026020010151905063400000008110611d90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180614aa3602b913960400191505060405180910390fd5b9190910190600101611cf7565b5080846104f381518110611dad57fe5b602002602001018181525050506000611dda846104f481518110611dcd57fe5b6020026020010151613705565b905084518114611e4b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5075626c696320696e707574206c656e677468206d69736d617463682e000000604482015290519081900360640190fd5b6020850160c08501526005611e60858761371d565b505050915091565b82600081518110611e7557fe5b6020026020010151600014611ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614ba56025913960400191505060405180910390fd5b8251819060015b81811015611fbd576000868281518110611ef257fe5b602002602001015190506002811015611f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614bca6021913960400191505060405180910390fd5b6004811115611fb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614a0e6021913960400191505060405180910390fd5b9290920191600101611edc565b50838214612016576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180614b206024913960400191505060405180910390fd5b5050505050565b600061204a83837f0800000000000011000000000000000000000000000000000000000000000001613d9f565b9392505050565b600082600183600302612062613dda565b0103019392505050565b60200190565b61142782826000613ddf565b81518051602082018452600091908315610e0757602085016020810160018251018252828152604082208252600081525050949350505050565b600190565b60007f08000000000000110000000000000000000000000000000000000000000000017e40000000000001100000000000012100000000000000000000000000000000830992915050565b6000816104f48151811061211857fe5b6020026020010151905060005b81811015610df557600061213882613dea565b6020028460058151811061214857fe5b60200260200101510190506000806121608486612051565b6020028660058151811061217057fe5b6020026020010151019050600080612187866136eb565b6020028860058151811061219757fe5b602002602001015101905060008151905083519250855194506000808811156121e65760006121c589613dfc565b6020028b6005815181106121d557fe5b602002602001015101905080519150505b600088156121f55760016121f8565b60005b7f0800000000000011000000000000000000000000000000000000000000000001848d6101698151811061222857fe5b60200260200101518e6101696001018151811061224157fe5b6020026020010151898c886040516020018089815260200188815260200187815260200186815260200185815260200184815260200183815260200182815260200198505050505050505050604051602081830303815290604052805190602001209050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636a938567826040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561231857600080fd5b505afa15801561232c573d6000803e3d6000fd5b505050506040513d602081101561234257600080fd5b5051612399576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180614a5a6024913960400191505060405180910390fd5b505060019096019550612125945050505050565b600080826104f3815181106123be57fe5b6020026020010151905060008361014d815181106123d857fe5b6020026020010151905060008461014e815181106123f257fe5b60200260200101519050600061241e866101468151811061240f57fe5b60200260200101516008613e68565b90506301000000841061249257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4f766572666c6f772070726f74656374696f6e206661696c65642e0000000000604482015290519081900360640190fd5b808411156124eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180614b44602f913960400191505060405180910390fd5b6000866104f4815181106124fb57fe5b602002602001015190506000612512600083612051565b6020028860058151811061252257fe5b6020026020010151019050600061255a82847f0800000000000011000000000000000000000000000000000000000000000001613f49565b905060008960058151811061256b57fe5b60209081029190910101516102e081015161030082015191925090600061259683611174848c612df7565b905060006125af6125a78c84613f73565b8d8b0361201d565b90506125bb8682612df7565b955060006125c98c8b61201d565b90506125dd816125d889613fc2565b612df7565b9f9e505050505050505050505050505050565b6000816101688151811061260057fe5b602002602001015190506000826104f28151811061261a57fe5b602002602001015160020a90506000612637826001602002613e68565b90506000612645848361201d565b600154604080517f5ed86d5c00000000000000000000000000000000000000000000000000000000815260048101849052905192935073ffffffffffffffffffffffffffffffffffffffff90911691635ed86d5c91602480820192602092909190829003018186803b1580156126ba57600080fd5b505afa1580156126ce573d6000803e3d6000fd5b505050506040513d60208110156126e457600080fd5b50518551869061013d9081106126f657fe5b602090810291909101810191909152600254604080517f5ed86d5c00000000000000000000000000000000000000000000000000000000815260048101859052905173ffffffffffffffffffffffffffffffffffffffff90921692635ed86d5c92602480840193829003018186803b15801561277157600080fd5b505afa158015612785573d6000803e3d6000fd5b505050506040513d602081101561279b57600080fd5b50518551869061013e9081106127ad57fe5b60200260200101818152505060006127e2866104f2815181106127cc57fe5b602002602001015160020a600161080002613e68565b905060006127f0868361201d565b600354604080517f5ed86d5c00000000000000000000000000000000000000000000000000000000815260048101849052905192935073ffffffffffffffffffffffffffffffffffffffff90911691635ed86d5c91602480820192602092909190829003018186803b15801561286557600080fd5b505afa158015612879573d6000803e3d6000fd5b505050506040513d602081101561288f57600080fd5b50518751889061013f9081106128a157fe5b60209081029190910181019190915260048054604080517f5ed86d5c0000000000000000000000000000000000000000000000000000000081529283018590525173ffffffffffffffffffffffffffffffffffffffff90911692635ed86d5c9260248082019391829003018186803b15801561291c57600080fd5b505afa158015612930573d6000803e3d6000fd5b505050506040513d602081101561294657600080fd5b50518751889061014090811061295857fe5b602002602001018181525050866101696003018151811061297557fe5b6020026020010151876101548151811061298b57fe5b60200260200101818152505086610169600401815181106129a857fe5b602002602001015187610157815181106129be57fe5b60200260200101818152505086610169600501815181106129db57fe5b602002602001015187610158815181106129f157fe5b602002602001018181525050612a0687614015565b8761015981518110612a1457fe5b6020026020010181815250506000612a45886104f281518110612a3357fe5b602002602001015160020a6020613e68565b90506000612a53888361201d565b600554604080517f5ed86d5c00000000000000000000000000000000000000000000000000000000815260048101849052905192935073ffffffffffffffffffffffffffffffffffffffff90911691635ed86d5c91602480820192602092909190829003018186803b158015612ac857600080fd5b505afa158015612adc573d6000803e3d6000fd5b505050506040513d6020811015612af257600080fd5b505189518a90610141908110612b0457fe5b602090810291909101810191909152600654604080517f5ed86d5c00000000000000000000000000000000000000000000000000000000815260048101859052905173ffffffffffffffffffffffffffffffffffffffff90921692635ed86d5c92602480840193829003018186803b158015612b7f57600080fd5b505afa158015612b93573d6000803e3d6000fd5b505050506040513d6020811015612ba957600080fd5b505189518a90610142908110612bbb57fe5b602090810291909101810191909152600754604080517f5ed86d5c00000000000000000000000000000000000000000000000000000000815260048101859052905173ffffffffffffffffffffffffffffffffffffffff90921692635ed86d5c92602480840193829003018186803b158015612c3657600080fd5b505afa158015612c4a573d6000803e3d6000fd5b505050506040513d6020811015612c6057600080fd5b505189518a90610143908110612c7257fe5b602090810291909101810191909152600854604080517f5ed86d5c00000000000000000000000000000000000000000000000000000000815260048101859052905173ffffffffffffffffffffffffffffffffffffffff90921692635ed86d5c92602480840193829003018186803b158015612ced57600080fd5b505afa158015612d01573d6000803e3d6000fd5b505050506040513d6020811015612d1757600080fd5b505189518a90610144908110612d2957fe5b602090810291909101810191909152600954604080517f5ed86d5c00000000000000000000000000000000000000000000000000000000815260048101859052905173ffffffffffffffffffffffffffffffffffffffff90921692635ed86d5c92602480840193829003018186803b158015612da457600080fd5b505afa158015612db8573d6000803e3d6000fd5b505050506040513d6020811015612dce57600080fd5b505189518a90610145908110612de057fe5b602002602001018181525050505050505050505050565b60007f08000000000000110000000000000000000000000000000000000000000000018284099392505050565b60007f08000000000000110000000000000000000000000000000000000000000000018284089392505050565b6000806000612e5f846141cc565b9092509050612e6e82826141d8565b94509092509050612e80848383613ddf565b5050919050565b600081600981518110612e9657fe5b602002602001015190506000612ead83606d610e2b565b90506060820281016000612ec385610281610e2b565b9050600085600281518110612ed457fe5b60200260200101519050600086600081518110612eed57fe5b60200260200101519050600087600481518110612f0657fe5b6020026020010151905061301d565b600081905067aaaaaaaaaaaaaaaa8116675555555555555555821660021b179050680199999999999999988116676666666666666666821660041b179050680787878787878787808116677878787878787878821660081b179050687f807f807f807f80008116677f807f807f807f80821660101b179050697fff80007fff800000008116677fff80007fff8000821660201b1790506b7fffffff80000000000000008116677fffffff80000000821660401b1790508083607f031c905092915050565b600060405160208152602080820152602060408201528260608201528360808201528460a082015260208160c08360055afa61301457600080fd5b51949350505050565b8486101561055d57855182810187526130607f080000000000001100000000000000000000000000000000000000000000000161305a8684612f15565b84612fd9565b85525060208401935060608601955061301d565b600a90565b600990565b6130866131ef565b61308e613074565b018311156130fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f546f6f206d616e7920636f6c756d6e732e000000000000000000000000000000604482015290519081900360640190fd5b60008560098151811061310c57fe5b60200260200101519050600061312387600a610e2b565b9050600061313288606d610e2b565b905060608302810160006131478a600d610e2b565b84519091506020808a02918a8c0390910290835b858710156131d1577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000848320166020851415613195575081515b8751825260208201526040018184015b808310156131c05782518c5260209b8c019b909201916131a5565b50828b019a5060608701965061315b565b5086526131e086848a8a61420b565b50505050505050505050505050565b600290565b60006131ff82610d9a565b905060008260098151811061321057fe5b6020026020010151905060005b818110156132935761326b8482600302606d016001018151811061323d57fe5b60200260200101517f07fffffffffffdf0ffffffffffffffffffffffffffffffffffffffffffffffe1612df7565b8482600302606d016001018151811061328057fe5b602090810291909101015260010161321d565b5060006132a184606d610e2b565b606083810282209192506132b4866111d3565b80519091507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101906001906000908490839081106132ef57fe5b602002602001015190506133016149a2565b8383101561350d5760006133168a600161207e565b60001c90508a84610127018151811061332b57fe5b60200260200101518260006005811061334057fe5b6020020152855186908590811061335357fe5b60200260200101518260016005811061336857fe5b602002015260408201879052606082018190528a518b90610130860190811061338d57fe5b6020026020010151826004600581106133a257fe5b60209081029190910191909152600d5460405173ffffffffffffffffffffffffffffffffffffffff90911691636a93856791859101808260a080838360005b838110156133f95781810151838201526020016133e1565b50505050905001915050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561344d57600080fd5b505afa158015613461573d6000803e3d6000fd5b505050506040513d602081101561347757600080fd5b50516134e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f494e56414c4944415445445f4652495f53544154454d454e5400000000000000604482015290519081900360640190fd5b80965083806001019450508584815181106134fb57fe5b60200260200101518301925050613301565b8983610127018151811061351d57fe5b60200260200101518160006005811061353257fe5b6020020152845185908490811061354557fe5b60200260200101518160016005811061355a57fe5b6020020152604081018690526135718a8984614222565b606082015289518a90610130850190811061358857fe5b60200260200101518160046005811061359d57fe5b60209081029190910191909152600d5460405173ffffffffffffffffffffffffffffffffffffffff90911691636a93856791849101808260a080838360005b838110156135f45781810151838201526020016135dc565b50505050905001915050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561364857600080fd5b505afa15801561365c573d6000803e3d6000fd5b505050506040513d602081101561367257600080fd5b50516136df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f494e56414c4944415445445f4652495f53544154454d454e5400000000000000604482015290519081900360640190fd5b50505050505050505050565b6000600180836003026136fc613dda565b01030192915050565b6000600160048302613715613dda565b010392915050565b60008160098151811061372c57fe5b60200260200101519050600082600a8151811061374557fe5b60200260200101519050808211156137a8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180614a7e6025913960400191505060405180910390fd5b68010000000000000000811061381f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f7574206f662072616e6765206f75747075742073746f705f7074722e000000604482015290519081900360640190fd5b6000846104f28151811061382f57fe5b602002602001015160020a905083600b8151811061384957fe5b60200260200101518561015c8151811061385f57fe5b6020026020010181815250506138d98561015c8151811061387c57fe5b602002602001015185600c8151811061389157fe5b602002602001015160206003856040518060400160405280600881526020017f706564657273656e000000000000000000000000000000000000000000000000815250614396565b7f049ee3eba8c1600700ee1b87eb599f16716b0b1022947733551fde4050ca68048561015a8151811061390857fe5b6020026020010181815250507f03ca0cfe4b3bc6ddf346d49d06ea0ed34e621062c0e056c1d0405d266e10268a8561015b8151811061394357fe5b60200260200101818152505083600d8151811061395c57fe5b60200260200101518561015d8151811061397257fe5b6020026020010181815250506139ec8561015d8151811061398f57fe5b602002602001015185600e815181106139a457fe5b602002602001015160106001856040518060400160405280600b81526020017f72616e67655f636865636b000000000000000000000000000000000000000000815250614396565b600185610151815181106139fc57fe5b60200260200101818152505083600f81518110613a1557fe5b60200260200101518561016281518110613a2b57fe5b602002602001018181525050613aa68561016281518110613a4857fe5b602002602001015185601081518110613a5d57fe5b60200260200101516108006002856040518060400160405280600581526020017f6563647361000000000000000000000000000000000000000000000000000000815250614396565b60018561015e81518110613ab657fe5b6020026020010181815250507f06f21413efbe40de150e596d72f7a8c5609ad26c15c915c1f4cdfcb99cee9e898561016181518110613af157fe5b6020026020010181815250507f049ee3eba8c1600700ee1b87eb599f16716b0b1022947733551fde4050ca68048561015f81518110613b2c57fe5b6020026020010181815250507f03ca0cfe4b3bc6ddf346d49d06ea0ed34e621062c0e056c1d0405d266e10268a8561016081518110613b6757fe5b60200260200101818152505083601181518110613b8057fe5b60200260200101518561016381518110613b9657fe5b602002602001018181525050613c108561016381518110613bb357fe5b602002602001015185601281518110613bc857fe5b602002602001015160406005856040518060400160405280600781526020017f6269747769736500000000000000000000000000000000000000000000000000815250614396565b60018561015581518110613c2057fe5b60200260200101818152505060008561015681518110613c3c57fe5b60200260200101818152505083601381518110613c5557fe5b60200260200101518561016481518110613c6b57fe5b602002602001018181525050613ce68561016481518110613c8857fe5b602002602001015185601481518110613c9d57fe5b60200260200101516104006007856040518060400160405280600581526020017f65635f6f70000000000000000000000000000000000000000000000000000000815250614396565b60018561016581518110613cf657fe5b60200260200101818152505083601581518110613d0f57fe5b60200260200101518561016681518110613d2557fe5b6020026020010181815250506120168561016681518110613d4257fe5b602002602001015185601681518110613d5757fe5b602002602001015160206006856040518060400160405280600881526020017f706f736569646f6e000000000000000000000000000000000000000000000000815250614396565b600060405160208152602080820152602060408201528460608201528360808201528260a082015260208160c08360055afa61301457600080fd5b601a90565b908252602090910152565b600060026001836003026136fc613dda565b60006001821015613e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180614c8c6032913960400191505060405180910390fd5b60006001836003026136fc613dda565b6000808211613ed857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5468652064656e6f6d696e61746f72206d757374206e6f74206265207a65726f604482015290519081900360640190fd5b818381613ee157fe5b0615613f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180614ce06032913960400191505060405180910390fd5b818381613f4157fe5b049392505050565b6001602083028401845b81811015613f6a5783815184099250602001613f53565b50509392505050565b60007f0800000000000011000000000000000000000000000000000000000000000001827f08000000000000110000000000000000000000000000000000000000000000010384089392505050565b600061400f827f0800000000000010ffffffffffffffffffffffffffffffffffffffffffffffff7f0800000000000011000000000000000000000000000000000000000000000001613d9f565b92915050565b600080826101578151811061402657fe5b602002602001015190506000836101588151811061404057fe5b602090810291909101015190506010600e60018481019080805b6010811015614197577f080000000000001100000000000000000000000000000000000000000000000185830891507f080000000000001100000000000000000000000000000000000000000000000186860994507f08000000000000110000000000000000000000000000000000000000000000018483097f0800000000000011000000000000000000000000000000000000000000000001818a0985017f0800000000000011000000000000000000000000000000000000000000000001857f08000000000000110000000000000000000000000000000000000000000000018487097f0800000000000011000000000000000000000000000000000000000000000001848909010894507f08000000000000110000000000000000000000000000000000000000000000018187099550505060010161405a565b507f08000000000000110000000000000000000000000000000000000000000000018087840984089998505050505050505050565b80516020820151915091565b60408051602080820185905281830184905282518083038401815260609092019092528051910120919260019091019190565b600061421985858585614678565b95945050505050565b6000808461013b8151811061423357fe5b60200260200101519050600060018660018151811061424e57fe5b602002602001015183020390506000846001901b905060008060008961013c8151811061427757fe5b6020026020010151905060005b89811015614371576000898c83600302606d01815181106142a157fe5b6020026020010151901c9050838114156142bb5750614369565b808c86600302606d01815181106142ce57fe5b60200260200101818152505080935060006143058d84600302606d01600201815181106142f757fe5b60200260200101518861201d565b9050808d87600302606d016002018151811061431d57fe5b602002602001018181525050614333818961201d565b905061434084828b614834565b8d87600302606d016001018151811061435557fe5b602090810291909101015250506001909301925b600101614284565b50600061437f8b606d610e2b565b6060949094029093209a9950505050505050505050565b6801000000000000000086108160405160200180807f4f7574206f662072616e67652000000000000000000000000000000000000000815250600d0182805190602001908083835b6020831061441b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016143de565b6001836020036101000a038019825116818451168082178552505050505050905001807f20626567696e5f616464722e0000000000000000000000000000000000000000815250600c019150506040516020818303038152906040529061451a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156144df5781810151838201526020016144c7565b50505050905090810190601f16801561450c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060006145278386613e68565b84028701905085871115801561453d5750808611155b8260405160200180807f496e76616c69642000000000000000000000000000000000000000000000000081525060080182805190602001908083835b602083106145b657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101614579565b6001836020036101000a038019825116818451168082178552505050505050905001807f2073746f705f7074722e00000000000000000000000000000000000000000000815250600a019150506040516020818303038152906040529061055d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156144df5781810151838201526020016144c7565b60008060808311156146eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f544f4f5f4d414e595f4d45524b4c455f51554552494553000000000000000000604482015290519081900360640190fd5b604051806040850287015b808810156147115787518252602097880197909101906146f6565b50858152602080820160408181528484038301909420600c547f6a9385670000000000000000000000000000000000000000000000000000000090925260248401819052935193945073ffffffffffffffffffffffffffffffffffffffff1692636a938567926044808201939291829003018186803b15801561479357600080fd5b505afa1580156147a7573d6000803e3d6000fd5b505050506040513d60208110156147bd57600080fd5b505161482a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f494e56414c4944415445445f4d45524b4c455f53544154454d454e5400000000604482015290519081900360640190fd5b5091949350505050565b6000807f080000000000001100000000000000000000000000000000000000000000000160088406156148b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180614c326038913960400191505060405180910390fd5b611000841061490c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614af4602c913960400191505060405180910390fd5b6020840286015b8681111561498d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000181868181818181818a0960e0880151010960c0860151010960a08401510109608082015101925081868388858a878c8a096060880151010960408601510109602084015101098151019250614913565b5080828161499757fe5b069695505050505050565b6040518060a00160405280600590602082028036833750919291505056fe50726f6f6673206d6179206e6f7420626520707572656c79206261736564206f6e20506f572e636c61696d6564436f6d706f736974696f6e20646f6573206e6f74206d617463682074726163654d617820737570706f727465642066726920737465702073697a6520697320342e6c6f674672694c6173744c61796572446567426f756e64206d757374206265206174206d6f73742031302e4d656d6f72792070616765206661637420776173206e6f7420726567697374657265642e6f757470757420626567696e5f61646472206d757374206265203c3d2073746f705f707472546f6f206d616e79207075626c6963206d656d6f727920656e747269657320696e206f6e6520706167652e4e756d626572206f662071756572696573206d757374206265206174206c65617374206f6e654e6f206d6f7265207468616e203430393620636f656666696369656e74732061726520737570706f7274656446726920706172616d7320646f206e6f74206d61746368207472616365206c656e6774684e756d626572206f662076616c756573206f66207075626c6963206d656d6f727920697320746f6f206c617267652e50726f6f6620706172616d7320646f206e6f74207361746973667920736563757269747920726571756972656d656e74732e4f6e6c792065746130203d3d20302069732063757272656e746c7920737570706f727465644d696e20737570706f727465642066726920737465702073697a6520697320322e6c6f67426c6f777570466163746f72206d757374206265206174206c6561737420316d696e696d756d2070726f6f664f66576f726b42697473206e6f74207361746973666965644e756d626572206f6620706f6c796e6f6d69616c20636f656666696369656e7473206d75737420626520646976697369626c6520627920386c6f67426c6f777570466163746f72206d757374206265206174206d6f737420313641646472657373206f6620706167652030206973206e6f742070617274206f6620746865207075626c696320696e7075742e70726f6f664f66576f726b42697473206d757374206265206174206d6f7374203530546865206e756d657261746f72206973206e6f7420646976697369626c65206279207468652064656e6f6d696e61746f722ea26469706673582212207f8499668b7d8c05fd7462d0b7a76137fbf2cefe8fc5d8d51d91fae2e3a4e83c64736f6c634300060c003300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000004742f8723cae9c17cb1d54708898904fb43621c9000000000000000000000000e583bcde0160b637330b27a3ea1f3c02ba2ec46000000000000000000000000032a91ff604ab2adcd832e91d68b2f3f25358fdad00000000000000000000000030efaaa99f8efe310d9fdc83072e2a04c093d40000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000a9bac69dbcc703096ee4db8b6fdb8480a4dc2dae000000000000000000000000047dd4275bbdc1ee6b8bf026239e203c617e86d10000000000000000000000001a6f3bd4e4b80f85a0b1974b73d981f3295899ed00000000000000000000000001228f83c6664a14fc3bb4ea28b7d1a2fc283bf1000000000000000000000000e3929ea107238ce59d64a3ce497f12b57846b716000000000000000000000000c9a02d0d8a88e71cc92417b6011029cf8a44a5400000000000000000000000009d820ba19fbabe91f01413a7a7ae554925cf95fc000000000000000000000000de8d55104abdf18ad2642f45d5bd51eb4f6d41fd000000000000000000000000baec49f8ac145d6b7ce7c7b8ff86b3a158d717ef000000000000000000000000032e5cdb729ce94638aca9e82a22688109b43046