6080604052670de0b6b3a7640000600c55604051806104a00160405280600160ff168152602001600260ff168152602001600360ff168152602001600460ff168152602001600560ff168152602001600660ff168152602001600760ff168152602001600860ff168152602001600960ff168152602001600160ff168152602001600260ff168152602001600360ff168152602001600460ff168152602001600560ff168152602001600660ff168152602001600760ff168152602001600860ff168152602001600960ff168152602001600160ff168152602001600260ff168152602001600360ff168152602001600460ff168152602001600560ff168152602001600660ff168152602001600760ff168152602001600860ff168152602001600960ff168152602001600160ff168152602001600260ff168152602001600360ff168152602001600460ff168152602001600560ff168152602001600660ff168152602001600760ff168152602001600860ff168152602001600960ff168152602001600a60ff16815250600d9060256200019e92919062000706565b5060405180610b000160405280600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600160ff168152602001600060ff16815250600e9060586200052b929190620007b4565b506040518060400160405280600160ff168152602001600260ff16815250600f9060026200055b92919062000862565b503480156200056957600080fd5b506040518060400160405280600b81526020017f42617365642053746174730000000000000000000000000000000000000000008152506040518060400160405280600581526020017f42415345440000000000000000000000000000000000000000000000000000008152508160009080519060200190620005ee92919062000910565b5080600190805190602001906200060792919062000910565b5050506001600a8190555062000632620006266200063860201b60201c565b6200064060201b60201c565b62000a25565b600033905090565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b82805482825590600052602060002090601f01602090048101928215620007a15791602002820160005b838211156200077057835183826101000a81548160ff021916908360ff160217905550926020019260010160208160000104928301926001030262000730565b80156200079f5782816101000a81549060ff021916905560010160208160000104928301926001030262000770565b505b509050620007b09190620009a1565b5090565b82805482825590600052602060002090601f016020900481019282156200084f5791602002820160005b838211156200081e57835183826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302620007de565b80156200084d5782816101000a81549060ff02191690556001016020816000010492830192600103026200081e565b505b5090506200085e9190620009a1565b5090565b82805482825590600052602060002090601f01602090048101928215620008fd5791602002820160005b83821115620008cc57835183826101000a81548160ff021916908360ff16021790555092602001926001016020816000010492830192600103026200088c565b8015620008fb5782816101000a81549060ff0219169055600101602081600001049283019260010302620008cc565b505b5090506200090c9190620009a1565b5090565b8280546200091e90620009c0565b90600052602060002090601f0160209004810192826200094257600085556200098e565b82601f106200095d57805160ff19168380011785556200098e565b828001600101855582156200098e579182015b828111156200098d57825182559160200191906001019062000970565b5b5090506200099d9190620009a1565b5090565b5b80821115620009bc576000816000905550600101620009a2565b5090565b60006002820490506001821680620009d957607f821691505b60208210811415620009f057620009ef620009f6565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b614d338062000a356000396000f3fe6080604052600436106101cd5760003560e01c8063715018a6116100f7578063a035b1fe11610095578063c87b56dd11610064578063c87b56dd146106d9578063e985e9c514610716578063f2fde38b14610753578063fa7f71b11461077c576101cd565b8063a035b1fe14610640578063a0712d681461066b578063a22cb46514610687578063b88d4fde146106b0576101cd565b80638da5cb5b116100d15780638da5cb5b146105705780639347e43f1461059b57806395d89b41146105d85780639ec29b8214610603576101cd565b8063715018a6146104df5780638aa001fc146104f65780638c921d0614610533576101cd565b80632f745c591161016f5780634f6ccce71161013e5780634f6ccce7146103eb5780636352211e14610428578063667386f71461046557806370a08231146104a2576101cd565b80632f745c59146103315780633ccfd60b1461036e57806342842e0e1461038557806342d9d876146103ae576101cd565b8063095ea7b3116101ab578063095ea7b3146102775780630b2503a6146102a057806318160ddd146102dd57806323b872dd14610308576101cd565b806301ffc9a7146101d257806306fdde031461020f578063081812fc1461023a575b600080fd5b3480156101de57600080fd5b506101f960048036038101906101f49190613691565b6107b9565b6040516102069190613cb8565b60405180910390f35b34801561021b57600080fd5b50610224610833565b6040516102319190613cd3565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c91906136eb565b6108c5565b60405161026e9190613c51565b60405180910390f35b34801561028357600080fd5b5061029e60048036038101906102999190613651565b61094a565b005b3480156102ac57600080fd5b506102c760048036038101906102c291906136eb565b610a62565b6040516102d49190613f75565b60405180910390f35b3480156102e957600080fd5b506102f2610b21565b6040516102ff9190613f75565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a919061353b565b610b2e565b005b34801561033d57600080fd5b5061035860048036038101906103539190613651565b610b8e565b6040516103659190613f75565b60405180910390f35b34801561037a57600080fd5b50610383610c33565b005b34801561039157600080fd5b506103ac60048036038101906103a7919061353b565b610d0c565b005b3480156103ba57600080fd5b506103d560048036038101906103d091906136eb565b610d2c565b6040516103e29190613f75565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d91906136eb565b610deb565b60405161041f9190613f75565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a91906136eb565b610e5c565b60405161045c9190613c51565b60405180910390f35b34801561047157600080fd5b5061048c600480360381019061048791906136eb565b610f0e565b6040516104999190613f75565b60405180910390f35b3480156104ae57600080fd5b506104c960048036038101906104c491906134ce565b610fcd565b6040516104d69190613f75565b60405180910390f35b3480156104eb57600080fd5b506104f4611085565b005b34801561050257600080fd5b5061051d600480360381019061051891906136eb565b61110d565b60405161052a9190613f75565b60405180910390f35b34801561053f57600080fd5b5061055a600480360381019061055591906136eb565b6111cc565b6040516105679190613f75565b60405180910390f35b34801561057c57600080fd5b5061058561128b565b6040516105929190613c51565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd91906136eb565b6112b5565b6040516105cf9190613f75565b60405180910390f35b3480156105e457600080fd5b506105ed611374565b6040516105fa9190613cd3565b60405180910390f35b34801561060f57600080fd5b5061062a600480360381019061062591906136eb565b611406565b6040516106379190613f75565b60405180910390f35b34801561064c57600080fd5b506106556114c5565b6040516106629190613f75565b60405180910390f35b610685600480360381019061068091906136eb565b6114cb565b005b34801561069357600080fd5b506106ae60048036038101906106a99190613611565b6115ca565b005b3480156106bc57600080fd5b506106d760048036038101906106d2919061358e565b61174b565b005b3480156106e557600080fd5b5061070060048036038101906106fb91906136eb565b6117ad565b60405161070d9190613cd3565b60405180910390f35b34801561072257600080fd5b5061073d600480360381019061073891906134fb565b611d83565b60405161074a9190613cb8565b60405180910390f35b34801561075f57600080fd5b5061077a600480360381019061077591906134ce565b611e17565b005b34801561078857600080fd5b506107a3600480360381019061079e91906136eb565b611f0f565b6040516107b09190613f75565b60405180910390f35b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061082c575061082b82611fce565b5b9050919050565b606060008054610842906141f4565b80601f016020809104026020016040519081016040528092919081815260200182805461086e906141f4565b80156108bb5780601f10610890576101008083540402835291602001916108bb565b820191906000526020600020905b81548152906001019060200180831161089e57829003601f168201915b5050505050905090565b60006108d0826120b0565b61090f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090690613e75565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061095582610e5c565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bd90613ef5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166109e561211c565b73ffffffffffffffffffffffffffffffffffffffff161480610a145750610a1381610a0e61211c565b611d83565b5b610a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4a90613df5565b60405180910390fd5b610a5d8383612124565b505050565b6000610b1a826040518060400160405280600581526020017f4649465448000000000000000000000000000000000000000000000000000000815250600d805480602002602001604051908101604052809291908181526020018280548015610b1057602002820191906000526020600020906000905b82829054906101000a900460ff1660ff1681526020019060010190602082600001049283019260010382029150808411610ad95790505b50505050506121dd565b9050919050565b6000600880549050905090565b610b3f610b3961211c565b826123cb565b610b7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7590613f15565b60405180910390fd5b610b898383836124a9565b505050565b6000610b9983610fcd565b8210610bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd190613d15565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610c3b61211c565b73ffffffffffffffffffffffffffffffffffffffff16610c5961128b565b73ffffffffffffffffffffffffffffffffffffffff1614610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca690613e95565b60405180910390fd5b73ae3d73ee67a922a493f3cb95fd73817e1d4e0dd173ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d09573d6000803e3d6000fd5b50565b610d278383836040518060200160405280600081525061174b565b505050565b6000610de4826040518060400160405280600581526020017f5349585448000000000000000000000000000000000000000000000000000000815250600d805480602002602001604051908101604052809291908181526020018280548015610dda57602002820191906000526020600020906000905b82829054906101000a900460ff1660ff1681526020019060010190602082600001049283019260010382029150808411610da35790505b50505050506121dd565b9050919050565b6000610df5610b21565b8210610e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2d90613f35565b60405180910390fd5b60088281548110610e4a57610e4961438d565b5b90600052602060002001549050919050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efc90613e35565b60405180910390fd5b80915050919050565b6000610fc6826040518060400160405280600581526020017f4649525354000000000000000000000000000000000000000000000000000000815250600d805480602002602001604051908101604052809291908181526020018280548015610fbc57602002820191906000526020600020906000905b82829054906101000a900460ff1660ff1681526020019060010190602082600001049283019260010382029150808411610f855790505b50505050506121dd565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561103e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103590613e15565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61108d61211c565b73ffffffffffffffffffffffffffffffffffffffff166110ab61128b565b73ffffffffffffffffffffffffffffffffffffffff1614611101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f890613e95565b60405180910390fd5b61110b6000612705565b565b60006111c5826040518060400160405280600681526020017f5345434f4e440000000000000000000000000000000000000000000000000000815250600d8054806020026020016040519081016040528092919081815260200182805480156111bb57602002820191906000526020600020906000905b82829054906101000a900460ff1660ff16815260200190600101906020826000010492830192600103820291508084116111845790505b50505050506121dd565b9050919050565b6000611284826040518060400160405280600681526020017f534556454e540000000000000000000000000000000000000000000000000000815250600d80548060200260200160405190810160405280929190818152602001828054801561127a57602002820191906000526020600020906000905b82829054906101000a900460ff1660ff16815260200190600101906020826000010492830192600103820291508084116112435790505b50505050506121dd565b9050919050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061136d826040518060400160405280600581526020017f4549474854000000000000000000000000000000000000000000000000000000815250600d80548060200260200160405190810160405280929190818152602001828054801561136357602002820191906000526020600020906000905b82829054906101000a900460ff1660ff168152602001906001019060208260000104928301926001038202915080841161132c5790505b50505050506121dd565b9050919050565b606060018054611383906141f4565b80601f01602080910402602001604051908101604052809291908181526020018280546113af906141f4565b80156113fc5780601f106113d1576101008083540402835291602001916113fc565b820191906000526020600020905b8154815290600101906020018083116113df57829003601f168201915b5050505050905090565b60006114be826040518060400160405280600681526020017f464f555254480000000000000000000000000000000000000000000000000000815250600d8054806020026020016040519081016040528092919081815260200182805480156114b457602002820191906000526020600020906000905b82829054906101000a900460ff1660ff168152602001906001019060208260000104928301926001038202915080841161147d5790505b50505050506121dd565b9050919050565b600c5481565b6002600a541415611511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150890613f55565b60405180910390fd5b6002600a8190555034600c54111561155e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155590613cf5565b60405180910390fd5b60008111801561156f57506122b981105b6115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a590613eb5565b60405180910390fd5b6115bf6115b961211c565b826127cb565b6001600a8190555050565b6115d261211c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163790613db5565b60405180910390fd5b806005600061164d61211c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166116fa61211c565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161173f9190613cb8565b60405180910390a35050565b61175c61175661211c565b836123cb565b61179b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179290613f15565b60405180910390fd5b6117a7848484846127e9565b50505050565b60606117b76133cd565b60405180610120016040528060fd8152602001614b7060fd9139816000601181106117e5576117e461438d565b5b60200201819052506117fe6117f984610f0e565b612845565b816001601181106118125761181161438d565b5b6020020181905250604051806060016040528060288152602001614cd660289139816002601181106118475761184661438d565b5b602002018190525061186061185b8461110d565b612845565b816003601181106118745761187361438d565b5b6020020181905250604051806060016040528060288152602001614aa560289139816004601181106118a9576118a861438d565b5b60200201819052506118c26118bd84611f0f565b612845565b816005601181106118d6576118d561438d565b5b6020020181905250604051806060016040528060288152602001614b1f602891398160066011811061190b5761190a61438d565b5b602002018190525061192461191f84611406565b612845565b816007601181106119385761193761438d565b5b6020020181905250604051806060016040528060298152602001614b47602991398160086011811061196d5761196c61438d565b5b602002018190525061198661198184610a62565b612845565b8160096011811061199a5761199961438d565b5b6020020181905250604051806060016040528060298152602001614af66029913981600a601181106119cf576119ce61438d565b5b60200201819052506119e86119e384610d2c565b612845565b81600b601181106119fc576119fb61438d565b5b6020020181905250604051806060016040528060298152602001614c6d6029913981600c60118110611a3157611a3061438d565b5b6020020181905250611a4a611a45846111cc565b612845565b81600d60118110611a5e57611a5d61438d565b5b6020020181905250604051806060016040528060298152602001614acd6029913981600e60118110611a9357611a9261438d565b5b6020020181905250611aac611aa7846112b5565b612845565b81600f60118110611ac057611abf61438d565b5b60200201819052506040518060400160405280600d81526020017f3c2f746578743e3c2f7376673e0000000000000000000000000000000000000081525081601060118110611b1257611b1161438d565b5b6020020181905250600081600060118110611b3057611b2f61438d565b5b602002015182600160118110611b4957611b4861438d565b5b602002015183600260118110611b6257611b6161438d565b5b602002015184600360118110611b7b57611b7a61438d565b5b602002015185600460118110611b9457611b9361438d565b5b602002015186600560118110611bad57611bac61438d565b5b602002015187600660118110611bc657611bc561438d565b5b602002015188600760118110611bdf57611bde61438d565b5b602002015189600860118110611bf857611bf761438d565b5b6020020151604051602001611c1599989796959493929190613b6b565b60405160208183030381529060405290508082600960118110611c3b57611c3a61438d565b5b602002015183600a60118110611c5457611c5361438d565b5b602002015184600b60118110611c6d57611c6c61438d565b5b602002015185600c60118110611c8657611c8561438d565b5b602002015186600d60118110611c9f57611c9e61438d565b5b602002015187600e60118110611cb857611cb761438d565b5b602002015188600f60118110611cd157611cd061438d565b5b602002015189601060118110611cea57611ce961438d565b5b6020020151604051602001611d0799989796959493929190613b6b565b60405160208183030381529060405290506000611d54611d2686612845565b611d2f846129a6565b604051602001611d40929190613bea565b6040516020818303038152906040526129a6565b905080604051602001611d679190613c2f565b6040516020818303038152906040529150819350505050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611e1f61211c565b73ffffffffffffffffffffffffffffffffffffffff16611e3d61128b565b73ffffffffffffffffffffffffffffffffffffffff1614611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a90613e95565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efa90613d55565b60405180910390fd5b611f0c81612705565b50565b6000611fc7826040518060400160405280600581526020017f5448495244000000000000000000000000000000000000000000000000000000815250600d805480602002602001604051908101604052809291908181526020018280548015611fbd57602002820191906000526020600020906000905b82829054906101000a900460ff1660ff1681526020019060010190602082600001049283019260010382029150808411611f865790505b50505050506121dd565b9050919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061209957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806120a957506120a882612b3e565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661219783610e5c565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080612212846121ed87612845565b6040516020016121fe929190613b47565b604051602081830303815290604052612ba8565b905060008384518361222491906142a0565b815181106122355761223461438d565b5b602002602001015160ff169050600060158361225191906142a0565b9050600e8111156122b057600f80805490508461226e91906142a0565b8154811061227f5761227e61438d565b5b90600052602060002090602091828204019190069054906101000a900460ff1660ff16826122ad9190614029565b91505b601381106123be57601381141561236957600f8080549050846122d391906142a0565b815481106122e4576122e361438d565b5b90600052602060002090602091828204019190069054906101000a900460ff1660ff16600e80805490508561231991906142a0565b8154811061232a5761232961438d565b5b90600052602060002090602091828204019190069054906101000a900460ff1660ff168361235891906140b0565b6123629190614029565b91506123bd565b600e80805490508461237b91906142a0565b8154811061238c5761238b61438d565b5b90600052602060002090602091828204019190069054906101000a900460ff1660ff16826123ba91906140b0565b91505b5b8193505050509392505050565b60006123d6826120b0565b612415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240c90613dd5565b60405180910390fd5b600061242083610e5c565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061248f57508373ffffffffffffffffffffffffffffffffffffffff16612477846108c5565b73ffffffffffffffffffffffffffffffffffffffff16145b806124a0575061249f8185611d83565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166124c982610e5c565b73ffffffffffffffffffffffffffffffffffffffff161461251f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251690613ed5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561258f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258690613d95565b60405180910390fd5b61259a838383612bdb565b6125a5600082612124565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125f5919061410a565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461264c9190614029565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6127e5828260405180602001604052806000815250612cef565b5050565b6127f48484846124a9565b61280084848484612d4a565b61283f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283690613d35565b60405180910390fd5b50505050565b6060600082141561288d576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506129a1565b600082905060005b600082146128bf5780806128a890614257565b915050600a826128b8919061407f565b9150612895565b60008167ffffffffffffffff8111156128db576128da6143bc565b5b6040519080825280601f01601f19166020018201604052801561290d5781602001600182028036833780820191505090505b5090505b6000851461299a57600182612926919061410a565b9150600a8561293591906142a0565b60306129419190614029565b60f81b8183815181106129575761295661438d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612993919061407f565b9450612911565b8093505050505b919050565b606060008251905060008114156129cf5760405180602001604052806000815250915050612b39565b600060036002836129e09190614029565b6129ea919061407f565b60046129f691906140b0565b90506000602082612a079190614029565b67ffffffffffffffff811115612a2057612a1f6143bc565b5b6040519080825280601f01601f191660200182016040528015612a525781602001600182028036833780820191505090505b5090506000604051806060016040528060408152602001614c96604091399050600181016020830160005b86811015612af65760038101905062ffffff818a015116603f8160121c168401518060081b905060ff603f83600c1c1686015116810190508060081b905060ff603f8360061c1686015116810190508060081b905060ff603f831686015116810190508060e01b90508084526004840193505050612a7d565b506003860660018114612b105760028114612b2057612b2b565b613d3d60f01b6002830352612b2b565b603d60f81b60018303525b508484525050819450505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081604051602001612bbb9190613b30565b6040516020818303038152906040528051906020012060001c9050919050565b612be6838383612ee1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c2957612c2481612ee6565b612c68565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612c6757612c668382612f2f565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cab57612ca68161309c565b612cea565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612ce957612ce8828261316d565b5b5b505050565b612cf983836131ec565b612d066000848484612d4a565b612d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3c90613d35565b60405180910390fd5b505050565b6000612d6b8473ffffffffffffffffffffffffffffffffffffffff166133ba565b15612ed4578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d9461211c565b8786866040518563ffffffff1660e01b8152600401612db69493929190613c6c565b602060405180830381600087803b158015612dd057600080fd5b505af1925050508015612e0157506040513d601f19601f82011682018060405250810190612dfe91906136be565b60015b612e84573d8060008114612e31576040519150601f19603f3d011682016040523d82523d6000602084013e612e36565b606091505b50600081511415612e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7390613d35565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612ed9565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001612f3c84610fcd565b612f46919061410a565b905060006007600084815260200190815260200160002054905081811461302b576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506130b0919061410a565b90506000600960008481526020019081526020016000205490506000600883815481106130e0576130df61438d565b5b9060005260206000200154905080600883815481106131025761310161438d565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806131515761315061435e565b5b6001900381819060005260206000200160009055905550505050565b600061317883610fcd565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561325c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325390613e55565b60405180910390fd5b613265816120b0565b156132a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329c90613d75565b60405180910390fd5b6132b160008383612bdb565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546133019190614029565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b6040518061022001604052806011905b60608152602001906001900390816133dd5790505090565b600061340861340384613fb5565b613f90565b905082815260208101848484011115613424576134236143f0565b5b61342f8482856141b2565b509392505050565b60008135905061344681614a48565b92915050565b60008135905061345b81614a5f565b92915050565b60008135905061347081614a76565b92915050565b60008151905061348581614a76565b92915050565b600082601f8301126134a05761349f6143eb565b5b81356134b08482602086016133f5565b91505092915050565b6000813590506134c881614a8d565b92915050565b6000602082840312156134e4576134e36143fa565b5b60006134f284828501613437565b91505092915050565b60008060408385031215613512576135116143fa565b5b600061352085828601613437565b925050602061353185828601613437565b9150509250929050565b600080600060608486031215613554576135536143fa565b5b600061356286828701613437565b935050602061357386828701613437565b9250506040613584868287016134b9565b9150509250925092565b600080600080608085870312156135a8576135a76143fa565b5b60006135b687828801613437565b94505060206135c787828801613437565b93505060406135d8878288016134b9565b925050606085013567ffffffffffffffff8111156135f9576135f86143f5565b5b6136058782880161348b565b91505092959194509250565b60008060408385031215613628576136276143fa565b5b600061363685828601613437565b92505060206136478582860161344c565b9150509250929050565b60008060408385031215613668576136676143fa565b5b600061367685828601613437565b9250506020613687858286016134b9565b9150509250929050565b6000602082840312156136a7576136a66143fa565b5b60006136b584828501613461565b91505092915050565b6000602082840312156136d4576136d36143fa565b5b60006136e284828501613476565b91505092915050565b600060208284031215613701576137006143fa565b5b600061370f848285016134b9565b91505092915050565b6137218161413e565b82525050565b61373081614150565b82525050565b600061374182613fe6565b61374b8185613ffc565b935061375b8185602086016141c1565b613764816143ff565b840191505092915050565b600061377a82613ff1565b613784818561400d565b93506137948185602086016141c1565b61379d816143ff565b840191505092915050565b60006137b382613ff1565b6137bd818561401e565b93506137cd8185602086016141c1565b80840191505092915050565b60006137e6601e8361400d565b91506137f182614410565b602082019050919050565b6000613809602b8361400d565b915061381482614439565b604082019050919050565b600061382c60328361400d565b915061383782614488565b604082019050919050565b600061384f60108361401e565b915061385a826144d7565b601082019050919050565b600061387260268361400d565b915061387d82614500565b604082019050919050565b6000613895601c8361400d565b91506138a08261454f565b602082019050919050565b60006138b8606c8361401e565b91506138c382614578565b606c82019050919050565b60006138db60248361400d565b91506138e682614613565b604082019050919050565b60006138fe60198361400d565b915061390982614662565b602082019050919050565b6000613921602c8361400d565b915061392c8261468b565b604082019050919050565b600061394460388361400d565b915061394f826146da565b604082019050919050565b6000613967602a8361400d565b915061397282614729565b604082019050919050565b600061398a60298361400d565b915061399582614778565b604082019050919050565b60006139ad60028361401e565b91506139b8826147c7565b600282019050919050565b60006139d060208361400d565b91506139db826147f0565b602082019050919050565b60006139f3602c8361400d565b91506139fe82614819565b604082019050919050565b6000613a1660208361400d565b9150613a2182614868565b602082019050919050565b6000613a3960108361400d565b9150613a4482614891565b602082019050919050565b6000613a5c60298361400d565b9150613a67826148ba565b604082019050919050565b6000613a7f60218361400d565b9150613a8a82614909565b604082019050919050565b6000613aa2601d8361401e565b9150613aad82614958565b601d82019050919050565b6000613ac560318361400d565b9150613ad082614981565b604082019050919050565b6000613ae8602c8361400d565b9150613af3826149d0565b604082019050919050565b6000613b0b601f8361400d565b9150613b1682614a1f565b602082019050919050565b613b2a816141a8565b82525050565b6000613b3c82846137a8565b915081905092915050565b6000613b5382856137a8565b9150613b5f82846137a8565b91508190509392505050565b6000613b77828c6137a8565b9150613b83828b6137a8565b9150613b8f828a6137a8565b9150613b9b82896137a8565b9150613ba782886137a8565b9150613bb382876137a8565b9150613bbf82866137a8565b9150613bcb82856137a8565b9150613bd782846137a8565b91508190509a9950505050505050505050565b6000613bf582613842565b9150613c0182856137a8565b9150613c0c826138ab565b9150613c1882846137a8565b9150613c23826139a0565b91508190509392505050565b6000613c3a82613a95565b9150613c4682846137a8565b915081905092915050565b6000602082019050613c666000830184613718565b92915050565b6000608082019050613c816000830187613718565b613c8e6020830186613718565b613c9b6040830185613b21565b8181036060830152613cad8184613736565b905095945050505050565b6000602082019050613ccd6000830184613727565b92915050565b60006020820190508181036000830152613ced818461376f565b905092915050565b60006020820190508181036000830152613d0e816137d9565b9050919050565b60006020820190508181036000830152613d2e816137fc565b9050919050565b60006020820190508181036000830152613d4e8161381f565b9050919050565b60006020820190508181036000830152613d6e81613865565b9050919050565b60006020820190508181036000830152613d8e81613888565b9050919050565b60006020820190508181036000830152613dae816138ce565b9050919050565b60006020820190508181036000830152613dce816138f1565b9050919050565b60006020820190508181036000830152613dee81613914565b9050919050565b60006020820190508181036000830152613e0e81613937565b9050919050565b60006020820190508181036000830152613e2e8161395a565b9050919050565b60006020820190508181036000830152613e4e8161397d565b9050919050565b60006020820190508181036000830152613e6e816139c3565b9050919050565b60006020820190508181036000830152613e8e816139e6565b9050919050565b60006020820190508181036000830152613eae81613a09565b9050919050565b60006020820190508181036000830152613ece81613a2c565b9050919050565b60006020820190508181036000830152613eee81613a4f565b9050919050565b60006020820190508181036000830152613f0e81613a72565b9050919050565b60006020820190508181036000830152613f2e81613ab8565b9050919050565b60006020820190508181036000830152613f4e81613adb565b9050919050565b60006020820190508181036000830152613f6e81613afe565b9050919050565b6000602082019050613f8a6000830184613b21565b92915050565b6000613f9a613fab565b9050613fa68282614226565b919050565b6000604051905090565b600067ffffffffffffffff821115613fd057613fcf6143bc565b5b613fd9826143ff565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000614034826141a8565b915061403f836141a8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614074576140736142d1565b5b828201905092915050565b600061408a826141a8565b9150614095836141a8565b9250826140a5576140a4614300565b5b828204905092915050565b60006140bb826141a8565b91506140c6836141a8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140ff576140fe6142d1565b5b828202905092915050565b6000614115826141a8565b9150614120836141a8565b925082821015614133576141326142d1565b5b828203905092915050565b600061414982614188565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156141df5780820151818401526020810190506141c4565b838111156141ee576000848401525b50505050565b6000600282049050600182168061420c57607f821691505b602082108114156142205761421f61432f565b5b50919050565b61422f826143ff565b810181811067ffffffffffffffff8211171561424e5761424d6143bc565b5b80604052505050565b6000614262826141a8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614295576142946142d1565b5b600182019050919050565b60006142ab826141a8565b91506142b6836141a8565b9250826142c6576142c5614300565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f417661782076616c75652073656e74206973206e6f7420636f72726563740000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f7b226e616d65223a202253746174202300000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f222c20226465736372697074696f6e223a20224261736564205374617473206160008201527f7265207468652062617365207374617473206f6620746865206d65746176657260208201527f73652e2e2e222c2022696d616765223a2022646174613a696d6167652f73766760408201527f2b786d6c3b6261736536342c0000000000000000000000000000000000000000606082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f227d000000000000000000000000000000000000000000000000000000000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f546f6b656e20494420696e76616c696400000000000000000000000000000000600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b614a518161413e565b8114614a5c57600080fd5b50565b614a6881614150565b8114614a7357600080fd5b50565b614a7f8161415c565b8114614a8a57600080fd5b50565b614a96816141a8565b8114614aa157600080fd5b5056fe3c2f746578743e3c7465787420783d2231302220793d2236302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d223136302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d223132302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d2238302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d223130302220636c6173733d2262617365223e3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207072657365727665417370656374526174696f3d22784d696e594d696e206d656574222076696577426f783d223020302033353020333530223e3c7374796c653e2e62617365207b2066696c6c3a2077686974653b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20313470783b207d3c2f7374796c653e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d22626c61636b22202f3e3c7465787420783d2231302220793d2232302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d223134302220636c6173733d2262617365223e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f3c2f746578743e3c7465787420783d2231302220793d2234302220636c6173733d2262617365223ea2646970667358221220da33d47d5d174528abd71dc7df5c59558caacaeae43b092d75fcd8126afca72e64736f6c63430008060033