0x6101406040523480156200001257600080fd5b506040516200215038038062002150833981016040819052620000359162000222565b80336200004281620001b9565b6040516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260048201526000906001600160a01b038416906302571be390602401602060405180830381865afa158015620000aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d09190620002b6565b604051630f41a04d60e11b81526001600160a01b03848116600483015291925090821690631e83409a906024016020604051808303816000875af11580156200011d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001439190620002dd565b5050505084841162000168576040516307cb550760e31b815260040160405180910390fd5b428411156200018a57604051630b4319e560e21b815260040160405180910390fd5b506001600160a01b0395861660805293851660a05260c09290925260e0528216610100521661012052620002f7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200021f57600080fd5b50565b600080600080600080600060e0888a0312156200023e57600080fd5b87516200024b8162000209565b60208901519097506200025e8162000209565b8096505060408801519450606088015193506080880151620002808162000209565b60a0890151909350620002938162000209565b60c0890151909250620002a68162000209565b8091505092959891949750929550565b600060208284031215620002c957600080fd5b8151620002d68162000209565b9392505050565b600060208284031215620002f057600080fd5b5051919050565b60805160a05160c05160e0516101005161012051611dd16200037f60003960008181610375015281816107e00152610bd501526000818161023801526111e00152600081816103dc01528181610db301526110070152600081816103030152610f9001526000818161041001526109fa015260008181610a2f0152610d220152611dd16000f3fe60806040526004361061015f5760003560e01c80638d839ffe116100c0578063aeb8ce9b11610074578063d3419bf311610059578063d3419bf3146103fe578063f14fcbc814610432578063f2fde38b1461045257600080fd5b8063aeb8ce9b146103aa578063ce1e09c0146103ca57600080fd5b80639791c097116100a55780639791c09714610343578063a8e5fbc014610363578063acf1a8411461039757600080fd5b80638d839ffe146102f15780638da5cb5b1461032557600080fd5b806374694a2b11610117578063839df945116100fc578063839df9451461027257806383e7f6ff1461029f5780638a95b09f146102da57600080fd5b806374694a2b14610213578063808698531461022657600080fd5b80635d3590d5116101485780635d3590d5146101b057806365a69dcf146101d0578063715018a6146101fe57600080fd5b806301ffc9a7146101645780633ccfd60b14610199575b600080fd5b34801561017057600080fd5b5061018461017f366004611421565b610472565b60405190151581526020015b60405180910390f35b3480156101a557600080fd5b506101ae61050b565b005b3480156101bc57600080fd5b506101ae6101cb36600461147f565b610548565b3480156101dc57600080fd5b506101f06101eb3660046115ec565b6105e2565b604051908152602001610190565b34801561020a57600080fd5b506101ae610680565b6101ae6102213660046116ef565b610694565b34801561023257600080fd5b5061025a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610190565b34801561027e57600080fd5b506101f061028d3660046117b9565b60016020526000908152604090205481565b3480156102ab57600080fd5b506102bf6102ba3660046117d2565b6109b0565b60408051825181526020928301519281019290925201610190565b3480156102e657600080fd5b506101f06224ea0081565b3480156102fd57600080fd5b506101f07f000000000000000000000000000000000000000000000000000000000000000081565b34801561033157600080fd5b506000546001600160a01b031661025a565b34801561034f57600080fd5b5061018461035e366004611817565b610b03565b34801561036f57600080fd5b5061025a7f000000000000000000000000000000000000000000000000000000000000000081565b6101ae6103a536600461184c565b610b18565b3480156103b657600080fd5b506101846103c5366004611817565b610cd9565b3480156103d657600080fd5b506101f07f000000000000000000000000000000000000000000000000000000000000000081565b34801561040a57600080fd5b5061025a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561043e57600080fd5b506101ae61044d3660046117b9565b610d9c565b34801561045e57600080fd5b506101ae61046d366004611898565b610e2a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061050557507fffffffff0000000000000000000000000000000000000000000000000000000082167f612e8c0900000000000000000000000000000000000000000000000000000000145b92915050565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610545573d6000803e3d6000fd5b50565b610550610eb7565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156105b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105dc91906118b3565b50505050565b885160208a0120600090841580159061060257506001600160a01b038716155b15610639576040517fd3f605c400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b808a8a8a8a8a8a8a8a60405160200161065a9998979695949392919061198b565b604051602081830303815290604052805190602001209150509998505050505050505050565b610688610eb7565b6106926000610f11565b565b60006106d78b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92506109b0915050565b602081015181519192506106ea91611a03565b34101561070a5760405163044044a560e21b815260040160405180910390fd5b6107ad8b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050896107a88e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508d8d8d8d8d8d8d8d6105e2565b610f79565b6040517fa40149820000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a40149829061081f908f908f908f908f908e908b90600401611a16565b6020604051808303816000875af115801561083e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108629190611a60565b9050841561088d5761088d878d8d60405161087e929190611a79565b604051809103902088886110fb565b83156108d6576108d68c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b92503391506111de9050565b896001600160a01b03168c8c6040516108f0929190611a79565b60405180910390207f69e37f151eb98a09618ddaa80c8cfaf1ce5996867c489f45b555b412271ebf278e8e8660000151876020015187604051610937959493929190611a89565b60405180910390a3602082015182516109509190611a03565b3411156109a2576020820151825133916108fc9161096e9190611a03565b6109789034611aba565b6040518115909202916000818181858888f193505050501580156109a0573d6000803e3d6000fd5b505b505050505050505050505050565b6040805180820190915260008082526020820152825160208401206040517fd6e4fa86000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116916350e9a7159187917f00000000000000000000000000000000000000000000000000000000000000009091169063d6e4fa8690602401602060405180830381865afa158015610a78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9c9190611a60565b866040518463ffffffff1660e01b8152600401610abb93929190611b1d565b6040805180830381865afa158015610ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afb9190611b42565b949350505050565b60006003610b1083611292565b101592915050565b60008383604051610b2a929190611a79565b604080519182900382206020601f870181900481028401810190925285835292508291600091610b77919088908890819084018382808284376000920191909152508892506109b0915050565b8051909150341015610b9c5760405163044044a560e21b815260040160405180910390fd5b6040517fc475abff00000000000000000000000000000000000000000000000000000000815260048101839052602481018590526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c475abff906044016020604051808303816000875af1158015610c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4a9190611a60565b8251909150341115610c9257815133906108fc90610c689034611aba565b6040518115909202916000818181858888f19350505050158015610c90573d6000803e3d6000fd5b505b837f3da24c024582931cfaf8267d8ed24d13a82a8068d5bd337d30ec45cea4e506ae88883485604051610cc89493929190611b91565b60405180910390a250505050505050565b80516020820120600090610cec83610b03565b8015610d9557506040517f96e494e8000000000000000000000000000000000000000000000000000000008152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906396e494e890602401602060405180830381865afa158015610d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9591906118b3565b9392505050565b6000818152600160205260409020544290610dd8907f000000000000000000000000000000000000000000000000000000000000000090611a03565b10610e17576040517f0a059d71000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b6000908152600160205260409020429055565b610e32610eb7565b6001600160a01b038116610eae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610e0e565b61054581610f11565b6000546001600160a01b031633146106925760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e0e565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000818152600160205260409020544290610fb5907f000000000000000000000000000000000000000000000000000000000000000090611a03565b1115610ff0576040517f5320bcf900000000000000000000000000000000000000000000000000000000815260048101829052602401610e0e565b600081815260016020526040902054429061102c907f000000000000000000000000000000000000000000000000000000000000000090611a03565b11611066576040517fcb7690d700000000000000000000000000000000000000000000000000000000815260048101829052602401610e0e565b61106f83610cd9565b6110a757826040517f477707e8000000000000000000000000000000000000000000000000000000008152600401610e0e9190611bb8565b6000818152600160205260408120556224ea008210156110f6576040517f9a71997b00000000000000000000000000000000000000000000000000000000815260048101839052602401610e0e565b505050565b604080517f93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae602080830191909152818301869052825180830384018152606083019384905280519101207fe32954eb0000000000000000000000000000000000000000000000000000000090925285906001600160a01b0382169063e32954eb9061118e90859088908890606401611bcb565b6000604051808303816000875af11580156111ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111d59190810190611bee565b50505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637a806d6b338385876040516020016112219190611ced565b6040516020818303038152906040526040518563ffffffff1660e01b815260040161124f9493929190611d2e565b6020604051808303816000875af115801561126e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105dc9190611a60565b8051600090819081905b808210156114185760008583815181106112b8576112b8611d6c565b01602001516001600160f81b03191690507f8000000000000000000000000000000000000000000000000000000000000000811015611303576112fc600184611a03565b9250611405565b7fe0000000000000000000000000000000000000000000000000000000000000006001600160f81b031982161015611340576112fc600284611a03565b7ff0000000000000000000000000000000000000000000000000000000000000006001600160f81b03198216101561137d576112fc600384611a03565b7ff8000000000000000000000000000000000000000000000000000000000000006001600160f81b0319821610156113ba576112fc600484611a03565b7ffc000000000000000000000000000000000000000000000000000000000000006001600160f81b0319821610156113f7576112fc600584611a03565b611402600684611a03565b92505b508261141081611d82565b93505061129c565b50909392505050565b60006020828403121561143357600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9557600080fd5b80356001600160a01b038116811461147a57600080fd5b919050565b60008060006060848603121561149457600080fd5b61149d84611463565b92506114ab60208501611463565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156114fa576114fa6114bb565b604052919050565b600067ffffffffffffffff82111561151c5761151c6114bb565b50601f01601f191660200190565b600082601f83011261153b57600080fd5b813561154e61154982611502565b6114d1565b81815284602083860101111561156357600080fd5b816020850160208301376000918101602001919091529392505050565b60008083601f84011261159257600080fd5b50813567ffffffffffffffff8111156115aa57600080fd5b6020830191508360208260051b85010111156115c557600080fd5b9250929050565b801515811461054557600080fd5b803561ffff8116811461147a57600080fd5b60008060008060008060008060006101008a8c03121561160b57600080fd5b893567ffffffffffffffff8082111561162357600080fd5b61162f8d838e0161152a565b9a5061163d60208d01611463565b995060408c0135985060608c0135975061165960808d01611463565b965060a08c013591508082111561166f57600080fd5b5061167c8c828d01611580565b90955093505060c08a0135611690816115cc565b915061169e60e08b016115da565b90509295985092959850929598565b60008083601f8401126116bf57600080fd5b50813567ffffffffffffffff8111156116d757600080fd5b6020830191508360208285010111156115c557600080fd5b6000806000806000806000806000806101008b8d03121561170f57600080fd5b8a3567ffffffffffffffff8082111561172757600080fd5b6117338e838f016116ad565b909c509a508a915061174760208e01611463565b995060408d0135985060608d0135975061176360808e01611463565b965060a08d013591508082111561177957600080fd5b506117868d828e01611580565b90955093505060c08b013561179a816115cc565b91506117a860e08c016115da565b90509295989b9194979a5092959850565b6000602082840312156117cb57600080fd5b5035919050565b600080604083850312156117e557600080fd5b823567ffffffffffffffff8111156117fc57600080fd5b6118088582860161152a565b95602094909401359450505050565b60006020828403121561182957600080fd5b813567ffffffffffffffff81111561184057600080fd5b610afb8482850161152a565b60008060006040848603121561186157600080fd5b833567ffffffffffffffff81111561187857600080fd5b611884868287016116ad565b909790965060209590950135949350505050565b6000602082840312156118aa57600080fd5b610d9582611463565b6000602082840312156118c557600080fd5b8151610d95816115cc565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b81835260006020808501808196508560051b810191508460005b8781101561197e5782840389528135601e1988360301811261193457600080fd5b8701858101903567ffffffffffffffff81111561195057600080fd5b80360382131561195f57600080fd5b61196a8682846118d0565b9a87019a9550505090840190600101611913565b5091979650505050505050565b60006101008b83526001600160a01b03808c1660208501528a60408501528960608501528089166080850152508060a08401526119cb81840187896118f9565b94151560c0840152505061ffff9190911660e090910152979650505050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610505576105056119ed565b60a081526000611a2a60a08301888a6118d0565b90506001600160a01b03808716602084015285604084015280851660608401525061ffff83166080830152979650505050505050565b600060208284031215611a7257600080fd5b5051919050565b8183823760009101908152919050565b608081526000611a9d6080830187896118d0565b602083019590955250604081019290925260609091015292915050565b81810381811115610505576105056119ed565b60005b83811015611ae8578181015183820152602001611ad0565b50506000910152565b60008151808452611b09816020860160208601611acd565b601f01601f19169290920160200192915050565b606081526000611b306060830186611af1565b60208301949094525060400152919050565b600060408284031215611b5457600080fd5b6040516040810181811067ffffffffffffffff82111715611b7757611b776114bb565b604052825181526020928301519281019290925250919050565b606081526000611ba56060830186886118d0565b6020830194909452506040015292915050565b602081526000610d956020830184611af1565b838152604060208201526000611be56040830184866118f9565b95945050505050565b60006020808385031215611c0157600080fd5b825167ffffffffffffffff80821115611c1957600080fd5b818501915085601f830112611c2d57600080fd5b815181811115611c3f57611c3f6114bb565b8060051b611c4e8582016114d1565b9182528381018501918581019089841115611c6857600080fd5b86860192505b83831015611ce057825185811115611c865760008081fd5b8601603f81018b13611c985760008081fd5b878101516040611caa61154983611502565b8281528d82848601011115611cbf5760008081fd5b611cce838c8301848701611acd565b85525050509186019190860190611c6e565b9998505050505050505050565b60008251611cff818460208701611acd565b7f2e65746800000000000000000000000000000000000000000000000000000000920191825250600401919050565b60006001600160a01b038087168352808616602084015280851660408401525060806060830152611d626080830184611af1565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b600060018201611d9457611d946119ed565b506001019056fea26469706673582212207ae2447e86de3ca2bc735ab92d80b5b18a28129026feb199229bbdaf93ed05d564736f6c634300081100330000000000000000000000001dbb8b91d09c1d0033bcfa586322e6a3ba59ea3d000000000000000000000000e2d0d6d2dca827dd13b74ae52a9f21ab5b474ad1000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000001518000000000000000000000000013107f2400a18ebfd156d8a49994599360ada4d7000000000000000000000000bef757f9f44481561c989d3f406390a803d4069400000000000000000000000077aad3e10b4e685934cf09ae16a123822e6eb778