solc-0.8.36-fakeopcode 0x83bc649fcdb2c8da146b2154a559ddedf937ef12 optimized-high-runs

28126 bytes

608060405260043610610508575f3560e01c806353f3fcb11161029f578063c00b2d6111610170578063e4537934116100d1578063f2fde38b11610087578063f3fef3a31161006d578063f3fef3a314611130578063f9609f081461114f578063fc6dfe4e14611162575f5ffd5b8063f2fde38b146110fe578063f340fa011461111d575f5ffd5b8063e9394823116100b7578063e939482314611080578063ee305116146110b3578063f2c5998a146110df575f5ffd5b8063e453793414611018578063e74b981b14611061575f5ffd5b8063d6951aa911610126578063da8ed1f71161010c578063da8ed1f714610fae578063dcbfb6c314610fcd578063de70b59f14610ff9575f5ffd5b8063d6951aa914610f59578063da79205814610f81575f5ffd5b8063c98bea5b11610156578063c98bea5b14610efd578063d0e30db014610f25578063d67b8fee14610f2d575f5ffd5b8063c00b2d6114610eb2578063c00c2d7314610ed1575f5ffd5b80637c8dc4401161021a5780639a8a302b116101d0578063b46a130e116101b6578063b46a130e14610e60578063baaff11614610e7f578063bac1520314610e9e575f5ffd5b80639a8a302b14610e20578063aaf10f4214610e4c575f5ffd5b80638da5cb5b116102005780638da5cb5b14610da9578063917266fa14610dd35780639795947314610df2575f5ffd5b80637c8dc44014610d4e5780637c90fbf014610d6d575f5ffd5b80635c975abb1161026f578063715018a611610255578063715018a614610cdd57806371cb700f14610cf15780637346f1aa14610d1d575f5ffd5b80635c975abb14610c90578063616e6c1b14610cbe575f5ffd5b806353f3fcb114610c065780635460172614610c1f578063561bddf814610c5257806356f1199b14610c71575f5ffd5b806322828cc2116103d95780633a53acb01161035457806346d4b7141161030a5780634f1ef286116102f05780634f1ef28614610bc05780635119970014610bd357806352d1902d14610bf2575f5ffd5b806346d4b71414610b825780634c73f49814610ba1575f5ffd5b8063456a23a61161033a578063456a23a614610b025780634690484014610b2a578063469963aa14610b56575f5ffd5b80633a53acb014610acf578063439766ce14610aee575f5ffd5b80632db004a3116103a95780633659cfe61161038f5780633659cfe614610a7d57806337cfdaca14610a9c578063397a1b2814610ab0575f5ffd5b80632db004a314610a335780633587647614610a5e575f5ffd5b806322828cc21461096c57806326d5d54a1461099857806328a947d9146109f257806328ac82e714610a07575f5ffd5b806310ddce8e1161048357806317e51e80116104395780631aab9ef11161041f5780631aab9ef11461090f5780631e95e60e1461092e5780631ee665c41461094d575f5ffd5b806317e51e80146108c45780631991c225146108f0575f5ffd5b8063158f8f5911610469578063158f8f591461085a5780631665f66d146108795780631729d10b14610898575f5ffd5b806310ddce8e146107cc57806312c53c9b14610829575f5ffd5b806308388426116104d857806308c73259116104be57806308c732591461071c5780630de371e21461076d5780630ea9e85214610799575f5ffd5b806308388426146106df578063086e16c0146106fe575f5ffd5b806303dcfbdc1461061b57806306be9c531461064d5780630716e2421461068057806308061aeb146106a1575f5ffd5b36610617576fffffffffffffffffffffffffffffffff341115610557576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cf80543491905f9061057d9084906fffffffffffffffffffffffffffffffff16615fbc565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055503460cf60108282829054906101000a90046fffffffffffffffffffffffffffffffff166105e09190615fe4565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055005b5f5ffd5b348015610626575f5ffd5b5061063a61063536600461602d565b611190565b6040519081526020015b60405180910390f35b348015610658575f5ffd5b5061063a7fc6ace799356a5a236ccaa6708c68b77b7de838b1700b6e0c40f48a1407a5eef081565b34801561068b575f5ffd5b5061069f61069a3660046160d9565b61128b565b005b3480156106ac575f5ffd5b506106cf6106bb366004616118565b60db6020525f908152604090205460ff1681565b6040519015158152602001610644565b3480156106ea575f5ffd5b5061069f6106f93660046161af565b6113d3565b348015610709575f5ffd5b5061069f6107183660046162cf565b5050565b348015610727575f5ffd5b5060e0546107489073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610644565b348015610778575f5ffd5b5060ce546107489073ffffffffffffffffffffffffffffffffffffffff1681565b3480156107a4575f5ffd5b5061063a7f0e8d94121b3383f03d9ae60b39295aa793469d7230d51a3f62cbf47cd45481d981565b3480156107d7575f5ffd5b5060d4546108089070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff9091168152602001610644565b348015610834575f5ffd5b5060ce546106cf9074010000000000000000000000000000000000000000900460ff1681565b348015610865575f5ffd5b5061069f610874366004616118565b611ae5565b348015610884575f5ffd5b5061069f61089336600461631d565b611d16565b3480156108a3575f5ffd5b5060de546107489073ffffffffffffffffffffffffffffffffffffffff1681565b3480156108cf575f5ffd5b5060dd546107489073ffffffffffffffffffffffffffffffffffffffff1681565b3480156108fb575f5ffd5b5061069f61090a36600461631d565b611dcd565b34801561091a575f5ffd5b5061063a610929366004616338565b611e99565b348015610939575f5ffd5b5061074861094836600461636a565b612097565b348015610958575f5ffd5b5061069f610967366004616381565b6120cc565b348015610977575f5ffd5b5060c9546107489073ffffffffffffffffffffffffffffffffffffffff1681565b3480156109a3575f5ffd5b506109d56109b2366004616404565b60d76020525f908152604090205463ffffffff8082169164010000000090041682565b6040805163ffffffff938416815292909116602083015201610644565b3480156109fd575f5ffd5b5061063a60e15481565b348015610a12575f5ffd5b5060cb546107489073ffffffffffffffffffffffffffffffffffffffff1681565b348015610a3e575f5ffd5b5061063a610a4d36600461636a565b60d86020525f908152604090205481565b348015610a69575f5ffd5b5061069f610a78366004616422565b6121de565b348015610a88575f5ffd5b5061069f610a97366004616118565b61253d565b348015610aa7575f5ffd5b5061063a612741565b348015610abb575f5ffd5b5061063a610aca3660046164b3565b61278f565b348015610ada575f5ffd5b5061063a610ae936600461636a565b61293d565b348015610af9575f5ffd5b5061069f6129fd565b348015610b0d575f5ffd5b5060cf54610808906fffffffffffffffffffffffffffffffff1681565b348015610b35575f5ffd5b5060d0546107489073ffffffffffffffffffffffffffffffffffffffff1681565b348015610b61575f5ffd5b5060ca546107489073ffffffffffffffffffffffffffffffffffffffff1681565b348015610b8d575f5ffd5b5061069f610b9c3660046164dd565b612c3d565b348015610bac575f5ffd5b5061069f610bbb3660046164dd565b612e71565b61069f610bce366004616559565b612fb0565b348015610bde575f5ffd5b5061063a610bed366004616118565b6131a2565b348015610bfd575f5ffd5b5061063a6132f3565b348015610c11575f5ffd5b5060dc546106cf9060ff1681565b348015610c2a575f5ffd5b5061063a7f20e7d93f475a4a8dd621285797dd2d68da59e4450b89aea5ca9bf079e95c1db581565b348015610c5d575f5ffd5b5061063a610c6c36600461636a565b6133de565b348015610c7c575f5ffd5b5061069f610c8b366004616118565b613488565b348015610c9b575f5ffd5b5060dc546106cf9071010000000000000000000000000000000000900460ff1681565b348015610cc9575f5ffd5b5061069f610cd836600461636a565b61368e565b348015610ce8575f5ffd5b5061069f6137d5565b348015610cfc575f5ffd5b5060d2546107489073ffffffffffffffffffffffffffffffffffffffff1681565b348015610d28575f5ffd5b5060d9546106cf9074010000000000000000000000000000000000000000900460ff1681565b348015610d59575f5ffd5b5061069f610d683660046165e6565b6137e8565b348015610d78575f5ffd5b5060cf546108089070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b348015610db4575f5ffd5b5060335473ffffffffffffffffffffffffffffffffffffffff16610748565b348015610dde575f5ffd5b5061063a610ded36600461636a565b6139d8565b348015610dfd575f5ffd5b506106cf610e0c366004616118565b60da6020525f908152604090205460ff1681565b348015610e2b575f5ffd5b5060d1546107489073ffffffffffffffffffffffffffffffffffffffff1681565b348015610e57575f5ffd5b50610748613ab9565b348015610e6b575f5ffd5b5061063a610e7a366004616606565b613afd565b348015610e8a575f5ffd5b5061069f610e99366004616645565b613c07565b348015610ea9575f5ffd5b5061069f613e96565b348015610ebd575f5ffd5b5061069f610ecc36600461668d565b6140bb565b348015610edc575f5ffd5b5060d9546107489073ffffffffffffffffffffffffffffffffffffffff1681565b348015610f08575f5ffd5b5060d5546109d59063ffffffff8082169164010000000090041682565b61063a614239565b348015610f38575f5ffd5b5060cd546107489073ffffffffffffffffffffffffffffffffffffffff1681565b348015610f64575f5ffd5b5060d454610808906fffffffffffffffffffffffffffffffff1681565b348015610f8c575f5ffd5b5060dc546108089061010090046fffffffffffffffffffffffffffffffff1681565b348015610fb9575f5ffd5b5061069f610fc83660046166ba565b614243565b348015610fd8575f5ffd5b5060df546107489073ffffffffffffffffffffffffffffffffffffffff1681565b348015611004575f5ffd5b5061069f611013366004616381565b614360565b348015611023575f5ffd5b5060d05461104c9074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610644565b34801561106c575f5ffd5b5061069f61107b366004616118565b614508565b34801561108b575f5ffd5b506107487f000000000000000000000000000000000000000000000000000000000000000081565b3480156110be575f5ffd5b5060cc546107489073ffffffffffffffffffffffffffffffffffffffff1681565b3480156110ea575f5ffd5b5061069f6110f936600461636a565b614667565b348015611109575f5ffd5b5061069f611118366004616118565b6147a8565b61063a61112b366004616118565b61485c565b34801561113b575f5ffd5b5061063a61114a3660046164b3565b6148cb565b61063a61115d3660046164dd565b614f15565b34801561116d575f5ffd5b506106cf61117c366004616118565b60d66020525f908152604090205460ff1681565b5f611199614ffd565b60ce5473ffffffffffffffffffffffffffffffffffffffff1663d505accf3330853560208701356111d06060890160408a016166d5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff95861660048201529490931660248501526044840191909152606483015260ff166084820152606085013560a4820152608085013560c482015260e4015f604051808303815f87803b158015611265575f5ffd5b505af1925050508015611276575060015b50611281848461278f565b90505b9392505050565b60e0546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0e8d94121b3383f03d9ae60b39295aa793469d7230d51a3f62cbf47cd45481d9600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa15801561131d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134191906166f5565b611377576040517f209296a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b818110156113ce5782828281811061139357611393616710565b905060200201357f339b23d24a078f6403801d644f7cba5045424e28175a49da36de4445b66387da60405160405180910390a2600101611379565b505050565b6113db614ffd565b60e0546040517f91d148540000000000000000000000000000000000000000000000000000000081527fc6ace799356a5a236ccaa6708c68b77b7de838b1700b6e0c40f48a1407a5eef0600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa15801561146d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061149191906166f5565b6114c7576040517f209296a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6801bc16d674ec80000060e15410806114ea5750686f05b59d3b2000000060e154115b15611521576040517ffd08673400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84511580611530575084518314155b8061153c575084518114155b15611573576040517fa9854bc900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60c954604080517f21edd09700000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916321edd097916004808301926020929190829003018187875af11580156115e1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611605919061673d565b60e1546116129190616754565b90505f865167ffffffffffffffff81111561162f5761162f616133565b60405190808252806020026020018201604052801561168a57816020015b611677604051806080016040528060608152602001606081526020015f8152602001606081525090565b81526020019060019003908161164d5790505b5090505f5b8751811015611a385760ca5488515f9173ffffffffffffffffffffffffffffffffffffffff169063b165e295908b90859081106116ce576116ce616710565b60200260200101516040518263ffffffff1660e01b81526004016116f491815260200190565b602060405180830381865afa15801561170f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117339190616767565b90505f8173ffffffffffffffffffffffffffffffffffffffff1663bcbb073a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561177f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a39190616767565b60ca546040517f544b535e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80841660048301529293505f929091169063544b535e906024015f60405180830381865afa158015611815573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261185a9190810190616782565b60c9549091505f9073ffffffffffffffffffffffffffffffffffffffff1663125ae56b8c8c8881811061188f5761188f616710565b90506020028101906118a191906167f7565b8c8c8a8181106118b3576118b3616710565b90506020028101906118c591906167f7565b878d6040518763ffffffff1660e01b81526004016118e8969594939291906168eb565b602060405180830381865afa158015611903573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611927919061673d565b90505f60405180608001604052808d8d8981811061194757611947616710565b905060200281019061195991906167f7565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020018b8b898181106119a4576119a4616710565b90506020028101906119b691906167f7565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250938552505050602080830186905260408051918201815291815291015287519091508190889088908110611a1b57611a1b616710565b60200260200101819052505050505050808060010191505061168f565b505f875183611a479190616939565b9050611a528161507f565b60c95460e1546040517fbaaff11600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163baaff116918491611aad918791600401616950565b5f604051808303818588803b158015611ac4575f5ffd5b505af1158015611ad6573d5f5f3e3d5ffd5b50505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260db602052604090205460ff16611b78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f74207265676973746572656400000000000000000000000000000000000060448201526064015b60405180910390fd5b60e0546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0e8d94121b3383f03d9ae60b39295aa793469d7230d51a3f62cbf47cd45481d9600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa158015611c0a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c2e91906166f5565b611c94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e636f72726563742043616c6c6572000000000000000000000000000000006044820152606401611b6f565b73ffffffffffffffffffffffffffffffffffffffff81165f81815260db602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905590519182527f8a5afe4e68ed1b812242442424ef608ee7b0a23b6111c6183e781ac4656e817391015b60405180910390a150565b60d95473ffffffffffffffffffffffffffffffffffffffff163314611d67576040517f17fe949f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060dc60018282829054906101000a90046fffffffffffffffffffffffffffffffff16611d949190615fe4565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050565b60d95473ffffffffffffffffffffffffffffffffffffffff163314611e1e576040517f17fe949f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040516fffffffffffffffffffffffffffffffff821681527fafea3ee583ed00355634c0a2f47d947b6af95fda2bc1dbe0ff919c45166789d49060200160405180910390a160d0546107189073ffffffffffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff83165f613afd565b5f611ea2614ffd565b60cc5473ffffffffffffffffffffffffffffffffffffffff163314611ef3576040517f17fe949f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611efd8461293d565b90506bffffffffffffffffffffffff841180611f17575083155b80611f20575080155b15611f57576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60d25460ce54611f839173ffffffffffffffffffffffffffffffffffffffff9182169133911687615108565b60d2546040517f19691cb00000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff80871660048301528316602482015273ffffffffffffffffffffffffffffffffffffffff8781166044830152606482018690525f9216906319691cb0906084016020604051808303815f875af1158015612015573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612039919061673d565b90503373ffffffffffffffffffffffffffffffffffffffff167fb9da3f3df62c28aca604806cc6ee9678189d7591ef511a77bb040fa8361e9e028787600260405161208693929190616a5d565b60405180910390a295945050505050565b60d381815481106120a6575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b6120d4614ffd565b335f90815260db602052604090205460ff1661214c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e636f72726563742043616c6c6572000000000000000000000000000000006044820152606401611b6f565b60c9546040517ff8ac387200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063f8ac3872906121aa9088908890889088908890600401616bfb565b5f604051808303815f87803b1580156121c1575f5ffd5b505af11580156121d3573d5f5f3e3d5ffd5b505050505050505050565b5f54610100900460ff16158080156121fc57505f54600160ff909116105b806122155750303b15801561221557505f5460ff166001145b6122a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401611b6f565b5f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156122fd575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff88161580612334575073ffffffffffffffffffffffffffffffffffffffff8716155b80612353575073ffffffffffffffffffffffffffffffffffffffff8616155b80612372575073ffffffffffffffffffffffffffffffffffffffff8516155b80612391575073ffffffffffffffffffffffffffffffffffffffff8416155b156123c8576040517fbaca868900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123d06151a3565b6123d8615241565b60ce80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8b81169190911790925560c9805482168a841617905560ca8054821689841617905560cc8054821688841617905560cd8054821687841617905560dc8054710100000000000000000000000000000000007fffffffffffffffffffffffffffff00000000000000000000000000000000000090911617905560d98054821686841617905560d2805490911691841691909117905560de80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690558015612533575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003612602576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401611b6f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166126777f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff161461271a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401611b6f565b612723816152d7565b604080515f8082526020820190925261273e91839190615350565b50565b60cf545f90612778906fffffffffffffffffffffffffffffffff700100000000000000000000000000000000820481169116615fe4565b6fffffffffffffffffffffffffffffffff16905090565b5f612798614ffd565b5f6127a28361293d565b90506bffffffffffffffffffffffff8311806127bc575082155b806127c5575080155b156127fc576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60d25460ce546128289173ffffffffffffffffffffffffffffffffffffffff9182169133911686615108565b60d2546040517f19691cb00000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff80861660048301528316602482015273ffffffffffffffffffffffffffffffffffffffff86811660448301525f606483018190529216906319691cb0906084016020604051808303815f875af11580156128ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128de919061673d565b90503373ffffffffffffffffffffffffffffffffffffffff167fb9da3f3df62c28aca604806cc6ee9678189d7591ef511a77bb040fa8361e9e028686600160405161292b93929190616a5d565b60405180910390a29150505b92915050565b5f5f612947612741565b9050805f0361295857505f92915050565b60ce54604080517f3a98ef390000000000000000000000000000000000000000000000000000000081529051839273ffffffffffffffffffffffffffffffffffffffff1691633a98ef399160048083019260209291908290030181865afa1580156129c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129e9919061673d565b6129f39085616939565b6112849190616c7f565b60e054604080517f77a9193e000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216916391d148549183916377a9193e916004808201926020929091908290030181865afa158015612a73573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a97919061673d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526004810191909152336024820152604401602060405180830381865afa158015612aef573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b1391906166f5565b612b49576040517f209296a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60dc5471010000000000000000000000000000000000900460ff1615612bcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5061757361626c653a20616c72656164792070617573656400000000000000006044820152606401611b6f565b60dc80547fffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff16710100000000000000000000000000000000001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020015b60405180910390a1565b612c4561554f565b60df5473ffffffffffffffffffffffffffffffffffffffff16158015612c80575073ffffffffffffffffffffffffffffffffffffffff811615155b612ce6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f496e76616c6964000000000000000000000000000000000000000000000000006044820152606401611b6f565b60e05473ffffffffffffffffffffffffffffffffffffffff1615612d66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f616c726561647920696e697469616c697a6564000000000000000000000000006044820152606401611b6f565b60df805473ffffffffffffffffffffffffffffffffffffffff8084167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560e08054928516929091169190911790555f612dc4612741565b60cf80546fffffffffffffffffffffffffffffffff4781167001000000000000000000000000000000009081029282169290921792839055929350612e0c9291041682615fbc565b60cf80547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055612e55612741565b816fffffffffffffffffffffffffffffffff16146113ce575f5ffd5b612e7961554f565b73ffffffffffffffffffffffffffffffffffffffff821615801590612eb3575073ffffffffffffffffffffffffffffffffffffffff811615155b8015612ed5575060dd5473ffffffffffffffffffffffffffffffffffffffff16155b8015612ef7575060de5473ffffffffffffffffffffffffffffffffffffffff16155b612f5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f496e76616c6964000000000000000000000000000000000000000000000000006044820152606401611b6f565b60dd805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560de8054929093169116179055565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003613075576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401611b6f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166130ea7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff161461318d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401611b6f565b613196826152d7565b61071882826001615350565b5f5f5f60ce5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a98ef396040518163ffffffff1660e01b8152600401602060405180830381865afa15801561320f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613233919061673d565b905080156132ec5760ce546040517fce7c2ac200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528392169063ce7c2ac290602401602060405180830381865afa1580156132a9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132cd919061673d565b6132d5612741565b6132df9190616939565b6132e99190616c7f565b91505b5092915050565b5f3073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146133b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401611b6f565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b5f5f60ce5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a98ef396040518163ffffffff1660e01b8152600401602060405180830381865afa15801561344a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061346e919061673d565b9050805f0361347f57505f92915050565b806129e9612741565b60e0546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0e8d94121b3383f03d9ae60b39295aa793469d7230d51a3f62cbf47cd45481d9600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa15801561351a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061353e91906166f5565b613574576040517f209296a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81165f90815260db602052604090205460ff1615613603576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416c7265616479207265676973746572656400000000000000000000000000006044820152606401611b6f565b60408051602080820183526001825273ffffffffffffffffffffffffffffffffffffffff84165f81815260db8352849020925183547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169015151790925591519081527f8bef88cac8d05094711d367d04bf4f2fcb4b589ca12a6ed8c8f375000e1e848e9101611d0b565b60e0546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0e8d94121b3383f03d9ae60b39295aa793469d7230d51a3f62cbf47cd45481d9600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa158015613720573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061374491906166f5565b61377a576040517f209296a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6801bc16d674ec8000008110806137995750686f05b59d3b2000000081115b156137d0576040517ffd08673400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60e155565b6137dd61554f565b6137e65f6155d0565b565b5f6137f2826139d8565b60df5490915073ffffffffffffffffffffffffffffffffffffffff163314613846576040517f17fe949f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b821580613851575081155b15613888576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828111156138c2576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cf80548391905f906138e89084906fffffffffffffffffffffffffffffffff16615fbc565b82546fffffffffffffffffffffffffffffffff9182166101009390930a92830291909202199091161790555060ce546040517fee7a7c040000000000000000000000000000000000000000000000000000000081523360048201526024810185905273ffffffffffffffffffffffffffffffffffffffff9091169063ee7a7c04906044015f604051808303815f87803b158015613983575f5ffd5b505af1158015613995573d5f5f3e3d5ffd5b505060408051868152602081018690527f888a2432cd9af74ee23f9ebdf262368f5434dffe681b3c7426880c6639b2a74a935001905060405180910390a1505050565b5f5f6139e2612741565b9050805f036139f357505f92915050565b60ce54604080517f3a98ef3900000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff1691633a98ef399160048083019260209291908290030181865afa158015613a60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a84919061673d565b613a8e9085616939565b9050816001613a9d8284616cb7565b613aa79190616754565b613ab19190616c7f565b949350505050565b5f613af87f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b5f613b06614ffd565b60de5473ffffffffffffffffffffffffffffffffffffffff16331480613b43575060d95473ffffffffffffffffffffffffffffffffffffffff1633145b613ba9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e636f72726563742043616c6c6572000000000000000000000000000000006044820152606401611b6f565b8373ffffffffffffffffffffffffffffffffffffffff167fa241faf62e66ce518d1934ce4c936d806a02289ba483fac23beb8c15755be90d84600185604051613bf493929190616cca565b60405180910390a2611281845f85615646565b613c0f614ffd565b60e0546040517f91d148540000000000000000000000000000000000000000000000000000000081527fc6ace799356a5a236ccaa6708c68b77b7de838b1700b6e0c40f48a1407a5eef0600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa158015613ca1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cc591906166f5565b613cfb576040517f209296a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6801bc16d674ec800000811080613d1a5750686f05b59d3b2000000081115b15613d51576040517ffd08673400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60c954604080517f21edd09700000000000000000000000000000000000000000000000000000000815290515f9273ffffffffffffffffffffffffffffffffffffffff16916321edd097916004808301926020929190829003018187875af1158015613dbf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613de3919061673d565b613ded9083616754565b90505f613dfa8483616939565b9050613e058161507f565b60c9546040517fbaaff11600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063baaff116908390613e6190899089908990600401616d02565b5f604051808303818588803b158015613e78575f5ffd5b505af1158015613e8a573d5f5f3e3d5ffd5b50505050505050505050565b60e054604080517f421d0eb3000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff909216916391d1485491839163421d0eb3916004808201926020929091908290030181865afa158015613f0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f30919061673d565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526004810191909152336024820152604401602060405180830381865afa158015613f88573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613fac91906166f5565b613fe2576040517f209296a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60dc5471010000000000000000000000000000000000900460ff16614063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401611b6f565b60dc80547fffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffff1690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602001612c33565b60cc5473ffffffffffffffffffffffffffffffffffffffff16331461410c576040517f17fe949f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cf5461412c9082906fffffffffffffffffffffffffffffffff16616d25565b60cf80547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff929092169190911790557f11c6bf55864ff83827df712625d7a80e5583eef0264921025e7cd22003a21511614196612741565b60ce5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633a98ef396040518163ffffffff1660e01b8152600401602060405180830381865afa158015614200573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614224919061673d565b60408051928352602083019190915201611d0b565b5f613af85f61485c565b60e0546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0e8d94121b3383f03d9ae60b39295aa793469d7230d51a3f62cbf47cd45481d9600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa1580156142d5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142f991906166f5565b61432f576040517f209296a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60dc80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b614368614ffd565b60e0546040517f91d148540000000000000000000000000000000000000000000000000000000081527f20e7d93f475a4a8dd621285797dd2d68da59e4450b89aea5ca9bf079e95c1db5600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa1580156143fa573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061441e91906166f5565b614454576040517f209296a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61446783670de0b6b3a7640000616939565b90506144728161507f565b60c9546040517fb71205d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063b71205d49083906144d2908a908a908a908a908a90600401616bfb565b5f604051808303818588803b1580156144e9575f5ffd5b505af11580156144fb573d5f5f3e3d5ffd5b5050505050505050505050565b60e0546040517f91d148540000000000000000000000000000000000000000000000000000000081527f0e8d94121b3383f03d9ae60b39295aa793469d7230d51a3f62cbf47cd45481d9600482015233602482015273ffffffffffffffffffffffffffffffffffffffff909116906391d1485490604401602060405180830381865afa15801561459a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906145be91906166f5565b6145f4576040517f209296a300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60d080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fbf5406678e9fe702eaea01d92d3b62ac5be0a14e1802562e2a428364d30d1b1190602001611d0b565b60df5473ffffffffffffffffffffffffffffffffffffffff1633148015906146a7575060d25473ffffffffffffffffffffffffffffffffffffffff163314155b80156146e957503373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614155b15614720576040517f17fe949f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ce546040517fee7a7c040000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff9091169063ee7a7c04906044015f604051808303815f87803b15801561478f575f5ffd5b505af11580156147a1573d5f5f3e3d5ffd5b5050505050565b6147b061554f565b73ffffffffffffffffffffffffffffffffffffffff8116614853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611b6f565b61273e816155d0565b5f614865614ffd565b3373ffffffffffffffffffffffffffffffffffffffff167fa241faf62e66ce518d1934ce4c936d806a02289ba483fac23beb8c15755be90d346001856040516148b093929190616cca565b60405180910390a26148c333345f615646565b90505b919050565b5f6148d4614ffd565b5f6148de836139d8565b60d25490915073ffffffffffffffffffffffffffffffffffffffff1633148061491e575060cc5473ffffffffffffffffffffffffffffffffffffffff1633145b80614940575060df5473ffffffffffffffffffffffffffffffffffffffff1633145b8061498057503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016145b6149e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e636f72726563742043616c6c6572000000000000000000000000000000006044820152606401611b6f565b60cf5470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16831180614aa9575060ce546040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015614a83573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614aa7919061673d565b105b15614ae0576040517fbb55fd2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6fffffffffffffffffffffffffffffffff831180614afc575082155b80614b05575080155b15614b3c576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015614bd1575060dc5460cf548491614bbd916fffffffffffffffffffffffffffffffff61010090920482169170010000000000000000000000000000000090910416615fbc565b6fffffffffffffffffffffffffffffffff16105b15614c08576040517fbb55fd2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60d25473ffffffffffffffffffffffffffffffffffffffff163303614e2d5760dc5461010090046fffffffffffffffffffffffffffffffff16831115614c7a576040517fbb55fd2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1615614dc9575f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663341c6b3b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614d20573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614d449190616d73565b60cf549091508490614d7d90839070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff16615fbc565b6fffffffffffffffffffffffffffffffff161015614dc7576040517fbb55fd2700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8260dc60018282829054906101000a90046fffffffffffffffffffffffffffffffff16614df69190615fbc565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b8260cf60108282829054906101000a90046fffffffffffffffffffffffffffffffff16614e5a9190615fbc565b82546fffffffffffffffffffffffffffffffff9182166101009390930a92830291909202199091161790555060ce546040517fee7a7c040000000000000000000000000000000000000000000000000000000081523360048201526024810183905273ffffffffffffffffffffffffffffffffffffffff9091169063ee7a7c04906044015f604051808303815f87803b158015614ef5575f5ffd5b505af1158015614f07573d5f5f3e3d5ffd5b505050506112848484615814565b5f614f1e614ffd565b60cc5473ffffffffffffffffffffffffffffffffffffffff163314614f9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f496e636f72726563742043616c6c6572000000000000000000000000000000006044820152606401611b6f565b3373ffffffffffffffffffffffffffffffffffffffff167fa241faf62e66ce518d1934ce4c936d806a02289ba483fac23beb8c15755be90d34600285604051614fea93929190616cca565b60405180910390a261128433345f615646565b60dc5471010000000000000000000000000000000000900460ff16156137e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401611b6f565b60cf80548291905f906150a59084906fffffffffffffffffffffffffffffffff16615fe4565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508060cf60108282829054906101000a90046fffffffffffffffffffffffffffffffff16611d949190615fbc565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261519d9085906158f0565b50505050565b5f54610100900460ff16615239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611b6f565b6137e66159fb565b5f54610100900460ff166137e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611b6f565b60e0546040517f5006bb7b00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911690635006bb7b906024015f6040518083038186803b15801561533e575f5ffd5b505afa1580156147a1573d5f5f3e3d5ffd5b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615615383576113ce83615a9a565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015615408575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526154059181019061673d565b60015b615494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401611b6f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114615543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401611b6f565b506113ce838383615ba4565b60335473ffffffffffffffffffffffffffffffffffffffff1633146137e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611b6f565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f8260cf60108282829054906101000a90046fffffffffffffffffffffffffffffffff166156749190615fe4565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508160cf5f8282829054906101000a90046fffffffffffffffffffffffffffffffff166156d69190615fe4565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505f82846157199190616cb7565b90505f61572582615bc8565b90506fffffffffffffffffffffffffffffffff821180615743575081155b8061574c575080155b15615783576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ce546040517f528c198a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152602482018490529091169063528c198a906044015f604051808303815f87803b1580156157f4575f5ffd5b505af1158015615806573d5f5f3e3d5ffd5b509298975050505050505050565b60405147905f9073ffffffffffffffffffffffffffffffffffffffff85169084908381818185875af1925050503d805f811461586b576040519150601f19603f3d011682016040523d82523d5f602084013e615870565b606091505b5050905080801561588a57506158868383616754565b4710155b61519d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f53656e644661696c0000000000000000000000000000000000000000000000006044820152606401611b6f565b5f615951826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16615bed9092919063ffffffff16565b8051909150156113ce578080602001905181019061596f91906166f5565b6113ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611b6f565b5f54610100900460ff16615a91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401611b6f565b6137e6336155d0565b73ffffffffffffffffffffffffffffffffffffffff81163b615b3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401611b6f565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b615bad83615bfb565b5f82511180615bb95750805b156113ce5761519d8383615c47565b5f5f82615bd3612741565b615bdd9190616754565b9050805f03612958575090919050565b606061128184845f85615d82565b615c0481615a9a565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606073ffffffffffffffffffffffffffffffffffffffff83163b615ced576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401611b6f565b5f5f8473ffffffffffffffffffffffffffffffffffffffff1684604051615d149190616d8e565b5f60405180830381855af49150503d805f8114615d4c576040519150601f19603f3d011682016040523d82523d5f602084013e615d51565b606091505b5091509150615d798282604051806060016040528060278152602001616db760279139615e97565b95945050505050565b606082471015615e14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611b6f565b5f5f8673ffffffffffffffffffffffffffffffffffffffff168587604051615e3c9190616d8e565b5f6040518083038185875af1925050503d805f8114615e76576040519150601f19603f3d011682016040523d82523d5f602084013e615e7b565b606091505b5091509150615e8c87838387615eb0565b979650505050505050565b60608315615ea6575081611284565b6112848383615f4b565b60608315615f455782515f03615f3e5773ffffffffffffffffffffffffffffffffffffffff85163b615f3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611b6f565b5081613ab1565b613ab183835b815115615f5b5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6f9190616da4565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6fffffffffffffffffffffffffffffffff808316828216039081111561293757612937615f8f565b6fffffffffffffffffffffffffffffffff818116818416019081111561293757612937615f8f565b8073ffffffffffffffffffffffffffffffffffffffff16811461273e575f5ffd5b5f5f5f83850360e0811215616040575f5ffd5b843561604b8161600c565b93506020850135925060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215616083575f5ffd5b506040840190509250925092565b5f5f83601f8401126160a1575f5ffd5b50813567ffffffffffffffff8111156160b8575f5ffd5b6020830191508360208260051b85010111156160d2575f5ffd5b9250929050565b5f5f602083850312156160ea575f5ffd5b823567ffffffffffffffff811115616100575f5ffd5b61610c85828601616091565b90969095509350505050565b5f60208284031215616128575f5ffd5b81356112848161600c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156161a7576161a7616133565b604052919050565b5f5f5f5f5f606086880312156161c3575f5ffd5b853567ffffffffffffffff8111156161d9575f5ffd5b8601601f810188136161e9575f5ffd5b803567ffffffffffffffff81111561620357616203616133565b8060051b61621360208201616160565b9182526020818401810192908101908b84111561622e575f5ffd5b6020850194505b8385101561625457843580835260209586019590935090910190616235565b98505050506020870135905067ffffffffffffffff811115616274575f5ffd5b61628088828901616091565b909550935050604086013567ffffffffffffffff81111561629f575f5ffd5b6162ab88828901616091565b969995985093965092949392505050565b803563ffffffff811681146148c6575f5ffd5b5f5f604083850312156162e0575f5ffd5b6162e9836162bc565b91506162f7602084016162bc565b90509250929050565b806fffffffffffffffffffffffffffffffff16811461273e575f5ffd5b5f6020828403121561632d575f5ffd5b813561128481616300565b5f5f5f6060848603121561634a575f5ffd5b83356163558161600c565b95602085013595506040909401359392505050565b5f6020828403121561637a575f5ffd5b5035919050565b5f5f5f5f5f60608688031215616395575f5ffd5b853567ffffffffffffffff8111156163ab575f5ffd5b6163b788828901616091565b909650945050602086013567ffffffffffffffff8111156163d6575f5ffd5b6163e288828901616091565b90945092505060408601356163f68161600c565b809150509295509295909350565b5f60208284031215616414575f5ffd5b813560048110611284575f5ffd5b5f5f5f5f5f5f5f60e0888a031215616438575f5ffd5b87356164438161600c565b965060208801356164538161600c565b955060408801356164638161600c565b945060608801356164738161600c565b935060808801356164838161600c565b925060a08801356164938161600c565b915060c08801356164a38161600c565b8091505092959891949750929550565b5f5f604083850312156164c4575f5ffd5b82356164cf8161600c565b946020939093013593505050565b5f5f604083850312156164ee575f5ffd5b82356164f98161600c565b915060208301356165098161600c565b809150509250929050565b5f67ffffffffffffffff82111561652d5761652d616133565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f5f6040838503121561656a575f5ffd5b82356165758161600c565b9150602083013567ffffffffffffffff811115616590575f5ffd5b8301601f810185136165a0575f5ffd5b80356165b36165ae82616514565b616160565b8181528660208385010111156165c7575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f604083850312156165f7575f5ffd5b50508035926020909101359150565b5f5f5f60608486031215616618575f5ffd5b83356166238161600c565b925060208401359150604084013561663a8161600c565b809150509250925092565b5f5f5f60408486031215616657575f5ffd5b833567ffffffffffffffff81111561666d575f5ffd5b61667986828701616091565b909790965060209590950135949350505050565b5f6020828403121561669d575f5ffd5b813580600f0b8114611284575f5ffd5b801515811461273e575f5ffd5b5f602082840312156166ca575f5ffd5b8135611284816166ad565b5f602082840312156166e5575f5ffd5b81358060ff168114611284575f5ffd5b5f60208284031215616705575f5ffd5b8151611284816166ad565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561674d575f5ffd5b5051919050565b8181038181111561293757612937615f8f565b5f60208284031215616777575f5ffd5b81516112848161600c565b5f60208284031215616792575f5ffd5b815167ffffffffffffffff8111156167a8575f5ffd5b8201601f810184136167b8575f5ffd5b80516167c66165ae82616514565b8181528560208385010111156167da575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261682a575f5ffd5b83018035915067ffffffffffffffff821115616844575f5ffd5b6020019150368190038213156160d2575f5ffd5b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b608081525f6168fe60808301888a616858565b8281036020840152616911818789616858565b90508281036040840152616925818661689f565b915050826060830152979650505050505050565b808202811582820484141761293757612937615f8f565b5f604082016040835280855180835260608501915060608160051b8601019250602087015f5b82811015616a10577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087860301845281518051608087526169ba608088018261689f565b9050602082015187820360208901526169d3828261689f565b915050604082015160408801526060820151915086810360608801526169f9818361689f565b965050506020938401939190910190600101616976565b505050506020929092019290925292915050565b60048110616a59577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b9052565b73ffffffffffffffffffffffffffffffffffffffff841681526020810183905260608101613ab16040830184616a24565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112616ac1575f5ffd5b830160208101925035905067ffffffffffffffff811115616ae0575f5ffd5b8036038213156160d2575f5ffd5b5f8383855260208501945060208460051b820101835f5b86811015616bef577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084840301885281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81873603018112616b65575f5ffd5b8601616b718180616a8e565b60808652616b83608087018284616858565b915050616b936020830183616a8e565b8683036020880152616ba6838284616858565b9250505060408201356040860152616bc16060830183616a8e565b92508582036060870152616bd6828483616858565b60209b8c019b9096509490940193505050600101616b05565b50909695505050505050565b606081525f616c0e606083018789616aee565b82810360208401528481527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851115616c45575f5ffd5b8460051b8087602084013773ffffffffffffffffffffffffffffffffffffffff909416604093909301929092525001602001949350505050565b5f82616cb2577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8082018082111561293757612937615f8f565b83815260608101616cde6020830185616a24565b8273ffffffffffffffffffffffffffffffffffffffff166040830152949350505050565b604081525f616d15604083018587616aee565b9050826020830152949350505050565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81137fffffffffffffffffffffffffffffffff800000000000000000000000000000008212171561293757612937615f8f565b5f60208284031215616d83575f5ffd5b815161128481616300565b5f82518060208501845e5f920191825250919050565b602081525f611284602083018461689f56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564