60806040526002600a556002600b55610bb8600c556000600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506000600e556000601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200009e57600080fd5b506040518060400160405280600b81526020017f43617461636c79736d69630000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4341544e4950000000000000000000000000000000000000000000000000000081525081600290805190602001906200012392919062000256565b5080600390805190602001906200013c92919062000256565b506200014d6200018360201b60201c565b600081905550505062000175620001696200018860201b60201c565b6200019060201b60201c565b60016009819055506200036b565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002649062000306565b90600052602060002090601f016020900481019282620002885760008555620002d4565b82601f10620002a357805160ff1916838001178555620002d4565b82800160010185558215620002d4579182015b82811115620002d3578251825591602001919060010190620002b6565b5b509050620002e39190620002e7565b5090565b5b8082111562000302576000816000905550600101620002e8565b5090565b600060028204905060018216806200031f57607f821691505b602082108114156200033657620003356200033c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b613d27806200037b6000396000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c80636817c76c11610146578063a22cb465116100c3578063ccfdd2f811610087578063ccfdd2f8146106d6578063e268e4d3146106f2578063e985e9c51461070e578063f005ba8c1461073e578063f2fde38b1461075a578063f4a0a5281461077657610253565b8063a22cb46514610620578063a45ba8e71461063c578063b88d4fde1461065a578063c23dc68f14610676578063c87b56dd146106a657610253565b80638462151c1161010a5780638462151c146105685780638bd56ff9146105985780638da5cb5b146105b457806395d89b41146105d257806399a2557a146105f057610253565b80636817c76c146104e85780636c0360eb1461050657806370a0823114610524578063715018a61461055457806373bc14ce1461055e57610253565b806342842e0e116101d457806354214f691161019857806354214f691461043057806355f804b31461044e5780635bbb21771461046a5780635e5f3ce41461049a5780636352211e146104b857610253565b806342842e0e1461038c578063453c2310146103a85780634b980d67146103c65780634d0df5fc146103e45780634fdd43cb1461041457610253565b806323b872dd1161021b57806323b872dd146103105780632ab4d0521461032c5780633ab1a4941461034a5780633ccfd60b146103665780633f3e4c111461037057610253565b806301ffc9a71461025857806306fdde0314610288578063081812fc146102a6578063095ea7b3146102d657806318160ddd146102f2575b600080fd5b610272600480360381019061026d9190612e2e565b610792565b60405161027f9190613447565b60405180910390f35b610290610824565b60405161029d9190613462565b60405180910390f35b6102c060048036038101906102bb9190612ec1565b6108b6565b6040516102cd919061339c565b60405180910390f35b6102f060048036038101906102eb9190612d5e565b610932565b005b6102fa610a73565b60405161030791906135df565b60405180910390f35b61032a60048036038101906103259190612c58565b610a8a565b005b610334610daf565b60405161034191906135df565b60405180910390f35b610364600480360381019061035f9190612bf3565b610db5565b005b61036e610e01565b005b61038a60048036038101906103859190612ec1565b610f06565b005b6103a660048036038101906103a19190612c58565b610f18565b005b6103b0610f38565b6040516103bd91906135df565b60405180910390f35b6103ce610f3e565b6040516103db91906135df565b60405180910390f35b6103fe60048036038101906103f99190612bf3565b610f44565b60405161040b91906135df565b60405180910390f35b61042e60048036038101906104299190612e80565b610f5c565b005b610438610f7e565b6040516104459190613447565b60405180910390f35b61046860048036038101906104639190612e80565b610f91565b005b610484600480360381019061047f9190612de9565b610fce565b6040516104919190613403565b60405180910390f35b6104a2611103565b6040516104af9190613447565b60405180910390f35b6104d260048036038101906104cd9190612ec1565b611116565b6040516104df919061339c565b60405180910390f35b6104f0611128565b6040516104fd91906135df565b60405180910390f35b61050e61112e565b60405161051b9190613462565b60405180910390f35b61053e60048036038101906105399190612bf3565b6111bc565b60405161054b91906135df565b60405180910390f35b61055c611275565b005b610566611289565b005b610582600480360381019061057d9190612bf3565b6112bd565b60405161058f9190613425565b60405180910390f35b6105b260048036038101906105ad9190612ec1565b611453565b005b6105bc6116de565b6040516105c9919061339c565b60405180910390f35b6105da611708565b6040516105e79190613462565b60405180910390f35b61060a60048036038101906106059190612d9a565b61179a565b6040516106179190613425565b60405180910390f35b61063a60048036038101906106359190612d22565b6119fa565b005b610644611b72565b6040516106519190613462565b60405180910390f35b610674600480360381019061066f9190612ca7565b611c00565b005b610690600480360381019061068b9190612ec1565b611c73565b60405161069d91906135c4565b60405180910390f35b6106c060048036038101906106bb9190612ec1565b611cdd565b6040516106cd9190613462565b60405180910390f35b6106f060048036038101906106eb9190612ec1565b611db9565b005b61070c60048036038101906107079190612ec1565b611dcb565b005b61072860048036038101906107239190612c1c565b611ddd565b6040516107359190613447565b60405180910390f35b61075860048036038101906107539190612d5e565b611e71565b005b610774600480360381019061076f9190612bf3565b611ede565b005b610790600480360381019061078b9190612ec1565b611f62565b005b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107ed57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061081d5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b606060028054610833906138df565b80601f016020809104026020016040519081016040528092919081815260200182805461085f906138df565b80156108ac5780601f10610881576101008083540402835291602001916108ac565b820191906000526020600020905b81548152906001019060200180831161088f57829003601f168201915b5050505050905090565b60006108c182611f74565b6108f7576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061093d82611116565b90508073ffffffffffffffffffffffffffffffffffffffff1661095e611fd3565b73ffffffffffffffffffffffffffffffffffffffff16146109c15761098a81610985611fd3565b611ddd565b6109c0576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000610a7d611fdb565b6001546000540303905090565b6000610a9582611fe0565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610afc576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610b08846120ae565b91509150610b1e8187610b19611fd3565b6120d0565b610b6a57610b3386610b2e611fd3565b611ddd565b610b69576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610bd1576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bde8686866001612114565b8015610be957600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610cb785610c9388888761211a565b7c020000000000000000000000000000000000000000000000000000000017612142565b600460008681526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000084161415610d3f576000600185019050600060046000838152602001908152602001600020541415610d3d576000548114610d3c578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610da7868686600161216d565b505050505050565b600c5481565b610dbd612173565b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610e09612173565b600073ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e92906134e4565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610f03573d6000803e3d6000fd5b50565b610f0e612173565b80600c8190555050565b610f3383838360405180602001604052806000815250611c00565b505050565b600b5481565b600a5481565b60116020528060005260406000206000915090505481565b610f64612173565b8060109080519060200190610f7a92919061297e565b5050565b600d60019054906101000a900460ff1681565b610f99612173565b80600f9080519060200190610faf92919061297e565b506001600d60016101000a81548160ff02191690831515021790555050565b6060600083839050905060008167ffffffffffffffff81111561101a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561105357816020015b611040612a04565b8152602001906001900390816110385790505b50905060005b8281146110f7576110a886868381811061109c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020135611c73565b8282815181106110e1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181905250806001019050611059565b50809250505092915050565b600d60009054906101000a900460ff1681565b600061112182611fe0565b9050919050565b600e5481565b600f805461113b906138df565b80601f0160208091040260200160405190810160405280929190818152602001828054611167906138df565b80156111b45780601f10611189576101008083540402835291602001916111b4565b820191906000526020600020905b81548152906001019060200180831161119757829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611224576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b61127d612173565b61128760006121f1565b565b611291612173565b600d60009054906101000a900460ff1615600d60006101000a81548160ff021916908315150217905550565b606060008060006112cd856111bc565b905060008167ffffffffffffffff811115611311577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561133f5781602001602082028036833780820191505090505b50905061134a612a04565b6000611354611fdb565b90505b83861461144557611367816122b7565b91508160400151156113785761143a565b600073ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146113b857816000015194505b8773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415611439578083878060010198508151811061142c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250505b5b806001019050611357565b508195505050505050919050565b60026009541415611499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149090613584565b60405180910390fd5b6002600981905550600d60009054906101000a900460ff166114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e7906134c4565b60405180910390fd5b60008111611533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152a90613564565b60405180910390fd5b600c548161153f610a73565b611549919061374b565b111561158a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611581906135a4565b60405180910390fd5b600a548111156115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c690613544565b60405180910390fd5b600b5481601160006115df6122e2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611624919061374b565b1115611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c906134a4565b60405180910390fd5b6116766116706122e2565b826122ea565b80601160006116836122e2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116cc919061374b565b92505081905550600160098190555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054611717906138df565b80601f0160208091040260200160405190810160405280929190818152602001828054611743906138df565b80156117905780601f1061176557610100808354040283529160200191611790565b820191906000526020600020905b81548152906001019060200180831161177357829003601f168201915b5050505050905090565b60608183106117d5576040517f32c1995a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806117e0612308565b90506117ea611fdb565b8510156117fc576117f9611fdb565b94505b80841115611808578093505b6000611813876111bc565b905084861015611836576000868603905081811015611830578091505b5061183b565b600090505b60008167ffffffffffffffff81111561187d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156118ab5781602001602082028036833780820191505090505b50905060008214156118c357809450505050506119f3565b60006118ce88611c73565b9050600081604001516118e357816000015190505b60008990505b8881141580156118f95750848714155b156119e557611907816122b7565b9250826040015115611918576119da565b600073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff161461195857826000015191505b8a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119d957808488806001019950815181106119cc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010181815250505b5b8060010190506118e9565b508583528296505050505050505b9392505050565b611a02611fd3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a67576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611a74611fd3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611b21611fd3565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611b669190613447565b60405180910390a35050565b60108054611b7f906138df565b80601f0160208091040260200160405190810160405280929190818152602001828054611bab906138df565b8015611bf85780601f10611bcd57610100808354040283529160200191611bf8565b820191906000526020600020905b815481529060010190602001808311611bdb57829003601f168201915b505050505081565b611c0b848484610a8a565b60008373ffffffffffffffffffffffffffffffffffffffff163b14611c6d57611c3684848484612311565b611c6c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b611c7b612a04565b611c83612a04565b611c8b611fdb565b831080611c9f5750611c9b612308565b8310155b15611cad5780915050611cd8565b611cb6836122b7565b9050806040015115611ccb5780915050611cd8565b611cd483612471565b9150505b919050565b6060600d60019054906101000a900460ff1615611d2657600f611cff83612491565b604051602001611d10929190613378565b6040516020818303038152906040529050611db4565b60108054611d33906138df565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5f906138df565b8015611dac5780601f10611d8157610100808354040283529160200191611dac565b820191906000526020600020905b815481529060010190602001808311611d8f57829003601f168201915b505050505090505b919050565b611dc1612173565b80600a8190555050565b611dd3612173565b80600b8190555050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611e79612173565b600c5481611e85610a73565b611e8f919061374b565b1115611ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec790613504565b60405180910390fd5b611eda82826122ea565b5050565b611ee6612173565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4d90613484565b60405180910390fd5b611f5f816121f1565b50565b611f6a612173565b80600e8190555050565b600081611f7f611fdb565b11158015611f8e575060005482105b8015611fcc575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b600090565b60008082905080611fef611fdb565b11612077576000548110156120765760006004600083815260200190815260200160002054905060007c010000000000000000000000000000000000000000000000000000000082161415612074575b600081141561206a57600460008360019003935083815260200190815260200160002054905061203f565b80925050506120a9565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000806000600690508360005280602052604060002092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e861213186868461263e565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b61217b6122e2565b73ffffffffffffffffffffffffffffffffffffffff166121996116de565b73ffffffffffffffffffffffffffffffffffffffff16146121ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e690613524565b60405180910390fd5b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6122bf612a04565b6122db6004600084815260200190815260200160002054612647565b9050919050565b600033905090565b6123048282604051806020016040528060008152506126fd565b5050565b60008054905090565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612337611fd3565b8786866040518563ffffffff1660e01b815260040161235994939291906133b7565b602060405180830381600087803b15801561237357600080fd5b505af19250505080156123a457506040513d601f19601f820116820180604052508101906123a19190612e57565b60015b61241e573d80600081146123d4576040519150601f19603f3d011682016040523d82523d6000602084013e6123d9565b606091505b50600081511415612416576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b612479612a04565b61248a61248583611fe0565b612647565b9050919050565b606060008214156124d9576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612639565b600082905060005b6000821461250b5780806124f490613942565b915050600a8261250491906137a1565b91506124e1565b60008167ffffffffffffffff81111561254d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561257f5781602001600182028036833780820191505090505b5090505b600085146126325760018261259891906137d2565b9150600a856125a7919061398b565b60306125b3919061374b565b60f81b8183815181106125ef577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561262b91906137a1565b9450612583565b8093505050505b919050565b60009392505050565b61264f612a04565b81816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060a082901c816020019067ffffffffffffffff16908167ffffffffffffffff168152505060007c01000000000000000000000000000000000000000000000000000000008316141581604001901515908115158152505060e882901c816060019062ffffff16908162ffffff1681525050919050565b612707838361279a565b60008373ffffffffffffffffffffffffffffffffffffffff163b1461279557600080549050600083820390505b6127476000868380600101945086612311565b61277d576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811061273457816000541461279257600080fd5b50505b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612807576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415612842576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61284f6000848385612114565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506128c6836128b7600086600061211a565b6128c08561296e565b17612142565b60046000838152602001908152602001600020819055506000819050600083830190505b818060010192508573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48082106128ea57806000819055505050612969600084838561216d565b505050565b60006001821460e11b9050919050565b82805461298a906138df565b90600052602060002090601f0160209004810192826129ac57600085556129f3565b82601f106129c557805160ff19168380011785556129f3565b828001600101855582156129f3579182015b828111156129f25782518255916020019190600101906129d7565b5b509050612a009190612a53565b5090565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600015158152602001600062ffffff1681525090565b5b80821115612a6c576000816000905550600101612a54565b5090565b6000612a83612a7e8461361f565b6135fa565b905082815260208101848484011115612a9b57600080fd5b612aa684828561389d565b509392505050565b6000612ac1612abc84613650565b6135fa565b905082815260208101848484011115612ad957600080fd5b612ae484828561389d565b509392505050565b600081359050612afb81613c95565b92915050565b60008083601f840112612b1357600080fd5b8235905067ffffffffffffffff811115612b2c57600080fd5b602083019150836020820283011115612b4457600080fd5b9250929050565b600081359050612b5a81613cac565b92915050565b600081359050612b6f81613cc3565b92915050565b600081519050612b8481613cc3565b92915050565b600082601f830112612b9b57600080fd5b8135612bab848260208601612a70565b91505092915050565b600082601f830112612bc557600080fd5b8135612bd5848260208601612aae565b91505092915050565b600081359050612bed81613cda565b92915050565b600060208284031215612c0557600080fd5b6000612c1384828501612aec565b91505092915050565b60008060408385031215612c2f57600080fd5b6000612c3d85828601612aec565b9250506020612c4e85828601612aec565b9150509250929050565b600080600060608486031215612c6d57600080fd5b6000612c7b86828701612aec565b9350506020612c8c86828701612aec565b9250506040612c9d86828701612bde565b9150509250925092565b60008060008060808587031215612cbd57600080fd5b6000612ccb87828801612aec565b9450506020612cdc87828801612aec565b9350506040612ced87828801612bde565b925050606085013567ffffffffffffffff811115612d0a57600080fd5b612d1687828801612b8a565b91505092959194509250565b60008060408385031215612d3557600080fd5b6000612d4385828601612aec565b9250506020612d5485828601612b4b565b9150509250929050565b60008060408385031215612d7157600080fd5b6000612d7f85828601612aec565b9250506020612d9085828601612bde565b9150509250929050565b600080600060608486031215612daf57600080fd5b6000612dbd86828701612aec565b9350506020612dce86828701612bde565b9250506040612ddf86828701612bde565b9150509250925092565b60008060208385031215612dfc57600080fd5b600083013567ffffffffffffffff811115612e1657600080fd5b612e2285828601612b01565b92509250509250929050565b600060208284031215612e4057600080fd5b6000612e4e84828501612b60565b91505092915050565b600060208284031215612e6957600080fd5b6000612e7784828501612b75565b91505092915050565b600060208284031215612e9257600080fd5b600082013567ffffffffffffffff811115612eac57600080fd5b612eb884828501612bb4565b91505092915050565b600060208284031215612ed357600080fd5b6000612ee184828501612bde565b91505092915050565b6000612ef68383613292565b60808301905092915050565b6000612f0e838361334b565b60208301905092915050565b612f2381613806565b82525050565b612f3281613806565b82525050565b6000612f43826136b6565b612f4d81856136fc565b9350612f5883613681565b8060005b83811015612f89578151612f708882612eea565b9750612f7b836136e2565b925050600181019050612f5c565b5085935050505092915050565b6000612fa1826136c1565b612fab818561370d565b9350612fb683613691565b8060005b83811015612fe7578151612fce8882612f02565b9750612fd9836136ef565b925050600181019050612fba565b5085935050505092915050565b612ffd81613818565b82525050565b61300c81613818565b82525050565b600061301d826136cc565b613027818561371e565b93506130378185602086016138ac565b61304081613a78565b840191505092915050565b6000613056826136d7565b613060818561372f565b93506130708185602086016138ac565b61307981613a78565b840191505092915050565b600061308f826136d7565b6130998185613740565b93506130a98185602086016138ac565b80840191505092915050565b600081546130c2816138df565b6130cc8186613740565b945060018216600081146130e757600181146130f85761312b565b60ff1983168652818601935061312b565b613101856136a1565b60005b8381101561312357815481890152600182019150602081019050613104565b838801955050505b50505092915050565b600061314160268361372f565b915061314c82613a89565b604082019050919050565b600061316460278361372f565b915061316f82613ad8565b604082019050919050565b6000613187601f8361372f565b915061319282613b27565b602082019050919050565b60006131aa60138361372f565b91506131b582613b50565b602082019050919050565b60006131cd60148361372f565b91506131d882613b79565b602082019050919050565b60006131f060208361372f565b91506131fb82613ba2565b602082019050919050565b600061321360188361372f565b915061321e82613bcb565b602082019050919050565b6000613236601d8361372f565b915061324182613bf4565b602082019050919050565b6000613259601f8361372f565b915061326482613c1d565b602082019050919050565b600061327c60288361372f565b915061328782613c46565b604082019050919050565b6080820160008201516132a86000850182612f1a565b5060208201516132bb6020850182613369565b5060408201516132ce6040850182612ff4565b5060608201516132e1606085018261333c565b50505050565b6080820160008201516132fd6000850182612f1a565b5060208201516133106020850182613369565b5060408201516133236040850182612ff4565b506060820151613336606085018261333c565b50505050565b61334581613870565b82525050565b6133548161387f565b82525050565b6133638161387f565b82525050565b61337281613889565b82525050565b600061338482856130b5565b91506133908284613084565b91508190509392505050565b60006020820190506133b16000830184612f29565b92915050565b60006080820190506133cc6000830187612f29565b6133d96020830186612f29565b6133e6604083018561335a565b81810360608301526133f88184613012565b905095945050505050565b6000602082019050818103600083015261341d8184612f38565b905092915050565b6000602082019050818103600083015261343f8184612f96565b905092915050565b600060208201905061345c6000830184613003565b92915050565b6000602082019050818103600083015261347c818461304b565b905092915050565b6000602082019050818103600083015261349d81613134565b9050919050565b600060208201905081810360008301526134bd81613157565b9050919050565b600060208201905081810360008301526134dd8161317a565b9050919050565b600060208201905081810360008301526134fd8161319d565b9050919050565b6000602082019050818103600083015261351d816131c0565b9050919050565b6000602082019050818103600083015261353d816131e3565b9050919050565b6000602082019050818103600083015261355d81613206565b9050919050565b6000602082019050818103600083015261357d81613229565b9050919050565b6000602082019050818103600083015261359d8161324c565b9050919050565b600060208201905081810360008301526135bd8161326f565b9050919050565b60006080820190506135d960008301846132e7565b92915050565b60006020820190506135f4600083018461335a565b92915050565b6000613604613615565b90506136108282613911565b919050565b6000604051905090565b600067ffffffffffffffff82111561363a57613639613a49565b5b61364382613a78565b9050602081019050919050565b600067ffffffffffffffff82111561366b5761366a613a49565b5b61367482613a78565b9050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006137568261387f565b91506137618361387f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613796576137956139bc565b5b828201905092915050565b60006137ac8261387f565b91506137b78361387f565b9250826137c7576137c66139eb565b5b828204905092915050565b60006137dd8261387f565b91506137e88361387f565b9250828210156137fb576137fa6139bc565b5b828203905092915050565b600061381182613850565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b838110156138ca5780820151818401526020810190506138af565b838111156138d9576000848401525b50505050565b600060028204905060018216806138f757607f821691505b6020821081141561390b5761390a613a1a565b5b50919050565b61391a82613a78565b810181811067ffffffffffffffff8211171561393957613938613a49565b5b80604052505050565b600061394d8261387f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156139805761397f6139bc565b5b600182019050919050565b60006139968261387f565b91506139a18361387f565b9250826139b1576139b06139eb565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f57616c6c6574206861732072656163686564204d617820436c6f6e657320476560008201527f6e65726174656400000000000000000000000000000000000000000000000000602082015250565b7f43617461636c79736d6963204576656e7420486173204e6f7420426567756e00600082015250565b7f4e6f207769746864726177206164647265737300000000000000000000000000600082015250565b7f4578636565647320746f74616c20737570706c79000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d617820436c6f6e652047656e65726174657220697320320000000000000000600082015250565b7f4174206c6561737420312043617461636c79736d6963204e6565646564000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f43617461636c79736d6963204576656e7420436c6f6e652050726f636573732060008201527f436f6d706c657465000000000000000000000000000000000000000000000000602082015250565b613c9e81613806565b8114613ca957600080fd5b50565b613cb581613818565b8114613cc057600080fd5b50565b613ccc81613824565b8114613cd757600080fd5b50565b613ce38161387f565b8114613cee57600080fd5b5056fea2646970667358221220130b0a5b1daa0626a97b0a87cfcec7262435695fb88fca394007c6836b0ce0d764736f6c63430008040033