0x6101e060405260006003556000600e553480156200001c57600080fd5b50604051620062a5380380620062a58339810160408190526200003f91620007d7565b6019826040518060400160405280601281526020017120b2b937b23937b6b29023b7bb32b93737b960711b81525084816200007f620001a460201b60201c565b6200008c826000620001bf565b60e0526200009c816001620001bf565b61010052815160208084019190912061012052815190820120610140524660a0526200012c6101205161014051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526002620001438382620008bb565b506001600160a01b0390811661016052919091166101808190526101a052506200016d81620001f8565b50600c8054336001600160a01b03199182168117909255600a805490911690911790556001600160a01b03166101c0525062000a48565b6040805180820190915260018152603160f81b602082015290565b6000602083511015620001df57620001d7836200037b565b9050620001f2565b81620001ec8482620008bb565b50600090505b92915050565b6064811115620002815760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a4015b60405180910390fd5b60006200028d620003be565b905080158015906200029f5750600954155b156200030757604080518082019091526000815260099060208101620002c584620003ed565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b6200033c62000327620003196200045c565b65ffffffffffff16620004d3565b6200033284620003ed565b600991906200053a565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b600080829050601f81511115620003a9578260405163305a27a960e01b815260040162000278919062000987565b8051620003b682620009d7565b179392505050565b60095460009015620003e457620003d6600962000557565b6001600160e01b0316905090565b6008545b905090565b60006001600160e01b03821115620004585760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b606482015260840162000278565b5090565b6000610180516001600160a01b03166391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015620004be575060408051601f3d908101601f19168201909252620004bb91810190620009fc565b60015b620004ce57620003e843620005a5565b919050565b600063ffffffff821115620004585760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b606482015260840162000278565b6000806200054a8585856200060e565b915091505b935093915050565b805460009080156200059b5762000583836200057560018462000a26565b600091825260209091200190565b5464010000000090046001600160e01b03166200059e565b60005b9392505050565b600065ffffffffffff821115620004585760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b606482015260840162000278565b8254600090819080156200076357600062000630876200057560018562000a26565b60408051808201909152905463ffffffff8082168084526401000000009092046001600160e01b031660208401529192509087161015620006b45760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b6579730000000000604482015260640162000278565b805163ffffffff808816911603620007025784620006d9886200057560018662000a26565b80546001600160e01b03929092166401000000000263ffffffff90921691909117905562000752565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216640100000000029216919091179101555b6020015192508391506200054f9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a8152918220955192519093166401000000000291909316179201919091559050816200054f565b6001600160a01b0381168114620007d457600080fd5b50565b60008060408385031215620007eb57600080fd5b8251620007f881620007be565b60208401519092506200080b81620007be565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200084157607f821691505b6020821081036200086257634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620008b657600081815260208120601f850160051c81016020861015620008915750805b601f850160051c820191505b81811015620008b2578281556001016200089d565b5050505b505050565b81516001600160401b03811115620008d757620008d762000816565b620008ef81620008e884546200082c565b8462000868565b602080601f8311600181146200092757600084156200090e5750858301515b600019600386901b1c1916600185901b178555620008b2565b600085815260208120601f198616915b82811015620009585788860151825594840194600190910190840162000937565b5085821015620009775787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208083528351808285015260005b81811015620009b65785810183015185820160400152820162000998565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620008625760001960209190910360031b1b16919050565b60006020828403121562000a0f57600080fd5b815165ffffffffffff811681146200059e57600080fd5b81810381811115620001f257634e487b7160e01b600052601160045260246000fd5b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c05161576662000b3f6000396000818161065c01526116d101526000818161050b01528181611c62015281816125cf01528181612779015281816127fd01528181612856015281816129970152612a13015260008181610c11015281816117c101528181611bb501528181611dda01528181612168015281816126ed015281816128ff0152612a8d015260008181610b5101526112ef015260006141870152600061415f01526000611b6101526000611b37015260006140ba015260006140e40152600061410e01526157666000f3fe60806040526004361061039b5760003560e01c806367e2e078116101dc578063c01f9e3711610102578063dea112a6116100a0578063f8ce560a1161006f578063f8ce560a14610b9f578063f945970a14610bbf578063fa25f37714610bdf578063fc0c546a14610bff57600080fd5b8063dea112a614610aeb578063deaaa7cc14610b0b578063e2fdcc1714610b3f578063f23a6e6114610b7357600080fd5b8063cf781d45116100dc578063cf781d4514610a45578063d152a32e14610a65578063d8bff44014610a85578063dd4e2ba514610aa557600080fd5b8063c01f9e37146109d9578063c28bc2fa14610a12578063c2e863e414610a2557600080fd5b80639f8b33921161017a578063b58131b011610149578063b58131b014610963578063b5cc143a14610978578063bc197c811461098d578063be443ad0146109b957600080fd5b80639f8b3392146108f8578063a67d06351461090e578063a7713a701461092e578063aedbfe331461094357600080fd5b806391ddadf4116101b657806391ddadf41461088357806391f36633146108af57806395b6d6bd146108cf57806397c3d334146108e457600080fd5b806367e2e0781461082557806384b0196e1461083b57806385f2aef21461086357600080fd5b80633e4f49e6116102c1578063544ffc9c1161025f57806360c4247f1161022e57806360c4247f1461079e57806360e69a7b146107be578063638663ac146107d157806364390ff1146107e657600080fd5b8063544ffc9c146106df57806354fd4d5014610734578063592a84941461075e57806359d46ffc1461077e57600080fd5b806349758df21161029b57806349758df21461067e5780634bf5d7e91461069e578063501fa8bd146106b3578063525f9c3e146106c957600080fd5b80633e4f49e6146105fd578063452115d61461062a57806346c96aac1461064a57600080fd5b8063150b7a02116103395780632d63f693116103085780632d63f6931461055d5780632fe3e26114610593578063380a243a146105c75780633932abb1146105e757600080fd5b8063150b7a02146104a05780631d28dec7146104d95780631f850716146104f957806322b36ac61461054557600080fd5b806306fdde031161037557806306fdde031461041e578063095cf5c6146104405780630f8a88361461046057806311fd26f41461048057600080fd5b806301ffc9a7146103a957806302a251a3146103de57806306f3f9e6146103fe57600080fd5b366103a457005b005b600080fd5b3480156103b557600080fd5b506103c96103c4366004614659565b610c33565b60405190151581526020015b60405180910390f35b3480156103ea57600080fd5b50620697805b6040519081526020016103d5565b34801561040a57600080fd5b506103a2610419366004614683565b610ca0565b34801561042a57600080fd5b50610433610d12565b6040516103d591906146ec565b34801561044c57600080fd5b506103a261045b366004614714565b610da4565b34801561046c57600080fd5b506103f061047b36600461495d565b610e18565b34801561048c57600080fd5b506103f061049b366004614a27565b6111bb565b3480156104ac57600080fd5b506104c06104bb366004614a5c565b6111e7565b6040516001600160e01b031990911681526020016103d5565b3480156104e557600080fd5b506103a26104f4366004614683565b6111f8565b34801561050557600080fd5b5061052d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103d5565b34801561055157600080fd5b506103f0633b9aca0081565b34801561056957600080fd5b506103f0610578366004614683565b6000908152600460205260409020546001600160401b031690565b34801561059f57600080fd5b506103f07fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af8881565b3480156105d357600080fd5b506103a26105e2366004614b0f565b611230565b3480156105f357600080fd5b506202a3006103f0565b34801561060957600080fd5b5061061d610618366004614683565b61143f565b6040516103d59190614b77565b34801561063657600080fd5b506103f0610645366004614b9f565b61159b565b34801561065657600080fd5b5061052d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561068a57600080fd5b506103a2610699366004614683565b6116aa565b3480156106aa57600080fd5b506104336117bd565b3480156106bf57600080fd5b506103f06101f481565b3480156106d557600080fd5b506103f060035481565b3480156106eb57600080fd5b506107196106fa366004614683565b6000908152600760205260409020805460018201546002909201549092565b604080519384526020840192909252908201526060016103d5565b34801561074057600080fd5b506040805180820190915260018152603160f81b6020820152610433565b34801561076a57600080fd5b506103a2610779366004614683565b61187f565b34801561078a57600080fd5b50600b5461052d906001600160a01b031681565b3480156107aa57600080fd5b506103f06107b9366004614683565b611900565b6103f06107cc366004614c2e565b6119b1565b3480156107dd57600080fd5b506103a2611ac3565b3480156107f257600080fd5b506103c9610801366004614cd4565b60009182526007602090815260408084209284526003909201905290205460ff1690565b34801561083157600080fd5b506103f061271081565b34801561084757600080fd5b50610850611b29565b6040516103d59796959493929190614d31565b34801561086f57600080fd5b50600a5461052d906001600160a01b031681565b34801561088f57600080fd5b50610898611bb1565b60405165ffffffffffff90911681526020016103d5565b3480156108bb57600080fd5b506103f06108ca366004614cd4565b611c3f565b3480156108db57600080fd5b506103a2611cea565b3480156108f057600080fd5b5060646103f0565b34801561090457600080fd5b506103f0600e5481565b34801561091a57600080fd5b50600d5461052d906001600160a01b031681565b34801561093a57600080fd5b506103f0611d69565b34801561094f57600080fd5b506103f061095e366004614c2e565b611d93565b34801561096f57600080fd5b506103f0611dd0565b34801561098457600080fd5b506103a2611e87565b34801561099957600080fd5b506104c06109a8366004614da1565b63bc197c8160e01b95945050505050565b3480156109c557600080fd5b506103f06109d4366004614e52565b611f06565b3480156109e557600080fd5b506103f06109f4366004614683565b6000908152600460205260409020600101546001600160401b031690565b6103a2610a20366004614edd565b611f5d565b348015610a3157600080fd5b506103f0610a40366004614f20565b61204f565b348015610a5157600080fd5b506103f0610a60366004614f87565b612098565b348015610a7157600080fd5b506103a2610a80366004614714565b6120af565b348015610a9157600080fd5b50600c5461052d906001600160a01b031681565b348015610ab157600080fd5b506040805180820190915260208082527f737570706f72743d627261766f2671756f72756d3d666f722c6162737461696e90820152610433565b348015610af757600080fd5b506103f0610b06366004614fd1565b612123565b348015610b1757600080fd5b506103f07f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f81565b348015610b4b57600080fd5b5061052d7f000000000000000000000000000000000000000000000000000000000000000081565b348015610b7f57600080fd5b506104c0610b8e366004615006565b63f23a6e6160e01b95945050505050565b348015610bab57600080fd5b506103f0610bba366004614683565b612145565b348015610bcb57600080fd5b506103f0610bda36600461506e565b6121ef565b348015610beb57600080fd5b506103f0610bfa36600461511e565b6122e9565b348015610c0b57600080fd5b5061052d7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b031982166367276c3760e01b1480610c6457506001600160e01b03198216631debdb9560e31b145b80610c7f57506001600160e01b03198216630271189760e51b145b80610c9a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b333014610cef5760405162461bcd60e51b8152602060048201526018602482015277476f7665726e6f723a206f6e6c79476f7665726e616e636560401b60448201526064015b60405180910390fd5b610d06565b80610cff6005612355565b03610cf457505b610d0f816123d4565b50565b606060028054610d2190615186565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4d90615186565b8015610d9a5780601f10610d6f57610100808354040283529160200191610d9a565b820191906000526020600020905b815481529060010190602001808311610d7d57829003601f168201915b5050505050905090565b6001600160a01b038116610dcb5760405163d92e233d60e01b815260040160405180910390fd5b600a546001600160a01b03163314610df657604051633a7cfa5d60e21b815260040160405180910390fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60003381610e24611bb1565b65ffffffffffff169050610e36611dd0565b610e46838a61049b6001866151d6565b1015610eae5760405162461bcd60e51b815260206004820152603160248201527f476f7665726e6f723a2070726f706f73657220766f7465732062656c6f7720706044820152701c9bdc1bdcd85b081d1a1c995cda1bdb19607a1b6064820152608401610ce6565b6000610ec4888888888051906020012087611d93565b90508651885114610ee75760405162461bcd60e51b8152600401610ce6906151e9565b8551885114610f085760405162461bcd60e51b8152600401610ce6906151e9565b6000885111610f595760405162461bcd60e51b815260206004820152601860248201527f476f7665726e6f723a20656d7074792070726f706f73616c00000000000000006044820152606401610ce6565b600081815260046020526040902054600160401b90046001600160a01b031615610fcf5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c20616c72656164792065786973746044820152607360f81b6064820152608401610ce6565b6000610fde6202a3008461522a565b90506000610fef620697808361522a565b905060405180610100016040528061100684612542565b6001600160401b031681526001600160a01b03871660208201526000604082015260600161103383612542565b6001600160401b0390811682526000602080840182905260408085018390526060808601849052608095860184905289845260048352928190208651815493880151888401519187166001600160e01b031990951694909417600160401b6001600160a01b039095168502176001600160e01b0316600160e01b60e092831c0217825593870151958701519585169590911c90910293909317600184015560a08401516002909301805460c0860151929095015161ffff1990951693151561ff00191693909317610100911515919091021762ff0000191662010000931515939093029290921790558a517f7d84a6263ae0d98d3329bd7b46bb4e8d6f98cd35a7adb45c274c8b7fd5ebd5e091859188918e918e9181111561115757611157614731565b60405190808252806020026020018201604052801561118a57816020015b60608152602001906001900390816111755790505b508d88888f6040516111a4999897969594939291906152cb565b60405180910390a150909998505050505050505050565b60006111dd8484846111d860408051602081019091526000815290565b6125ae565b90505b9392505050565b630a85bd0160e11b5b949350505050565b600c546001600160a01b0316331461122357604051636184ba1160e01b815260040160405180910390fd5b61122c81612b05565b5050565b600084815260046020526040812060609161124a8761143f565b9050600181600881111561126057611260614b61565b148061127d5750600081600881111561127b5761127b614b61565b145b6112c95760405162461bcd60e51b815260206004820152601f60248201527f476f7665726e6f723a206e6f7420616374697665206f722070656e64696e67006044820152606401610ce6565b81546001600160401b03163360006112e3828a85896125ae565b905060006127106003547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638e539e8c876040518263ffffffff1660e01b815260040161133b91815260200190565b602060405180830381865afa158015611358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137c91906153a2565b61138691906153bb565b61139091906153e8565b90508082116113ed5760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20696e73756666696369656e7420766f74696e6720706f6044820152623bb2b960e91b6064820152608401610ce6565b89836001600160a01b03168c7fdb700dee4c69422ecdfd4ad68ffe25aa39c6ddffef4657f727571e095b642cc58c8c60405161142a9291906153fc565b60405180910390a45050505050505050505050565b6000818152600460205260408120600281015460ff16156114635750600792915050565b6002810154610100900460ff161561147e5750600292915050565b600281015462010000900460ff161561149a5750600892915050565b6000838152600460205260408120546001600160401b0316908190036115025760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a20756e6b6e6f776e2070726f706f73616c2069640000006044820152606401610ce6565b600061150c611bb1565b65ffffffffffff16905080821061152857506000949350505050565b6000858152600460205260409020600101546001600160401b03168181106115565750600195945050505050565b61155f86612c30565b801561157e575060008681526007602052604090208054600190910154115b1561158f5750600495945050505050565b50600395945050505050565b600033816115ac8787878786611d93565b905060006115b98261143f565b60088111156115ca576115ca614b61565b146116175760405162461bcd60e51b815260206004820152601c60248201527f476f7665726e6f723a20746f6f206c61746520746f2063616e63656c000000006044820152606401610ce6565b6000818152600460205260409020546001600160a01b03838116600160401b90920416146116925760405162461bcd60e51b815260206004820152602260248201527f476f7665726e6f723a206f6e6c792070726f706f7365722063616e2063616e63604482015261195b60f21b6064820152608401610ce6565b61169f8787878786612c7c565b979650505050505050565b633b9aca008111156116cf57604051634fa0e5e360e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c340a246040518163ffffffff1660e01b8152600401602060405180830381865afa15801561172d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611751919061542b565b6001600160a01b0316336001600160a01b03161461178257604051633b8d9d7560e21b815260040160405180910390fd5b60038190556040518181527f5abd4079db52a376d0f48814132d5f1f10624699a317971509682d7ec6db0a4f9060200160405180910390a150565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634bf5d7e96040518163ffffffff1660e01b8152600401600060405180830381865afa92505050801561183e57506040513d6000823e601f3d908101601f1916820160405261183b9190810190615448565b60015b61187a575060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b919050565b600a546001600160a01b031633146118aa57604051633a7cfa5d60e21b815260040160405180910390fd5b6101f48111156118cd576040516314263b7360e11b815260040160405180910390fd5b600e81905560405181907f586fc658003980a786f5709cd2ad386034e0424082c948c863d3116f8f66566990600090a250565b600954600090808203611917575050600854919050565b600060096119266001846151d6565b81548110611936576119366154b5565b60009182526020918290206040805180820190915291015463ffffffff8116808352600160201b9091046001600160e01b0316928201929092529150841061198c57602001516001600160e01b03169392505050565b6119a061199885612dba565b600990612e1f565b6001600160e01b0316949350505050565b6000806119c18787878787611d93565b905060006119ce8261143f565b905060048160088111156119e4576119e4614b61565b14611a3b5760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a2070726f706f73616c206e6f74207375636365737366756044820152601b60fa1b6064820152608401610ce6565b60008281526004602052604090819020600201805460ff19166001179055517f712ae1383f79ac853f8d882153778e0260ef8f03b504e2866e0593e04d2b291f90611a899084815260200190565b60405180910390a1611a9e8289898989612ed2565b611aab8289898989612f5c565b611ab88289898989612ed2565b509695505050505050565b600c546001600160a01b03163314611aee57604051636184ba1160e01b815260040160405180910390fd5b600c80546001600160a01b03191690556040517f62acb1bd035e6b0070db32c18d981d7ef3d5921d59efd75de499c7632df8dd7990600090a1565b600060608082808083611b5c7f00000000000000000000000000000000000000000000000000000000000000008361305e565b611b877f0000000000000000000000000000000000000000000000000000000000000000600161305e565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166391ddadf46040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c2d575060408051601f3d908101601f19168201909252611c2a918101906154cb565b60015b61187a57611c3a4361310a565b905090565b6040516331a9108f60e11b81526004810183905260009081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccd919061542b565b90506111f0818585604051806020016040528060008152506125ae565b600d546001600160a01b03163314611d155760405163f37fda0760e01b815260040160405180910390fd5b600d8054600c80546001600160a01b0383166001600160a01b031991821681179092559091169091556040517f03ae59c1e4263c9049c7aab44b77283fa0484d5d0f714e102cd9857f8fc5274d90600090a2565b60095460009015611d8c57611d7e6009613171565b6001600160e01b0316905090565b5060085490565b60008585858585604051602001611dae9594939291906154f3565b60408051601f1981840301815291905280516020909101209695505050505050565b6000612710600e547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638e539e8c600142611e1491906151d6565b6040518263ffffffff1660e01b8152600401611e3291815260200190565b602060405180830381865afa158015611e4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7391906153a2565b611e7d91906153bb565b611c3a91906153e8565b600b546001600160a01b03163314611eb25760405163071110c760e51b815260040160405180910390fd5b600b8054600a80546001600160a01b0383166001600160a01b031991821681179092559091169091556040517fe25466fe8250322bee73bc230e10775fe0da57be723ebdabfdc8b62b4ba0d10c90600090a2565b600080339050611f518882898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92506131aa915050565b98975050505050505050565b333014611fa75760405162461bcd60e51b8152602060048201526018602482015277476f7665726e6f723a206f6e6c79476f7665726e616e636560401b6044820152606401610ce6565b611fbe565b80611fb76005612355565b03611fac57505b600080856001600160a01b0316858585604051611fdc929190615176565b60006040518083038185875af1925050503d8060008114612019576040519150601f19603f3d011682016040523d82523d6000602084013e61201e565b606091505b509150915061204682826040518060600160405280602881526020016156e260289139613304565b50505050505050565b60008033905061169f8782888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061331d92505050565b60006120a6858585856125ae565b95945050505050565b600c546001600160a01b031633146120da57604051636184ba1160e01b815260040160405180910390fd5b6001600160a01b0381166121015760405163d92e233d60e01b815260040160405180910390fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000803390506120a6858286866040518060200160405280600081525061331d565b6000606461215283611900565b604051632394e7a360e21b8152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638e539e8c90602401602060405180830381865afa1580156121b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121db91906153a2565b6121e591906153bb565b610c9a91906153e8565b60008061229361228b7fb3b3f3b703cd84ce352197dcff232b1b5d3cfb2025ce47cf04742d0651f1af888d8c8c8c60405161222b929190615176565b60405180910390208b80519060200120604051602001612270959493929190948552602085019390935260ff9190911660408401526060830152608082015260a00190565b6040516020818303038152906040528051906020012061334b565b868686613378565b90506122da8b828c8c8c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508e92506131aa915050565b9b9a5050505050505050505050565b604080517f150214d74d59b7d1e90c73fc22ef3d991dd0a76b046543d4d80ab92d2a50328f602082015290810187905260ff8516606082015260009081906123379061228b90608001612270565b9050611f51888289896040518060200160405280600081525061331d565b60006123708254600f81810b600160801b909204900b131590565b1561238e57604051631ed9509560e11b815260040160405180910390fd5b508054600f0b6000818152600180840160205260408220805492905583546fffffffffffffffffffffffffffffffff191692016001600160801b03169190911790915590565b60648111156124575760405162461bcd60e51b815260206004820152604360248201527f476f7665726e6f72566f74657351756f72756d4672616374696f6e3a2071756f60448201527f72756d4e756d657261746f72206f7665722071756f72756d44656e6f6d696e616064820152623a37b960e91b608482015260a401610ce6565b6000612461611d69565b905080158015906124725750600954155b156124d657604080518082019091526000815260099060208101612495846133a0565b6001600160e01b039081169091528254600181018455600093845260209384902083519490930151909116600160201b0263ffffffff909316929092179101555b6125036124f16124e4611bb1565b65ffffffffffff16612dba565b6124fa846133a0565b60099190613409565b505060408051828152602081018490527f0553476bf02ef2726e8ce5ced78d63e26e602e4a2257b1f559418e24b4633997910160405180910390a15050565b60006001600160401b038211156125aa5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401610ce6565b5090565b60405161f8e560ef1b81526004810184905260009081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637c72800090602401602060405180830381865afa158015612616573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263a919061554f565b9050600281600281111561265057612650614b61565b036126a75760405162461bcd60e51b815260206004820152602160248201527f476f7665726e6f723a206d616e61676564206e66742063616e6e6f7420766f746044820152606560f81b6064820152608401610ce6565b60008160028111156126bb576126bb614b61565b0361276057604051634d6fb77560e01b81526001600160a01b03878116600483015260248201879052604482018690527f00000000000000000000000000000000000000000000000000000000000000001690634d6fb77590606401602060405180830381865afa158015612734573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275891906153a2565b9150506111f0565b6040516319a0a9d560e01b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906319a0a9d590602401602060405180830381865afa1580156127c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ec91906153a2565b905060006128246001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168388613424565b604051631e09967560e31b81526004810184905265ffffffffffff821660248201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f04cb3a890604401608060405180830381865afa15801561289d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c19190615570565b60600151905080600003612a6057604051634d6fb77560e01b81526001600160a01b038a81166004830152602482018a9052604482018990526000917f000000000000000000000000000000000000000000000000000000000000000090911690634d6fb77590606401602060405180830381865afa158015612948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296c91906153a2565b60405163145615f560e21b8152600481018b9052602481018690529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063515857d490604401602060405180830381865afa1580156129de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0291906153a2565b90506000612a3b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016878d8d613715565b905082612a48828461522a565b612a52919061522a565b9750505050505050506111f0565b604051634d6fb77560e01b81526001600160a01b038a81166004830152602482018a9052604482018990527f00000000000000000000000000000000000000000000000000000000000000001690634d6fb77590606401602060405180830381865afa158015612ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af891906153a2565b9998505050505050505050565b600080612b118361143f565b90506008816008811115612b2757612b27614b61565b14158015612b4757506002816008811115612b4457612b44614b61565b14155b8015612b6557506005816008811115612b6257612b62614b61565b14155b8015612b8357506007816008811115612b8057612b80614b61565b14155b612bcf5760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f74206163746976650000006044820152606401610ce6565b60008381526004602052604090819020600201805462ff0000191662010000179055517fde0cea2a3a0097cc3d981d40c375407760e85bc9c5e69aea449ac3885f8615c690612c219085815260200190565b60405180910390a15090919050565b600081815260076020526040812060028101546001820154612c52919061522a565b600084815260046020526040902054612c73906001600160401b0316612145565b11159392505050565b600080612c8c8787878787611d93565b90506000612c998261143f565b90506008816008811115612caf57612caf614b61565b14158015612ccf57506002816008811115612ccc57612ccc614b61565b14155b8015612ced57506005816008811115612cea57612cea614b61565b14155b8015612d0b57506007816008811115612d0857612d08614b61565b14155b612d575760405162461bcd60e51b815260206004820152601d60248201527f476f7665726e6f723a2070726f706f73616c206e6f74206163746976650000006044820152606401610ce6565b60008281526004602052604090819020600201805461ff001916610100179055517f789cf55be980739dad1d0699b93b58e806b51c9d96619bfa8fe0a28abaa7b30c90612da79084815260200190565b60405180910390a1509695505050505050565b600063ffffffff8211156125aa5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b6064820152608401610ce6565b815460009081816005811115612e7c576000612e3a84613cfc565b612e4490856151d6565b60008881526020902090915081015463ffffffff9081169087161015612e6c57809150612e7a565b612e7781600161522a565b92505b505b6000612e8a87878585613de4565b90508015612ec557612eaf87612ea16001846151d6565b600091825260209091200190565b54600160201b90046001600160e01b031661169f565b6000979650505050505050565b612f55565b8181101561204657306001600160a01b0316868281518110612efb57612efb6154b5565b60200260200101516001600160a01b031603612f4557612f45848281518110612f2657612f266154b5565b6020026020010151805190602001206005613e4290919063ffffffff16565b612f4e816155db565b9050612ed7565b5050505050565b600060405180606001604052806027815260200161570a60279139855190915060005b8181101561305457600080888381518110612f9c57612f9c6154b5565b60200260200101516001600160a01b0316888481518110612fbf57612fbf6154b5565b6020026020010151888581518110612fd957612fd96154b5565b6020026020010151604051612fee91906155f4565b60006040518083038185875af1925050503d806000811461302b576040519150601f19603f3d011682016040523d82523d6000602084013e613030565b606091505b5091509150613040828287613304565b5050508061304d906155db565b9050612f7f565b5050505050505050565b606060ff8316156130795761307283613e7e565b9050610c9a565b81805461308590615186565b80601f01602080910402602001604051908101604052809291908181526020018280546130b190615186565b80156130fe5780601f106130d3576101008083540402835291602001916130fe565b820191906000526020600020905b8154815290600101906020018083116130e157829003601f168201915b50505050509050610c9a565b600065ffffffffffff8211156125aa5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203460448201526538206269747360d01b6064820152608401610ce6565b805460009080156131a15761318b83612ea16001846151d6565b54600160201b90046001600160e01b03166111e0565b60009392505050565b600086815260046020526040812060016131c38961143f565b60088111156131d4576131d4614b61565b1461322d5760405162461bcd60e51b815260206004820152602360248201527f476f7665726e6f723a20766f7465206e6f742063757272656e746c792061637460448201526269766560e81b6064820152608401610ce6565b805460009061324990899089906001600160401b0316876125ae565b90506132588988888488613eb3565b83516000036132ae5786886001600160a01b03167f02ecdb7f59712b7ae7cb6851cce1c64e98f94e5b51ec63809112c054622b25548b89858a6040516132a19493929190615610565b60405180910390a3611f51565b86886001600160a01b03167f7dcdc52e34b09364e599a32b0e3ccb5b730a7b952ddbdf4f237ea785da228ce78b89858a8a6040516132f0959493929190615638565b60405180910390a398975050505050505050565b606083156133135750816111e0565b6111e08383614083565b6000613341868686868661333c60408051602081019091526000815290565b6131aa565b9695505050505050565b6000610c9a6133586140ad565b8360405161190160f01b8152600281019290925260228201526042902090565b6000806000613389878787876141d8565b915091506133968161429c565b5095945050505050565b60006001600160e01b038211156125aa5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b6064820152608401610ce6565b6000806134178585856143e6565b915091505b935093915050565b604051635058979360e01b81526004810183905260009081906001600160a01b03861690635058979390602401602060405180830381865afa15801561346e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061349291906154cb565b90508065ffffffffffff166000036134ae5760009150506111e0565b826001600160a01b03861663f04cb3a8866134ca600186615672565b6040516001600160e01b031960e085901b168152600481019290925265ffffffffffff166024820152604401608060405180830381865afa158015613513573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135379190615570565b511161355057613548600182615672565b9150506111e0565b604051631e09967560e31b8152600481018590526000602482015283906001600160a01b0387169063f04cb3a890604401608060405180830381865afa15801561359e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c29190615570565b5111156135d35760009150506111e0565b6000806135e1600184615672565b905061361760405180608001604052806000815260200160006001600160a01b0316815260200160008152602001600081525090565b8265ffffffffffff168265ffffffffffff161115613709576000600261363d8585615672565b6136479190615698565b6136519084615672565b604051631e09967560e31b8152600481018a905265ffffffffffff821660248201529091506001600160a01b038a169063f04cb3a890604401608060405180830381865afa1580156136a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136cb9190615570565b9150868260000151036136e45794506111e09350505050565b81518711156136f557809350613703565b613700600182615672565b92505b50613617565b50909695505050505050565b60405163539c6d4160e11b81526004810184905260009081906001600160a01b0387169063a738da8290602401602060405180830381865afa15801561375f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613783919061542b565b604051635058979360e01b8152600481018690529091506001600160a01b03821690635058979390602401602060405180830381865afa1580156137cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ef91906153a2565b6000036138005760009150506111f0565b6000866001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613840573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613864919061542b565b60405163f25e55a560e01b81526001600160a01b0380831660048301526024820188905291925060009160019183916138f0919087169063f25e55a590604401602060405180830381865afa1580156138c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138e591906153a2565b62093a808106900390565b6040516328a3532760e21b8152600481018a9052602481018290529091506000906001600160a01b0387169063a28d4c9c90604401602060405180830381865afa158015613942573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396691906153a2565b604051631277308160e21b8152600481018b90526024810182905290915060009081906001600160a01b038916906349dcc204906044016040805180830381865afa1580156139b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139dd91906156bd565b90925090506139f38462093a8084068403614585565b9350600062093a80613a0b86828e068e0383016151d6565b613a1591906153e8565b905060008115613ce95760005b82811015613ce7576001600160a01b038b1663a28d4c9c8f6001613a4962093a808c61522a565b613a5391906151d6565b6040516001600160e01b031960e085901b16815260048101929092526024820152604401602060405180830381865afa158015613a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab891906153a2565b95508a6001600160a01b03166349dcc2048f886040518363ffffffff1660e01b8152600401613af1929190918252602082015260400190565b6040805180830381865afa158015613b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b3191906156bd565b90955093506001600160a01b038b1663f7412baf816376f4be366001613b5a62093a808d61522a565b613b6491906151d6565b6040518263ffffffff1660e01b8152600401613b8291815260200190565b602060405180830381865afa158015613b9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bc391906153a2565b6040518263ffffffff1660e01b8152600401613be191815260200190565b6040805180830381865afa158015613bfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2191906156bd565b9250613c309050826001614585565b6040516392777b2960e01b81526001600160a01b038c81166004830152602482018a905291995089918d16906392777b2990604401602060405180830381865afa158015613c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ca691906153a2565b613cb090866153bb565b613cba91906153e8565b613cc4908a61522a565b9850613cd362093a808861522a565b965080613cdf816155db565b915050613a22565b505b50959d9c50505050505050505050505050565b600081600003613d0e57506000919050565b60006001613d1b8461459b565b901c6001901b90506001818481613d3457613d346153d2565b048201901c90506001818481613d4c57613d4c6153d2565b048201901c90506001818481613d6457613d646153d2565b048201901c90506001818481613d7c57613d7c6153d2565b048201901c90506001818481613d9457613d946153d2565b048201901c90506001818481613dac57613dac6153d2565b048201901c90506001818481613dc457613dc46153d2565b048201901c90506111e081828581613dde57613dde6153d2565b0461462f565b60005b81831015613e3a576000613dfb848461463e565b60008781526020902090915063ffffffff86169082015463ffffffff161115613e2657809250613e34565b613e3181600161522a565b93505b50613de7565b509392505050565b8154600160801b90819004600f0b6000818152600180860160205260409091209390935583546001600160801b03908116939091011602179055565b60408051602080825281830190925260609160ff84169160009180820181803683375050509182525060208101929092525090565b6000858152600760209081526040808320878452600381019092529091205460ff1615613f325760405162461bcd60e51b815260206004820152602760248201527f476f7665726e6f72566f74696e6753696d706c653a20766f746520616c726561604482015266191e4818d85cdd60ca1b6064820152608401610ce6565b60008311613f935760405162461bcd60e51b815260206004820152602860248201527f476f7665726e6f72566f74696e6753696d706c653a207a65726f20766f74696e60448201526719c81dd95a59da1d60c21b6064820152608401610ce6565b60008581526003820160205260409020805460ff1916600117905560ff8416613fd55782816000016000828254613fca919061522a565b9091555061407b9050565b60001960ff851601613ff55782816001016000828254613fca919061522a565b60011960ff8516016140155782816002016000828254613fca919061522a565b60405162461bcd60e51b815260206004820152603560248201527f476f7665726e6f72566f74696e6753696d706c653a20696e76616c69642076616044820152746c756520666f7220656e756d20566f74655479706560581b6064820152608401610ce6565b505050505050565b8151156140935781518083602001fd5b8060405162461bcd60e51b8152600401610ce691906146ec565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561410657507f000000000000000000000000000000000000000000000000000000000000000046145b1561413057507f000000000000000000000000000000000000000000000000000000000000000090565b611c3a604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561420f5750600090506003614293565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614263573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661428c57600060019250925050614293565b9150600090505b94509492505050565b60008160048111156142b0576142b0614b61565b036142b85750565b60018160048111156142cc576142cc614b61565b036143195760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ce6565b600281600481111561432d5761432d614b61565b0361437a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ce6565b600381600481111561438e5761438e614b61565b03610d0f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ce6565b82546000908190801561452c57600061440487612ea16001856151d6565b60408051808201909152905463ffffffff808216808452600160201b9092046001600160e01b0316602084015291925090871610156144855760405162461bcd60e51b815260206004820152601b60248201527f436865636b706f696e743a2064656372656173696e67206b65797300000000006044820152606401610ce6565b805163ffffffff8088169116036144cd57846144a688612ea16001866151d6565b80546001600160e01b0392909216600160201b0263ffffffff90921691909117905561451c565b6040805180820190915263ffffffff80881682526001600160e01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160201b029216919091179101555b60200151925083915061341c9050565b50506040805180820190915263ffffffff80851682526001600160e01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160201b02919093161792019190915590508161341c565b600081831161459457816111e0565b5090919050565b600080608083901c156145b057608092831c92015b604083901c156145c257604092831c92015b602083901c156145d457602092831c92015b601083901c156145e657601092831c92015b600883901c156145f857600892831c92015b600483901c1561460a57600492831c92015b600283901c1561461c57600292831c92015b600183901c15610c9a5760010192915050565b600081831061459457816111e0565b600061464d60028484186153e8565b6111e09084841661522a565b60006020828403121561466b57600080fd5b81356001600160e01b0319811681146111e057600080fd5b60006020828403121561469557600080fd5b5035919050565b60005b838110156146b757818101518382015260200161469f565b50506000910152565b600081518084526146d881602086016020860161469c565b601f01601f19169290920160200192915050565b6020815260006111e060208301846146c0565b6001600160a01b0381168114610d0f57600080fd5b60006020828403121561472657600080fd5b81356111e0816146ff565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561476f5761476f614731565b604052919050565b60006001600160401b0382111561479057614790614731565b5060051b60200190565b600082601f8301126147ab57600080fd5b813560206147c06147bb83614777565b614747565b82815260059290921b840181019181810190868411156147df57600080fd5b8286015b84811015611ab85780356147f6816146ff565b83529183019183016147e3565b600082601f83011261481457600080fd5b813560206148246147bb83614777565b82815260059290921b8401810191818101908684111561484357600080fd5b8286015b84811015611ab85780358352918301918301614847565b60006001600160401b0382111561487757614877614731565b50601f01601f191660200190565b60006148936147bb8461485e565b90508281528383830111156148a757600080fd5b828260208301376000602084830101529392505050565b600082601f8301126148cf57600080fd5b6111e083833560208501614885565b600082601f8301126148ef57600080fd5b813560206148ff6147bb83614777565b82815260059290921b8401810191818101908684111561491e57600080fd5b8286015b84811015611ab85780356001600160401b038111156149415760008081fd5b61494f8986838b01016148be565b845250918301918301614922565b600080600080600060a0868803121561497557600080fd5b8535945060208601356001600160401b038082111561499357600080fd5b61499f89838a0161479a565b955060408801359150808211156149b557600080fd5b6149c189838a01614803565b945060608801359150808211156149d757600080fd5b6149e389838a016148de565b935060808801359150808211156149f957600080fd5b508601601f81018813614a0b57600080fd5b614a1a88823560208401614885565b9150509295509295909350565b600080600060608486031215614a3c57600080fd5b8335614a47816146ff565b95602085013595506040909401359392505050565b60008060008060808587031215614a7257600080fd5b8435614a7d816146ff565b93506020850135614a8d816146ff565b92506040850135915060608501356001600160401b03811115614aaf57600080fd5b614abb878288016148be565b91505092959194509250565b60008083601f840112614ad957600080fd5b5081356001600160401b03811115614af057600080fd5b602083019150836020828501011115614b0857600080fd5b9250929050565b60008060008060608587031215614b2557600080fd5b843593506020850135925060408501356001600160401b03811115614b4957600080fd5b614b5587828801614ac7565b95989497509550505050565b634e487b7160e01b600052602160045260246000fd5b6020810160098310614b9957634e487b7160e01b600052602160045260246000fd5b91905290565b60008060008060808587031215614bb557600080fd5b84356001600160401b0380821115614bcc57600080fd5b614bd88883890161479a565b95506020870135915080821115614bee57600080fd5b614bfa88838901614803565b94506040870135915080821115614c1057600080fd5b50614c1d878288016148de565b949793965093946060013593505050565b600080600080600060a08688031215614c4657600080fd5b85356001600160401b0380821115614c5d57600080fd5b614c6989838a0161479a565b96506020880135915080821115614c7f57600080fd5b614c8b89838a01614803565b95506040880135915080821115614ca157600080fd5b50614cae888289016148de565b935050606086013591506080860135614cc6816146ff565b809150509295509295909350565b60008060408385031215614ce757600080fd5b50508035926020909101359150565b600081518084526020808501945080840160005b83811015614d2657815187529582019590820190600101614d0a565b509495945050505050565b60ff60f81b8816815260e060208201526000614d5060e08301896146c0565b8281036040840152614d6281896146c0565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050614d938185614cf6565b9a9950505050505050505050565b600080600080600060a08688031215614db957600080fd5b8535614dc4816146ff565b94506020860135614dd4816146ff565b935060408601356001600160401b0380821115614df057600080fd5b614dfc89838a01614803565b94506060880135915080821115614e1257600080fd5b614e1e89838a01614803565b93506080880135915080821115614e3457600080fd5b50614a1a888289016148be565b803560ff8116811461187a57600080fd5b60008060008060008060a08789031215614e6b57600080fd5b8635955060208701359450614e8260408801614e41565b935060608701356001600160401b0380821115614e9e57600080fd5b614eaa8a838b01614ac7565b90955093506080890135915080821115614ec357600080fd5b50614ed089828a016148be565b9150509295509295509295565b60008060008060608587031215614ef357600080fd5b8435614efe816146ff565b93506020850135925060408501356001600160401b03811115614b4957600080fd5b600080600080600060808688031215614f3857600080fd5b8535945060208601359350614f4f60408701614e41565b925060608601356001600160401b03811115614f6a57600080fd5b614f7688828901614ac7565b969995985093965092949392505050565b60008060008060808587031215614f9d57600080fd5b8435614fa8816146ff565b9350602085013592506040850135915060608501356001600160401b03811115614aaf57600080fd5b600080600060608486031215614fe657600080fd5b8335925060208401359150614ffd60408501614e41565b90509250925092565b600080600080600060a0868803121561501e57600080fd5b8535615029816146ff565b94506020860135615039816146ff565b9350604086013592506060860135915060808601356001600160401b0381111561506257600080fd5b614a1a888289016148be565b60008060008060008060008060006101008a8c03121561508d57600080fd5b8935985060208a013597506150a460408b01614e41565b965060608a01356001600160401b03808211156150c057600080fd5b6150cc8d838e01614ac7565b909850965060808c01359150808211156150e557600080fd5b506150f28c828d016148be565b94505061510160a08b01614e41565b925060c08a0135915060e08a013590509295985092959850929598565b60008060008060008060c0878903121561513757600080fd5b863595506020870135945061514e60408801614e41565b935061515c60608801614e41565b92506080870135915060a087013590509295509295509295565b8183823760009101908152919050565b600181811c9082168061519a57607f821691505b6020821081036151ba57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610c9a57610c9a6151c0565b60208082526021908201527f476f7665726e6f723a20696e76616c69642070726f706f73616c206c656e67746040820152600d60fb1b606082015260800190565b80820180821115610c9a57610c9a6151c0565b600081518084526020808501945080840160005b83811015614d265781516001600160a01b031687529582019590820190600101615251565b600081518084526020808501808196508360051b8101915082860160005b858110156152be5782840389526152ac8483516146c0565b98850198935090840190600101615294565b5091979650505050505050565b60006101208b8352602060018060a01b038c16818501528160408501526152f48285018c61523d565b91508382036060850152615308828b614cf6565b915083820360808501528189518084528284019150828160051b850101838c0160005b8381101561535957601f198784030185526153478383516146c0565b9486019492509085019060010161532b565b505086810360a088015261536d818c615276565b9450505050508560c08401528460e084015282810361010084015261539281856146c0565b9c9b505050505050505050505050565b6000602082840312156153b457600080fd5b5051919050565b8082028115828204841417610c9a57610c9a6151c0565b634e487b7160e01b600052601260045260246000fd5b6000826153f7576153f76153d2565b500490565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561543d57600080fd5b81516111e0816146ff565b60006020828403121561545a57600080fd5b81516001600160401b0381111561547057600080fd5b8201601f8101841361548157600080fd5b805161548f6147bb8261485e565b8181528560208385010111156154a457600080fd5b6120a682602083016020860161469c565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156154dd57600080fd5b815165ffffffffffff811681146111e057600080fd5b60a08152600061550660a083018861523d565b82810360208401526155188188614cf6565b9050828103604084015261552c8187615276565b606084019590955250506001600160a01b03919091166080909101529392505050565b60006020828403121561556157600080fd5b8151600381106111e057600080fd5b60006080828403121561558257600080fd5b604051608081018181106001600160401b03821117156155a4576155a4614731565b6040528251815260208301516155b9816146ff565b6020820152604083810151908201526060928301519281019290925250919050565b6000600182016155ed576155ed6151c0565b5060010190565b6000825161560681846020870161469c565b9190910192915050565b84815260ff8416602082015282604082015260806060820152600061334160808301846146c0565b85815260ff8516602082015283604082015260a06060820152600061566060a08301856146c0565b8281036080840152611f5181856146c0565b65ffffffffffff828116828216039080821115615691576156916151c0565b5092915050565b600065ffffffffffff808416806156b1576156b16153d2565b92169190910492915050565b600080604083850312156156d057600080fd5b50508051602090910151909290915056fe476f7665726e6f723a2072656c617920726576657274656420776974686f7574206d657373616765476f7665726e6f723a2063616c6c20726576657274656420776974686f7574206d657373616765a2646970667358221220c790912b43c3bd88cdd603177db36b25b604310a34b43e7e97f5a8b1441c796464736f6c63430008130033000000000000000000000000ebf418fe2512e7e6bd9b87a8f0f294acdc67e6b400000000000000000000000016613524e02ad97edfef371bc883f2f5d6c480a5