0x60a06040523480156200001157600080fd5b5060405162002233380380620022338339818101604052810190620000379190620001fd565b8181816200004b816200008a60201b60201c565b508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505050505062000244565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620001808262000153565b9050919050565b620001928162000173565b81146200019e57600080fd5b50565b600081519050620001b28162000187565b92915050565b6000620001c58262000173565b9050919050565b620001d781620001b8565b8114620001e357600080fd5b50565b600081519050620001f781620001cc565b92915050565b600080604083850312156200021757620002166200014e565b5b60006200022785828601620001a1565b92505060206200023a85828601620001e6565b9150509250929050565b608051611fd3620002606000396000610fd60152611fd36000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806386f16e4b11610097578063c313556211610066578063c313556214610296578063e65c82ca146102c6578063f2fde38b146102e2578063f5f4894e146102fe576100f5565b806386f16e4b146102105780638da5cb5b1461022c578063ad17213d1461024a578063c094c8c71461027a576100f5565b80635b78131a116100d35780635b78131a146101765780635eb4c3fa146101a657806362eee6fa146101d6578063715018a614610206576100f5565b80630c66fa32146100fa57806314014f171461012a5780634842520e1461015a575b600080fd5b610114600480360381019061010f91906112d9565b61032e565b6040516101219190611347565b60405180910390f35b610144600480360381019061013f91906113a0565b610367565b60405161015191906113e9565b60405180910390f35b610174600480360381019061016f91906113a0565b6103cf565b005b610190600480360381019061018b9190611404565b610660565b60405161019d9190611440565b60405180910390f35b6101c060048036038101906101bb9190611491565b610684565b6040516101cd9190611440565b60405180910390f35b6101f060048036038101906101eb91906114be565b6106a8565b6040516101fd9190611347565b60405180910390f35b61020e6106d7565b005b61022a600480360381019061022591906114fe565b6106eb565b005b610234610873565b6040516102419190611560565b60405180910390f35b610264600480360381019061025f919061157b565b61089c565b60405161027191906115ca565b60405180910390f35b610294600480360381019061028f91906113a0565b6108cb565b005b6102b060048036038101906102ab91906113a0565b610a87565b6040516102bd9190611440565b60405180910390f35b6102e060048036038101906102db91906113a0565b610ad0565b005b6102fc60048036038101906102f79190611611565b610c89565b005b610318600480360381019061031391906114be565b610d0c565b6040516103259190611440565b60405180910390f35b600061035e61033d8585610d3b565b60036000858152602001908152602001600020610d7690919063ffffffff16565b90509392505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660028111156103c8576103c761163e565b5b9050919050565b6103d7610d8d565b600060028111156103eb576103ea61163e565b5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600281111561044a5761044961163e565b5b1461048a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610481906116f0565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff163b116104e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104db90611782565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166301ffc9a7610508610e0b565b6040518263ffffffff1660e01b815260040161052491906117dd565b602060405180830381865afa158015610541573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105659190611824565b6105a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059b906118c3565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360028111156106065761060561163e565b5b02179055508073ffffffffffffffffffffffffffffffffffffffff167fd9e425bd35085c197d162d3381e70f7b5406057c2ec733e18b4eea2747af517a6000600160405161065592919061192b565b60405180910390a250565b600061067d60036000848152602001908152602001600020610e33565b9050919050565b60006106a160046000848152602001908152602001600020610e48565b9050919050565b60006106cf8360036000858152602001908152602001600020610d7690919063ffffffff16565b905092915050565b6106df610d8d565b6106e96000610e5d565b565b6106f58284610f21565b8173ffffffffffffffffffffffffffffffffffffffff1663b0a3e5006107196110b1565b85846040518463ffffffff1660e01b815260040161073993929190611963565b60006040518083038186803b15801561075157600080fd5b505afa158015610765573d6000803e3d6000fd5b5050505060006107758383610d3b565b905061079c81600360008781526020019081526020016000206110b990919063ffffffff16565b6107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d290611a0c565b60405180910390fd5b61080084600460008481526020019081526020016000206110d090919063ffffffff16565b61083f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083690611a9e565b60405180910390fd5b80847f748b68827aa30d59ba5c8893e1565046bca1e5fb71d887f287127716d85a7f5b60405160405180910390a350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006108c382600360008681526020019081526020016000206110ea90919063ffffffff16565b905092915050565b6108d3610d8d565b600160028111156108e7576108e661163e565b5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660028111156109465761094561163e565b5b14610986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097d90611b30565b60405180910390fd5b6002600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360028111156109e9576109e861163e565b5b021790555042600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fd9e425bd35085c197d162d3381e70f7b5406057c2ec733e18b4eea2747af517a60016002604051610a7c92919061192b565b60405180910390a250565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ad8610d8d565b600280811115610aeb57610aea61163e565b5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166002811115610b4a57610b4961163e565b5b14610b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8190611bc2565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115610bec57610beb61163e565b5b0217905550600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600090558073ffffffffffffffffffffffffffffffffffffffff167fd9e425bd35085c197d162d3381e70f7b5406057c2ec733e18b4eea2747af517a60026001604051610c7e92919061192b565b60405180910390a250565b610c91610d8d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf790611c54565b60405180910390fd5b610d0981610e5d565b50565b6000610d33826004600086815260200190815260200160002061110190919063ffffffff16565b905092915050565b60008260601b8260a01b604051602001610d56929190611d0e565b604051602081830303815290604052610d6e90611d77565b905092915050565b6000610d85836000018361111b565b905092915050565b610d956110b1565b73ffffffffffffffffffffffffffffffffffffffff16610db3610873565b73ffffffffffffffffffffffffffffffffffffffff1614610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0090611e2a565b60405180910390fd5b565b60007fed84396900000000000000000000000000000000000000000000000000000000905090565b6000610e418260000161113e565b9050919050565b6000610e568260000161113e565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60016002811115610f3557610f3461163e565b5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166002811115610f9457610f9361163e565b5b14610fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcb90611ebc565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d1f6776826040518263ffffffff1660e01b815260040161102d9190611440565b602060405180830381865afa15801561104a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106e9190611824565b6110ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a490611f4e565b60405180910390fd5b5050565b600033905090565b60006110c8836000018361114f565b905092915050565b60006110e2836000018360001b61114f565b905092915050565b60006110f983600001836111bf565b905092915050565b600061111083600001836111bf565b60001c905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b600081600001805490509050919050565b600061115b838361111b565b6111b45782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506111b9565b600090505b92915050565b60008260000182815481106111d7576111d6611f6e565b5b9060005260206000200154905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061121a826111ef565b9050919050565b600061122c8261120f565b9050919050565b61123c81611221565b811461124757600080fd5b50565b60008135905061125981611233565b92915050565b60006bffffffffffffffffffffffff82169050919050565b6112808161125f565b811461128b57600080fd5b50565b60008135905061129d81611277565b92915050565b6000819050919050565b6112b6816112a3565b81146112c157600080fd5b50565b6000813590506112d3816112ad565b92915050565b6000806000606084860312156112f2576112f16111ea565b5b60006113008682870161124a565b93505060206113118682870161128e565b9250506040611322868287016112c4565b9150509250925092565b60008115159050919050565b6113418161132c565b82525050565b600060208201905061135c6000830184611338565b92915050565b600061136d8261120f565b9050919050565b61137d81611362565b811461138857600080fd5b50565b60008135905061139a81611374565b92915050565b6000602082840312156113b6576113b56111ea565b5b60006113c48482850161138b565b91505092915050565b600060ff82169050919050565b6113e3816113cd565b82525050565b60006020820190506113fe60008301846113da565b92915050565b60006020828403121561141a576114196111ea565b5b6000611428848285016112c4565b91505092915050565b61143a816112a3565b82525050565b60006020820190506114556000830184611431565b92915050565b6000819050919050565b61146e8161145b565b811461147957600080fd5b50565b60008135905061148b81611465565b92915050565b6000602082840312156114a7576114a66111ea565b5b60006114b58482850161147c565b91505092915050565b600080604083850312156114d5576114d46111ea565b5b60006114e38582860161147c565b92505060206114f4858286016112c4565b9150509250929050565b600080600060608486031215611517576115166111ea565b5b6000611525868287016112c4565b93505060206115368682870161124a565b92505060406115478682870161128e565b9150509250925092565b61155a8161120f565b82525050565b60006020820190506115756000830184611551565b92915050565b60008060408385031215611592576115916111ea565b5b60006115a0858286016112c4565b92505060206115b1858286016112c4565b9150509250929050565b6115c48161145b565b82525050565b60006020820190506115df60008301846115bb565b92915050565b6115ee8161120f565b81146115f957600080fd5b50565b60008135905061160b816115e5565b92915050565b600060208284031215611627576116266111ea565b5b6000611635848285016115fc565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600082825260208201905092915050565b7f536f756c4665617475726552656769737472793a206665617475726520616c7260008201527f6561647920657869737473000000000000000000000000000000000000000000602082015250565b60006116da602b8361166d565b91506116e58261167e565b604082019050919050565b60006020820190508181036000830152611709816116cd565b9050919050565b7f536f756c4665617475726552656769737472793a20737065636966696564206160008201527f646472657373206973206e6f74206120636f6e74726163740000000000000000602082015250565b600061176c60388361166d565b915061177782611710565b604082019050919050565b6000602082019050818103600083015261179b8161175f565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6117d7816117a2565b82525050565b60006020820190506117f260008301846117ce565b92915050565b6118018161132c565b811461180c57600080fd5b50565b60008151905061181e816117f8565b92915050565b60006020828403121561183a576118396111ea565b5b60006118488482850161180f565b91505092915050565b7f536f756c4665617475726552656769737472793a20666561747572652069732060008201527f696e636f6d70617469626c650000000000000000000000000000000000000000602082015250565b60006118ad602c8361166d565b91506118b882611851565b604082019050919050565b600060208201905081810360008301526118dc816118a0565b9050919050565b600381106118f4576118f361163e565b5b50565b6000819050611905826118e3565b919050565b6000611915826118f7565b9050919050565b6119258161190a565b82525050565b6000604082019050611940600083018561191c565b61194d602083018461191c565b9392505050565b61195d8161125f565b82525050565b60006060820190506119786000830186611551565b6119856020830185611431565b6119926040830184611954565b949350505050565b7f536f756c426f756e64546f6b656e52656769737472793a20746f6b656e20697360008201527f20616c72656164792061737369676e656420746f20736f756c00000000000000602082015250565b60006119f660398361166d565b9150611a018261199a565b604082019050919050565b60006020820190508181036000830152611a25816119e9565b9050919050565b7f536f756c426f756e64546f6b656e52656769737472793a20736f756c2069732060008201527f616c72656164792061737369676e656420746f20746f6b656e00000000000000602082015250565b6000611a8860398361166d565b9150611a9382611a2c565b604082019050919050565b60006020820190508181036000830152611ab781611a7b565b9050919050565b7f536f756c4665617475726552656769737472793a20666561747572652069732060008201527f6e6f742061637469766500000000000000000000000000000000000000000000602082015250565b6000611b1a602a8361166d565b9150611b2582611abe565b604082019050919050565b60006020820190508181036000830152611b4981611b0d565b9050919050565b7f536f756c4665617475726552656769737472793a20666561747572652069732060008201527f6e6f742070617573656400000000000000000000000000000000000000000000602082015250565b6000611bac602a8361166d565b9150611bb782611b50565b604082019050919050565b60006020820190508181036000830152611bdb81611b9f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611c3e60268361166d565b9150611c4982611be2565b604082019050919050565b60006020820190508181036000830152611c6d81611c31565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b6000819050919050565b611cbb611cb682611c74565b611ca0565b82525050565b60007fffffffffffffffffffffffff000000000000000000000000000000000000000082169050919050565b6000819050919050565b611d08611d0382611cc1565b611ced565b82525050565b6000611d1a8285611caa565b601482019150611d2a8284611cf7565b600c820191508190509392505050565b600081519050919050565b6000819050602082019050919050565b6000611d61825161145b565b80915050919050565b600082821b905092915050565b6000611d8282611d3a565b82611d8c84611d45565b9050611d9781611d55565b92506020821015611dd757611dd27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802611d6a565b831692505b5050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611e1460208361166d565b9150611e1f82611dde565b602082019050919050565b60006020820190508181036000830152611e4381611e07565b9050919050565b7f536f756c4665617475726552656769737472793a206665617475726520646f6560008201527f73206e6f74206578697374206f72206973207061757365640000000000000000602082015250565b6000611ea660388361166d565b9150611eb182611e4a565b604082019050919050565b60006020820190508181036000830152611ed581611e99565b9050919050565b7f536f756c4665617475726552656769737472793a207468657265206973206e6f60008201527f20736f756c2077697468207375636820696420696e2072656769737472790000602082015250565b6000611f38603e8361166d565b9150611f4382611edc565b604082019050919050565b60006020820190508181036000830152611f6781611f2b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220360dbb354fa34927fca97d730b34fe8a317f2f8e4698aade9530bd7990973c2d64736f6c63430008130033000000000000000000000000b358143eccbd5c529668f0c0e65527b3d56f0ed9000000000000000000000000a34a43af72001a829bc9b56f8563571714c32bdc