0x608060405234801561001057600080fd5b50612eb6806100206000396000f3fe6080604052600436106101445760003560e01c806393df337e116100b6578063c0fd8bde1161006f578063c0fd8bde1461054c578063d60b347f1461057b578063eb8d3f12146105b4578063f42bc641146105d7578063f951975a146105f7578063fbe3c2cd14610624576101ab565b806393df337e1461048f5780639a8a0592146104af578063a0cce1b3146104d7578063a9e11893146104f7578063b172b22214610524578063b19a437e14610539576101ab565b80634cf842b5116101085780634cf842b51461030b5780634fdc60fa14610362578063515f3247146103c55780635cb8cae21461041f5780636606b4e014610441578063875be02a14610461576101ab565b80630319e59c146101e157806304ca84cf146102535780631a90a219146102805780631cfe79511461029f5780632c3c02a4146102cb576101ab565b366101ab5760405162461bcd60e51b815260206004820152602c60248201527f74686520576f726d686f6c6520636f6e747261637420646f6573206e6f74206160448201526b63636570742061737365747360a01b60648201526084015b60405180910390fd5b60405162461bcd60e51b815260206004820152600b60248201526a1d5b9cdd5c1c1bdc9d195960aa1b60448201526064016101a2565b3480156101ed57600080fd5b506102016101fc36600461252d565b610643565b60405161024a9190600060a0820190508251825260ff602084015116602083015261ffff6040840151166040830152606083015160608301526080830151608083015292915050565b60405180910390f35b34801561025f57600080fd5b5061027361026e36600461252d565b610799565b60405161024a91906125c8565b34801561028c57600080fd5b506007545b60405190815260200161024a565b3480156102ab57600080fd5b5060035463ffffffff165b60405163ffffffff909116815260200161024a565b3480156102d757600080fd5b506102fb6102e6366004612625565b60009081526005602052604090205460ff1690565b604051901515815260200161024a565b34801561031757600080fd5b5061034a610326366004612655565b6001600160a01b03166000908152600460205260409020546001600160401b031690565b6040516001600160401b03909116815260200161024a565b34801561036e57600080fd5b5061038261037d36600461252d565b6109b0565b60405161024a91908151815260208083015160ff169082015260408083015161ffff16908201526060918201516001600160a01b03169181019190915260800190565b3480156103d157600080fd5b506103e56103e036600461252d565b610aec565b60405161024a91908151815260208083015160ff169082015260408083015161ffff16908201526060918201519181019190915260800190565b34801561042b57600080fd5b5061043f61043a36600461252d565b610c1b565b005b34801561044d57600080fd5b5061043f61045c36600461252d565b610d23565b34801561046d57600080fd5b5061048161047c366004612799565b610f43565b60405161024a92919061290d565b34801561049b57600080fd5b5061043f6104aa36600461252d565b6110da565b3480156104bb57600080fd5b5060005461ffff165b60405161ffff909116815260200161024a565b3480156104e357600080fd5b506104816104f2366004612928565b611215565b34801561050357600080fd5b5061051761051236600461252d565b6113d6565b60405161024a9190612b84565b34801561053057600080fd5b50600154610291565b61034a610547366004612b97565b61176e565b34801561055857600080fd5b5061056c610567366004612bf4565b61180e565b60405161024a93929190612c65565b34801561058757600080fd5b506102fb610596366004612655565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105c057600080fd5b50600354640100000000900463ffffffff166102b6565b3480156105e357600080fd5b5061043f6105f236600461252d565b611870565b34801561060357600080fd5b50610617610612366004612c9c565b611971565b60405161024a9190612cb7565b34801561063057600080fd5b5060005462010000900461ffff166104c4565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101829052906106788382611a10565b8252610685602082612ce0565b90506106918382611a74565b60ff1660208301526106a4600182612ce0565b9050816020015160ff166004146106f45760405162461bcd60e51b8152602060048201526014602482015273696e76616c6964205472616e736665724665657360601b60448201526064016101a2565b6106fe8382611ad0565b61ffff166040830152610712600282612ce0565b905061071e8382611b2d565b606083015261072e602082612ce0565b905061073a8382611a10565b608083015261074a602082612ce0565b9050808351146107935760405162461bcd60e51b8152602060048201526014602482015273696e76616c6964205472616e736665724665657360601b60448201526064016101a2565b50919050565b6107a16122dc565b60006107ad8382611a10565b82526107ba602082612ce0565b90506107c68382611a74565b60ff1660208301526107d9600182612ce0565b9050816020015160ff166002146108325760405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420477561726469616e5365745570677261646500000000000060448201526064016101a2565b61083c8382611ad0565b61ffff166040830152610850600282612ce0565b905061085c8382611b82565b63ffffffff166080830152610872600482612ce0565b905060006108808483611a74565b905061088d600183612ce0565b915060405180604001604052808260ff166001600160401b038111156108b5576108b561240b565b6040519080825280602002602001820160405280156108de578160200160208202803683370190505b5081526000602090910181905260608501919091525b8160ff16811015610958576109098584611bdf565b60608501515180518390811061092157610921612cf3565b6001600160a01b0390921660209283029190910190910152610944601484612ce0565b92508061095081612d09565b9150506108f4565b50818451146109a95760405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420477561726469616e5365745570677261646500000000000060448201526064016101a2565b5050919050565b6040805160808101825260008082526020820181905291810182905260608101829052906109de8382611a10565b82526109eb602082612ce0565b90506109f78382611a74565b60ff166020830152610a0a600182612ce0565b9050816020015160ff16600114610a5d5760405162461bcd60e51b8152602060048201526017602482015276696e76616c696420436f6e74726163745570677261646560481b60448201526064016101a2565b610a678382611ad0565b61ffff166040830152610a7b600282612ce0565b9050610a878382611a10565b6001600160a01b03166060830152610aa0602082612ce0565b9050808351146107935760405162461bcd60e51b8152602060048201526017602482015276696e76616c696420436f6e74726163745570677261646560481b60448201526064016101a2565b604080516080810182526000808252602082018190529181018290526060810182905290610b1a8382611a10565b8252610b27602082612ce0565b9050610b338382611a74565b60ff166020830152610b46600182612ce0565b9050816020015160ff16600314610b975760405162461bcd60e51b8152602060048201526015602482015274696e76616c6964205365744d65737361676546656560581b60448201526064016101a2565b610ba18382611ad0565b61ffff166040830152610bb5600282612ce0565b9050610bc18382611b2d565b6060830152610bd1602082612ce0565b9050808351146107935760405162461bcd60e51b8152602060048201526015602482015274696e76616c6964205365744d65737361676546656560581b60448201526064016101a2565b6000610c26826113d6565b9050600080610c3483611c44565b91509150818190610c585760405162461bcd60e51b81526004016101a29190612d22565b506000610c688460e001516109b0565b805190915063436f726514610cb05760405162461bcd60e51b815260206004820152600e60248201526d496e76616c6964204d6f64756c6560901b60448201526064016101a2565b60005461ffff1661ffff16816040015161ffff1614610d015760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21021b430b4b760991b60448201526064016101a2565b610d0f846101400151611dba565b610d1c8160600151611dd5565b5050505050565b6000610d2e826113d6565b9050600080610d3c83611c44565b91509150818190610d605760405162461bcd60e51b81526004016101a29190612d22565b506000610d708460e00151610799565b805190915063436f726514610db85760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964204d6f64756c6560901b60448201526064016101a2565b60005461ffff1661ffff16816040015161ffff161480610dde5750604081015161ffff16155b610e1a5760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b21021b430b4b760991b60448201526064016101a2565b60608101515151610e6d5760405162461bcd60e51b815260206004820152601960248201527f6e657720677561726469616e2073657420697320656d7074790000000000000060448201526064016101a2565b60035463ffffffff16610e81906001612d35565b63ffffffff16816080015163ffffffff1614610ee95760405162461bcd60e51b815260206004820152602160248201527f696e646578206d75737420696e63726561736520696e207374657073206f66206044820152603160f81b60648201526084016101a2565b610ef7846101400151611dba565b610f0e610f0960035463ffffffff1690565b611f02565b610f2081606001518260800151611f3a565b60808101516003805463ffffffff191663ffffffff909216919091179055610d1c565b600060606000610f57846101000151611971565b805151909150600003610f9d576000604051806040016040528060148152602001731a5b9d985b1a590819dd585c991a585b881cd95d60621b8152509250925050915091565b60035463ffffffff1663ffffffff1684610100015163ffffffff1614158015610fcf575042816020015163ffffffff16105b156110165760006040518060400160405280601881526020017f677561726469616e2073657420686173206578706972656400000000000000008152509250925050915091565b61012084015151815151600a906003906110309083612d59565b61103a9190612d70565b611045906002612d59565b61104f9190612d70565b61105a906001612ce0565b111561108e576000604051806040016040528060098152602001686e6f2071756f72756d60b81b8152509250925050915091565b6000806110a686610140015187610120015185611215565b91509150816110bc576000969095509350505050565b60016040518060200160405280600081525094509450505050915091565b60006110e5826113d6565b90506000806110f383611c44565b915091508181906111175760405162461bcd60e51b81526004016101a29190612d22565b5060006111278460e00151610643565b805190915063436f72651461116f5760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964204d6f64756c6560901b60448201526064016101a2565b60005461ffff1661ffff16816040015161ffff16146111c05760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b21021b430b4b760991b60448201526064016101a2565b6111ce846101400151611dba565b608081015160608201516040516001600160a01b0383169180156108fc02916000818181858888f1935050505015801561120c573d6000803e3d6000fd5b50505050505050565b600060606000805b85518110156113b557600086828151811061123a5761123a612cf3565b60200260200101519050816000148061125c57508260ff16816060015160ff16115b6112b45760405162461bcd60e51b815260206004820152602360248201527f7369676e617475726520696e6469636573206d75737420626520617363656e64604482015262696e6760e81b60648201526084016101a2565b6060810151865180519194509060ff85169081106112d4576112d4612cf3565b60200260200101516001600160a01b03166001898360400151846000015185602001516040516000815260200160405260405161132d949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa15801561134f573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146113a2576000604051806040016040528060148152602001731593481cda59db985d1d5c99481a5b9d985b1a5960621b815250945094505050506113ce565b50806113ad81612d09565b91505061121d565b5060016040518060200160405280600081525092509250505b935093915050565b6113de612336565b60006113ea8382611a74565b60ff1682526113fa600182612ce0565b9050816000015160ff166001146114535760405162461bcd60e51b815260206004820152601760248201527f564d2076657273696f6e20696e636f6d70617469626c6500000000000000000060448201526064016101a2565b61145d8382611b82565b63ffffffff16610100830152611474600482612ce0565b905060006114828483611a74565b60ff169050611492600183612ce0565b9150806001600160401b038111156114ac576114ac61240b565b6040519080825280602002602001820160405280156114fe57816020015b6040805160808101825260008082526020808301829052928201819052606082015282526000199092019101816114ca5790505b5061012084015260005b818110156116355761151a8584611a74565b846101200151828151811061153157611531612cf3565b602090810291909101015160ff909116606090910152611552600184612ce0565b925061155e8584611a10565b846101200151828151811061157557611575612cf3565b602002602001015160000181815250506020836115929190612ce0565b925061159e8584611a10565b84610120015182815181106115b5576115b5612cf3565b602002602001015160200181815250506020836115d29190612ce0565b92506115de8584611a74565b6115e990601b612d92565b846101200151828151811061160057611600612cf3565b602090810291909101015160ff909116604090910152611621600184612ce0565b92508061162d81612d09565b915050611508565b506000611651838487516116499190612dab565b879190612014565b9050808051906020012060405160200161166d91815260200190565b60408051601f1981840301815291905280516020909101206101408501526116958584611b82565b63ffffffff1660208501526116ab600484612ce0565b92506116b78584611b82565b63ffffffff1660408501526116cd600484612ce0565b92506116d98584611ad0565b61ffff1660608501526116ed600284612ce0565b92506116f98584611a10565b6080850152611709602084612ce0565b92506117158584612121565b6001600160401b031660a085015261172e600884612ce0565b925061173a8584611a74565b60ff1660c085015261174d600184612ce0565b9250611760838487516116499190612dab565b60e085015250919392505050565b600061177960075490565b34146117b55760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b60448201526064016101a2565b6117be3361217e565b9050336001600160a01b03167f6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2828686866040516117ff9493929190612dbe565b60405180910390a29392505050565b611816612336565b6000606061185985858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113d692505050565b925061186483610f43565b93969095509293505050565b600061187b826113d6565b905060008061188983611c44565b915091508181906118ad5760405162461bcd60e51b81526004016101a29190612d22565b5060006118bd8460e00151610aec565b805190915063436f7265146119055760405162461bcd60e51b815260206004820152600e60248201526d496e76616c6964204d6f64756c6560901b60448201526064016101a2565b60005461ffff1661ffff16816040015161ffff16146119565760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21021b430b4b760991b60448201526064016101a2565b611964846101400151611dba565b610d1c8160600151600755565b60408051808201825260608082526000602080840182905263ffffffff861682526002815290849020845181549283028101840186529485018281529394939092849284918401828280156119ef57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116119d1575b50505091835250506001919091015463ffffffff1660209091015292915050565b6000611a1d826020612ce0565b83511015611a655760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b60448201526064016101a2565b50818101602001515b92915050565b6000611a81826001612ce0565b83511015611ac75760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b60448201526064016101a2565b50016001015190565b6000611add826002612ce0565b83511015611b245760405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b60448201526064016101a2565b50016002015190565b6000611b3a826020612ce0565b83511015611a655760405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b60448201526064016101a2565b6000611b8f826004612ce0565b83511015611bd65760405162461bcd60e51b8152602060048201526014602482015273746f55696e7433325f6f75744f66426f756e647360601b60448201526064016101a2565b50016004015190565b6000611bec826014612ce0565b83511015611c345760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b60448201526064016101a2565b500160200151600160601b900490565b60006060600080611c5485610f43565b9150915081611c695760009590945092505050565b60035463ffffffff1663ffffffff1685610100015163ffffffff1614611caf576000604051806060016040528060228152602001612e3d60229139935093505050915091565b60005462010000900461ffff1661ffff16856060015161ffff1614611d0a576000604051806040016040528060168152602001753bb937b7339033b7bb32b93730b731b29031b430b4b760511b815250935093505050915091565b600154856080015114611d5a5760006040518060400160405280601981526020017f77726f6e6720676f7665726e616e636520636f6e747261637400000000000000815250935093505050915091565b61014085015160009081526005602052604090205460ff1615611d9d576000604051806060016040528060228152602001612e5f60229139935093505050915091565b600160405180602001604052806000815250935093505050915091565b6000908152600560205260409020805460ff19166001179055565b6000611e087f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b9050611e13826121ee565b60408051600481526024810182526020810180516001600160e01b031663204a7f0760e21b179052905160009182916001600160a01b03861691611e5691612e00565b600060405180830381855af49150503d8060008114611e91576040519150601f19603f3d011682016040523d82523d6000602084013e611e96565b606091505b5091509150818190611ebb5760405162461bcd60e51b81526004016101a29190612d22565b50836001600160a01b0316836001600160a01b03167f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a4960405160405180910390a350505050565b611f0f4262015180612d35565b63ffffffff9182166000908152600260205260409020600101805463ffffffff191691909216179055565b81515160005b81811015611fbe57835180516000919083908110611f6057611f60612cf3565b60200260200101516001600160a01b031603611fac5760405162461bcd60e51b815260206004820152600b60248201526a496e76616c6964206b657960a81b60448201526064016101a2565b80611fb681612d09565b915050611f40565b5063ffffffff82166000908152600260209081526040909120845180518693611feb928492910190612391565b50602091909101516001909101805463ffffffff191663ffffffff909216919091179055505050565b60608161202281601f612ce0565b10156120615760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101a2565b61206b8284612ce0565b845110156120af5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101a2565b6060821580156120ce5760405191506000825260208201604052612118565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156121075780518352602092830192016120ef565b5050858452601f01601f1916604052505b50949350505050565b600061212e826008612ce0565b835110156121755760405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b60448201526064016101a2565b50016008015190565b6001600160a01b0381166000908152600460205260409020546001600160401b03166121e9826121af836001612e1c565b6001600160a01b03919091166000908152600460205260409020805467ffffffffffffffff19166001600160401b03909216919091179055565b919050565b6121f78161222e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381163b61229b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6040518060a0016040528060008019168152602001600060ff168152602001600061ffff168152602001612329604051806040016040528060608152602001600063ffffffff1681525090565b8152600060209091015290565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201819052610100820183905261012082015261014081019190915290565b8280548282559060005260206000209081019282156123e6579160200282015b828111156123e657825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906123b1565b506123f29291506123f6565b5090565b5b808211156123f257600081556001016123f7565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156124435761244361240b565b60405290565b60405161016081016001600160401b03811182821017156124435761244361240b565b604080519081016001600160401b03811182821017156124435761244361240b565b604051601f8201601f191681016001600160401b03811182821017156124b6576124b661240b565b604052919050565b600082601f8301126124cf57600080fd5b81356001600160401b038111156124e8576124e861240b565b6124fb601f8201601f191660200161248e565b81815284602083860101111561251057600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561253f57600080fd5b81356001600160401b0381111561255557600080fd5b612561848285016124be565b949350505050565b805160408084528151908401819052600091602091908201906060860190845b818110156125ae5783516001600160a01b031683529284019291840191600101612589565b50509382015163ffffffff16949091019390935250919050565b602081528151602082015260ff602083015116604082015261ffff60408301511660608201526000606083015160a0608084015261260960c0840182612569565b905063ffffffff60808501511660a08401528091505092915050565b60006020828403121561263757600080fd5b5035919050565b80356001600160a01b03811681146121e957600080fd5b60006020828403121561266757600080fd5b6126708261263e565b9392505050565b803560ff811681146121e957600080fd5b803563ffffffff811681146121e957600080fd5b803561ffff811681146121e957600080fd5b80356001600160401b03811681146121e957600080fd5b60006001600160401b038211156126de576126de61240b565b5060051b60200190565b600082601f8301126126f957600080fd5b8135602061270e612709836126c5565b61248e565b82815260079290921b8401810191818101908684111561272d57600080fd5b8286015b8481101561278e576080818903121561274a5760008081fd5b612752612421565b813581528482013585820152604061276b818401612677565b90820152606061277c838201612677565b90820152835291830191608001612731565b509695505050505050565b6000602082840312156127ab57600080fd5b81356001600160401b03808211156127c257600080fd5b9083019061016082860312156127d757600080fd5b6127df612449565b6127e883612677565b81526127f660208401612688565b602082015261280760408401612688565b60408201526128186060840161269c565b60608201526080830135608082015261283360a084016126ae565b60a082015261284460c08401612677565b60c082015260e08301358281111561285b57600080fd5b612867878286016124be565b60e08301525061010061287b818501612688565b90820152610120838101358381111561289357600080fd5b61289f888287016126e8565b91830191909152506101409283013592810192909252509392505050565b60005b838110156128d85781810151838201526020016128c0565b50506000910152565b600081518084526128f98160208601602086016128bd565b601f01601f19169290920160200192915050565b821515815260406020820152600061256160408301846128e1565b60008060006060848603121561293d57600080fd5b833592506020808501356001600160401b038082111561295c57600080fd5b612968888389016126e8565b9450604087013591508082111561297e57600080fd5b908601906040828903121561299257600080fd5b61299a61246c565b8235828111156129a957600080fd5b83019150601f820189136129bc57600080fd5b81356129ca612709826126c5565b81815260059190911b8301850190858101908b8311156129e957600080fd5b938601935b82851015612a0e576129ff8561263e565b825293860193908601906129ee565b835250612a1e9050838501612688565b84820152809450505050509250925092565b600081518084526020808501945080840160005b83811015612a8957815180518852838101518489015260408082015160ff908116918a0191909152606091820151169088015260809096019590820190600101612a44565b509495945050505050565b805160ff16825260006101606020830151612ab7602086018263ffffffff169052565b506040830151612acf604086018263ffffffff169052565b506060830151612ae5606086018261ffff169052565b506080830151608085015260a0830151612b0a60a08601826001600160401b03169052565b5060c0830151612b1f60c086018260ff169052565b5060e08301518160e0860152612b37828601826128e1565b91505061010080840151612b528287018263ffffffff169052565b50506101208084015185830382870152612b6c8382612a30565b61014095860151969095019590955250919392505050565b6020815260006126706020830184612a94565b600080600060608486031215612bac57600080fd5b612bb584612688565b925060208401356001600160401b03811115612bd057600080fd5b612bdc868287016124be565b925050612beb60408501612677565b90509250925092565b60008060208385031215612c0757600080fd5b82356001600160401b0380821115612c1e57600080fd5b818501915085601f830112612c3257600080fd5b813581811115612c4157600080fd5b866020828501011115612c5357600080fd5b60209290920196919550909350505050565b606081526000612c786060830186612a94565b84151560208401528281036040840152612c9281856128e1565b9695505050505050565b600060208284031215612cae57600080fd5b61267082612688565b6020815260006126706020830184612569565b634e487b7160e01b600052601160045260246000fd5b80820180821115611a6e57611a6e612cca565b634e487b7160e01b600052603260045260246000fd5b600060018201612d1b57612d1b612cca565b5060010190565b60208152600061267060208301846128e1565b63ffffffff818116838216019080821115612d5257612d52612cca565b5092915050565b8082028115828204841417611a6e57611a6e612cca565b600082612d8d57634e487b7160e01b600052601260045260246000fd5b500490565b60ff8181168382160190811115611a6e57611a6e612cca565b81810381811115611a6e57611a6e612cca565b6001600160401b038516815263ffffffff84166020820152608060408201526000612dec60808301856128e1565b905060ff8316606083015295945050505050565b60008251612e128184602087016128bd565b9190910192915050565b6001600160401b03818116838216019080821115612d5257612d52612cca56fe6e6f74207369676e65642062792063757272656e7420677561726469616e20736574676f7665726e616e636520616374696f6e20616c726561647920636f6e73756d6564a2646970667358221220a193992045e359f939139f72271e5510a0dbe45ffbce61be4b7a2724538e8df364736f6c63430008120033
0x6080604052600436106101445760003560e01c806393df337e116100b6578063c0fd8bde1161006f578063c0fd8bde1461054c578063d60b347f1461057b578063eb8d3f12146105b4578063f42bc641146105d7578063f951975a146105f7578063fbe3c2cd14610624576101ab565b806393df337e1461048f5780639a8a0592146104af578063a0cce1b3146104d7578063a9e11893146104f7578063b172b22214610524578063b19a437e14610539576101ab565b80634cf842b5116101085780634cf842b51461030b5780634fdc60fa14610362578063515f3247146103c55780635cb8cae21461041f5780636606b4e014610441578063875be02a14610461576101ab565b80630319e59c146101e157806304ca84cf146102535780631a90a219146102805780631cfe79511461029f5780632c3c02a4146102cb576101ab565b366101ab5760405162461bcd60e51b815260206004820152602c60248201527f74686520576f726d686f6c6520636f6e747261637420646f6573206e6f74206160448201526b63636570742061737365747360a01b60648201526084015b60405180910390fd5b60405162461bcd60e51b815260206004820152600b60248201526a1d5b9cdd5c1c1bdc9d195960aa1b60448201526064016101a2565b3480156101ed57600080fd5b506102016101fc36600461252d565b610643565b60405161024a9190600060a0820190508251825260ff602084015116602083015261ffff6040840151166040830152606083015160608301526080830151608083015292915050565b60405180910390f35b34801561025f57600080fd5b5061027361026e36600461252d565b610799565b60405161024a91906125c8565b34801561028c57600080fd5b506007545b60405190815260200161024a565b3480156102ab57600080fd5b5060035463ffffffff165b60405163ffffffff909116815260200161024a565b3480156102d757600080fd5b506102fb6102e6366004612625565b60009081526005602052604090205460ff1690565b604051901515815260200161024a565b34801561031757600080fd5b5061034a610326366004612655565b6001600160a01b03166000908152600460205260409020546001600160401b031690565b6040516001600160401b03909116815260200161024a565b34801561036e57600080fd5b5061038261037d36600461252d565b6109b0565b60405161024a91908151815260208083015160ff169082015260408083015161ffff16908201526060918201516001600160a01b03169181019190915260800190565b3480156103d157600080fd5b506103e56103e036600461252d565b610aec565b60405161024a91908151815260208083015160ff169082015260408083015161ffff16908201526060918201519181019190915260800190565b34801561042b57600080fd5b5061043f61043a36600461252d565b610c1b565b005b34801561044d57600080fd5b5061043f61045c36600461252d565b610d23565b34801561046d57600080fd5b5061048161047c366004612799565b610f43565b60405161024a92919061290d565b34801561049b57600080fd5b5061043f6104aa36600461252d565b6110da565b3480156104bb57600080fd5b5060005461ffff165b60405161ffff909116815260200161024a565b3480156104e357600080fd5b506104816104f2366004612928565b611215565b34801561050357600080fd5b5061051761051236600461252d565b6113d6565b60405161024a9190612b84565b34801561053057600080fd5b50600154610291565b61034a610547366004612b97565b61176e565b34801561055857600080fd5b5061056c610567366004612bf4565b61180e565b60405161024a93929190612c65565b34801561058757600080fd5b506102fb610596366004612655565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156105c057600080fd5b50600354640100000000900463ffffffff166102b6565b3480156105e357600080fd5b5061043f6105f236600461252d565b611870565b34801561060357600080fd5b50610617610612366004612c9c565b611971565b60405161024a9190612cb7565b34801561063057600080fd5b5060005462010000900461ffff166104c4565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101829052906106788382611a10565b8252610685602082612ce0565b90506106918382611a74565b60ff1660208301526106a4600182612ce0565b9050816020015160ff166004146106f45760405162461bcd60e51b8152602060048201526014602482015273696e76616c6964205472616e736665724665657360601b60448201526064016101a2565b6106fe8382611ad0565b61ffff166040830152610712600282612ce0565b905061071e8382611b2d565b606083015261072e602082612ce0565b905061073a8382611a10565b608083015261074a602082612ce0565b9050808351146107935760405162461bcd60e51b8152602060048201526014602482015273696e76616c6964205472616e736665724665657360601b60448201526064016101a2565b50919050565b6107a16122dc565b60006107ad8382611a10565b82526107ba602082612ce0565b90506107c68382611a74565b60ff1660208301526107d9600182612ce0565b9050816020015160ff166002146108325760405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420477561726469616e5365745570677261646500000000000060448201526064016101a2565b61083c8382611ad0565b61ffff166040830152610850600282612ce0565b905061085c8382611b82565b63ffffffff166080830152610872600482612ce0565b905060006108808483611a74565b905061088d600183612ce0565b915060405180604001604052808260ff166001600160401b038111156108b5576108b561240b565b6040519080825280602002602001820160405280156108de578160200160208202803683370190505b5081526000602090910181905260608501919091525b8160ff16811015610958576109098584611bdf565b60608501515180518390811061092157610921612cf3565b6001600160a01b0390921660209283029190910190910152610944601484612ce0565b92508061095081612d09565b9150506108f4565b50818451146109a95760405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420477561726469616e5365745570677261646500000000000060448201526064016101a2565b5050919050565b6040805160808101825260008082526020820181905291810182905260608101829052906109de8382611a10565b82526109eb602082612ce0565b90506109f78382611a74565b60ff166020830152610a0a600182612ce0565b9050816020015160ff16600114610a5d5760405162461bcd60e51b8152602060048201526017602482015276696e76616c696420436f6e74726163745570677261646560481b60448201526064016101a2565b610a678382611ad0565b61ffff166040830152610a7b600282612ce0565b9050610a878382611a10565b6001600160a01b03166060830152610aa0602082612ce0565b9050808351146107935760405162461bcd60e51b8152602060048201526017602482015276696e76616c696420436f6e74726163745570677261646560481b60448201526064016101a2565b604080516080810182526000808252602082018190529181018290526060810182905290610b1a8382611a10565b8252610b27602082612ce0565b9050610b338382611a74565b60ff166020830152610b46600182612ce0565b9050816020015160ff16600314610b975760405162461bcd60e51b8152602060048201526015602482015274696e76616c6964205365744d65737361676546656560581b60448201526064016101a2565b610ba18382611ad0565b61ffff166040830152610bb5600282612ce0565b9050610bc18382611b2d565b6060830152610bd1602082612ce0565b9050808351146107935760405162461bcd60e51b8152602060048201526015602482015274696e76616c6964205365744d65737361676546656560581b60448201526064016101a2565b6000610c26826113d6565b9050600080610c3483611c44565b91509150818190610c585760405162461bcd60e51b81526004016101a29190612d22565b506000610c688460e001516109b0565b805190915063436f726514610cb05760405162461bcd60e51b815260206004820152600e60248201526d496e76616c6964204d6f64756c6560901b60448201526064016101a2565b60005461ffff1661ffff16816040015161ffff1614610d015760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21021b430b4b760991b60448201526064016101a2565b610d0f846101400151611dba565b610d1c8160600151611dd5565b5050505050565b6000610d2e826113d6565b9050600080610d3c83611c44565b91509150818190610d605760405162461bcd60e51b81526004016101a29190612d22565b506000610d708460e00151610799565b805190915063436f726514610db85760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964204d6f64756c6560901b60448201526064016101a2565b60005461ffff1661ffff16816040015161ffff161480610dde5750604081015161ffff16155b610e1a5760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b21021b430b4b760991b60448201526064016101a2565b60608101515151610e6d5760405162461bcd60e51b815260206004820152601960248201527f6e657720677561726469616e2073657420697320656d7074790000000000000060448201526064016101a2565b60035463ffffffff16610e81906001612d35565b63ffffffff16816080015163ffffffff1614610ee95760405162461bcd60e51b815260206004820152602160248201527f696e646578206d75737420696e63726561736520696e207374657073206f66206044820152603160f81b60648201526084016101a2565b610ef7846101400151611dba565b610f0e610f0960035463ffffffff1690565b611f02565b610f2081606001518260800151611f3a565b60808101516003805463ffffffff191663ffffffff909216919091179055610d1c565b600060606000610f57846101000151611971565b805151909150600003610f9d576000604051806040016040528060148152602001731a5b9d985b1a590819dd585c991a585b881cd95d60621b8152509250925050915091565b60035463ffffffff1663ffffffff1684610100015163ffffffff1614158015610fcf575042816020015163ffffffff16105b156110165760006040518060400160405280601881526020017f677561726469616e2073657420686173206578706972656400000000000000008152509250925050915091565b61012084015151815151600a906003906110309083612d59565b61103a9190612d70565b611045906002612d59565b61104f9190612d70565b61105a906001612ce0565b111561108e576000604051806040016040528060098152602001686e6f2071756f72756d60b81b8152509250925050915091565b6000806110a686610140015187610120015185611215565b91509150816110bc576000969095509350505050565b60016040518060200160405280600081525094509450505050915091565b60006110e5826113d6565b90506000806110f383611c44565b915091508181906111175760405162461bcd60e51b81526004016101a29190612d22565b5060006111278460e00151610643565b805190915063436f72651461116f5760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964204d6f64756c6560901b60448201526064016101a2565b60005461ffff1661ffff16816040015161ffff16146111c05760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b21021b430b4b760991b60448201526064016101a2565b6111ce846101400151611dba565b608081015160608201516040516001600160a01b0383169180156108fc02916000818181858888f1935050505015801561120c573d6000803e3d6000fd5b50505050505050565b600060606000805b85518110156113b557600086828151811061123a5761123a612cf3565b60200260200101519050816000148061125c57508260ff16816060015160ff16115b6112b45760405162461bcd60e51b815260206004820152602360248201527f7369676e617475726520696e6469636573206d75737420626520617363656e64604482015262696e6760e81b60648201526084016101a2565b6060810151865180519194509060ff85169081106112d4576112d4612cf3565b60200260200101516001600160a01b03166001898360400151846000015185602001516040516000815260200160405260405161132d949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa15801561134f573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146113a2576000604051806040016040528060148152602001731593481cda59db985d1d5c99481a5b9d985b1a5960621b815250945094505050506113ce565b50806113ad81612d09565b91505061121d565b5060016040518060200160405280600081525092509250505b935093915050565b6113de612336565b60006113ea8382611a74565b60ff1682526113fa600182612ce0565b9050816000015160ff166001146114535760405162461bcd60e51b815260206004820152601760248201527f564d2076657273696f6e20696e636f6d70617469626c6500000000000000000060448201526064016101a2565b61145d8382611b82565b63ffffffff16610100830152611474600482612ce0565b905060006114828483611a74565b60ff169050611492600183612ce0565b9150806001600160401b038111156114ac576114ac61240b565b6040519080825280602002602001820160405280156114fe57816020015b6040805160808101825260008082526020808301829052928201819052606082015282526000199092019101816114ca5790505b5061012084015260005b818110156116355761151a8584611a74565b846101200151828151811061153157611531612cf3565b602090810291909101015160ff909116606090910152611552600184612ce0565b925061155e8584611a10565b846101200151828151811061157557611575612cf3565b602002602001015160000181815250506020836115929190612ce0565b925061159e8584611a10565b84610120015182815181106115b5576115b5612cf3565b602002602001015160200181815250506020836115d29190612ce0565b92506115de8584611a74565b6115e990601b612d92565b846101200151828151811061160057611600612cf3565b602090810291909101015160ff909116604090910152611621600184612ce0565b92508061162d81612d09565b915050611508565b506000611651838487516116499190612dab565b879190612014565b9050808051906020012060405160200161166d91815260200190565b60408051601f1981840301815291905280516020909101206101408501526116958584611b82565b63ffffffff1660208501526116ab600484612ce0565b92506116b78584611b82565b63ffffffff1660408501526116cd600484612ce0565b92506116d98584611ad0565b61ffff1660608501526116ed600284612ce0565b92506116f98584611a10565b6080850152611709602084612ce0565b92506117158584612121565b6001600160401b031660a085015261172e600884612ce0565b925061173a8584611a74565b60ff1660c085015261174d600184612ce0565b9250611760838487516116499190612dab565b60e085015250919392505050565b600061177960075490565b34146117b55760405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b60448201526064016101a2565b6117be3361217e565b9050336001600160a01b03167f6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b2828686866040516117ff9493929190612dbe565b60405180910390a29392505050565b611816612336565b6000606061185985858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113d692505050565b925061186483610f43565b93969095509293505050565b600061187b826113d6565b905060008061188983611c44565b915091508181906118ad5760405162461bcd60e51b81526004016101a29190612d22565b5060006118bd8460e00151610aec565b805190915063436f7265146119055760405162461bcd60e51b815260206004820152600e60248201526d496e76616c6964204d6f64756c6560901b60448201526064016101a2565b60005461ffff1661ffff16816040015161ffff16146119565760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21021b430b4b760991b60448201526064016101a2565b611964846101400151611dba565b610d1c8160600151600755565b60408051808201825260608082526000602080840182905263ffffffff861682526002815290849020845181549283028101840186529485018281529394939092849284918401828280156119ef57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116119d1575b50505091835250506001919091015463ffffffff1660209091015292915050565b6000611a1d826020612ce0565b83511015611a655760405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b60448201526064016101a2565b50818101602001515b92915050565b6000611a81826001612ce0565b83511015611ac75760405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b60448201526064016101a2565b50016001015190565b6000611add826002612ce0565b83511015611b245760405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b60448201526064016101a2565b50016002015190565b6000611b3a826020612ce0565b83511015611a655760405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b60448201526064016101a2565b6000611b8f826004612ce0565b83511015611bd65760405162461bcd60e51b8152602060048201526014602482015273746f55696e7433325f6f75744f66426f756e647360601b60448201526064016101a2565b50016004015190565b6000611bec826014612ce0565b83511015611c345760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b60448201526064016101a2565b500160200151600160601b900490565b60006060600080611c5485610f43565b9150915081611c695760009590945092505050565b60035463ffffffff1663ffffffff1685610100015163ffffffff1614611caf576000604051806060016040528060228152602001612e3d60229139935093505050915091565b60005462010000900461ffff1661ffff16856060015161ffff1614611d0a576000604051806040016040528060168152602001753bb937b7339033b7bb32b93730b731b29031b430b4b760511b815250935093505050915091565b600154856080015114611d5a5760006040518060400160405280601981526020017f77726f6e6720676f7665726e616e636520636f6e747261637400000000000000815250935093505050915091565b61014085015160009081526005602052604090205460ff1615611d9d576000604051806060016040528060228152602001612e5f60229139935093505050915091565b600160405180602001604052806000815250935093505050915091565b6000908152600560205260409020805460ff19166001179055565b6000611e087f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b9050611e13826121ee565b60408051600481526024810182526020810180516001600160e01b031663204a7f0760e21b179052905160009182916001600160a01b03861691611e5691612e00565b600060405180830381855af49150503d8060008114611e91576040519150601f19603f3d011682016040523d82523d6000602084013e611e96565b606091505b5091509150818190611ebb5760405162461bcd60e51b81526004016101a29190612d22565b50836001600160a01b0316836001600160a01b03167f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a4960405160405180910390a350505050565b611f0f4262015180612d35565b63ffffffff9182166000908152600260205260409020600101805463ffffffff191691909216179055565b81515160005b81811015611fbe57835180516000919083908110611f6057611f60612cf3565b60200260200101516001600160a01b031603611fac5760405162461bcd60e51b815260206004820152600b60248201526a496e76616c6964206b657960a81b60448201526064016101a2565b80611fb681612d09565b915050611f40565b5063ffffffff82166000908152600260209081526040909120845180518693611feb928492910190612391565b50602091909101516001909101805463ffffffff191663ffffffff909216919091179055505050565b60608161202281601f612ce0565b10156120615760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016101a2565b61206b8284612ce0565b845110156120af5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016101a2565b6060821580156120ce5760405191506000825260208201604052612118565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156121075780518352602092830192016120ef565b5050858452601f01601f1916604052505b50949350505050565b600061212e826008612ce0565b835110156121755760405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b60448201526064016101a2565b50016008015190565b6001600160a01b0381166000908152600460205260409020546001600160401b03166121e9826121af836001612e1c565b6001600160a01b03919091166000908152600460205260409020805467ffffffffffffffff19166001600160401b03909216919091179055565b919050565b6121f78161222e565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381163b61229b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a2565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6040518060a0016040528060008019168152602001600060ff168152602001600061ffff168152602001612329604051806040016040528060608152602001600063ffffffff1681525090565b8152600060209091015290565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201819052610100820183905261012082015261014081019190915290565b8280548282559060005260206000209081019282156123e6579160200282015b828111156123e657825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906123b1565b506123f29291506123f6565b5090565b5b808211156123f257600081556001016123f7565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156124435761244361240b565b60405290565b60405161016081016001600160401b03811182821017156124435761244361240b565b604080519081016001600160401b03811182821017156124435761244361240b565b604051601f8201601f191681016001600160401b03811182821017156124b6576124b661240b565b604052919050565b600082601f8301126124cf57600080fd5b81356001600160401b038111156124e8576124e861240b565b6124fb601f8201601f191660200161248e565b81815284602083860101111561251057600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561253f57600080fd5b81356001600160401b0381111561255557600080fd5b612561848285016124be565b949350505050565b805160408084528151908401819052600091602091908201906060860190845b818110156125ae5783516001600160a01b031683529284019291840191600101612589565b50509382015163ffffffff16949091019390935250919050565b602081528151602082015260ff602083015116604082015261ffff60408301511660608201526000606083015160a0608084015261260960c0840182612569565b905063ffffffff60808501511660a08401528091505092915050565b60006020828403121561263757600080fd5b5035919050565b80356001600160a01b03811681146121e957600080fd5b60006020828403121561266757600080fd5b6126708261263e565b9392505050565b803560ff811681146121e957600080fd5b803563ffffffff811681146121e957600080fd5b803561ffff811681146121e957600080fd5b80356001600160401b03811681146121e957600080fd5b60006001600160401b038211156126de576126de61240b565b5060051b60200190565b600082601f8301126126f957600080fd5b8135602061270e612709836126c5565b61248e565b82815260079290921b8401810191818101908684111561272d57600080fd5b8286015b8481101561278e576080818903121561274a5760008081fd5b612752612421565b813581528482013585820152604061276b818401612677565b90820152606061277c838201612677565b90820152835291830191608001612731565b509695505050505050565b6000602082840312156127ab57600080fd5b81356001600160401b03808211156127c257600080fd5b9083019061016082860312156127d757600080fd5b6127df612449565b6127e883612677565b81526127f660208401612688565b602082015261280760408401612688565b60408201526128186060840161269c565b60608201526080830135608082015261283360a084016126ae565b60a082015261284460c08401612677565b60c082015260e08301358281111561285b57600080fd5b612867878286016124be565b60e08301525061010061287b818501612688565b90820152610120838101358381111561289357600080fd5b61289f888287016126e8565b91830191909152506101409283013592810192909252509392505050565b60005b838110156128d85781810151838201526020016128c0565b50506000910152565b600081518084526128f98160208601602086016128bd565b601f01601f19169290920160200192915050565b821515815260406020820152600061256160408301846128e1565b60008060006060848603121561293d57600080fd5b833592506020808501356001600160401b038082111561295c57600080fd5b612968888389016126e8565b9450604087013591508082111561297e57600080fd5b908601906040828903121561299257600080fd5b61299a61246c565b8235828111156129a957600080fd5b83019150601f820189136129bc57600080fd5b81356129ca612709826126c5565b81815260059190911b8301850190858101908b8311156129e957600080fd5b938601935b82851015612a0e576129ff8561263e565b825293860193908601906129ee565b835250612a1e9050838501612688565b84820152809450505050509250925092565b600081518084526020808501945080840160005b83811015612a8957815180518852838101518489015260408082015160ff908116918a0191909152606091820151169088015260809096019590820190600101612a44565b509495945050505050565b805160ff16825260006101606020830151612ab7602086018263ffffffff169052565b506040830151612acf604086018263ffffffff169052565b506060830151612ae5606086018261ffff169052565b506080830151608085015260a0830151612b0a60a08601826001600160401b03169052565b5060c0830151612b1f60c086018260ff169052565b5060e08301518160e0860152612b37828601826128e1565b91505061010080840151612b528287018263ffffffff169052565b50506101208084015185830382870152612b6c8382612a30565b61014095860151969095019590955250919392505050565b6020815260006126706020830184612a94565b600080600060608486031215612bac57600080fd5b612bb584612688565b925060208401356001600160401b03811115612bd057600080fd5b612bdc868287016124be565b925050612beb60408501612677565b90509250925092565b60008060208385031215612c0757600080fd5b82356001600160401b0380821115612c1e57600080fd5b818501915085601f830112612c3257600080fd5b813581811115612c4157600080fd5b866020828501011115612c5357600080fd5b60209290920196919550909350505050565b606081526000612c786060830186612a94565b84151560208401528281036040840152612c9281856128e1565b9695505050505050565b600060208284031215612cae57600080fd5b61267082612688565b6020815260006126706020830184612569565b634e487b7160e01b600052601160045260246000fd5b80820180821115611a6e57611a6e612cca565b634e487b7160e01b600052603260045260246000fd5b600060018201612d1b57612d1b612cca565b5060010190565b60208152600061267060208301846128e1565b63ffffffff818116838216019080821115612d5257612d52612cca565b5092915050565b8082028115828204841417611a6e57611a6e612cca565b600082612d8d57634e487b7160e01b600052601260045260246000fd5b500490565b60ff8181168382160190811115611a6e57611a6e612cca565b81810381811115611a6e57611a6e612cca565b6001600160401b038516815263ffffffff84166020820152608060408201526000612dec60808301856128e1565b905060ff8316606083015295945050505050565b60008251612e128184602087016128bd565b9190910192915050565b6001600160401b03818116838216019080821115612d5257612d52612cca56fe6e6f74207369676e65642062792063757272656e7420677561726469616e20736574676f7665726e616e636520616374696f6e20616c726561647920636f6e73756d6564a2646970667358221220a193992045e359f939139f72271e5510a0dbe45ffbce61be4b7a2724538e8df364736f6c63430008120033