60806040526040518060400160405280601581526020017f68747470733a2f2f697066732e696f2f697066732f00000000000000000000008152506008908051906020019062000051929190620002bb565b50735ec48e6a351c6ffecb60ec01ffbfba4916fef39c600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555066038d7ea4c68000600c556603328b944c4000600d55348015620000ca57600080fd5b506040518060400160405280600981526020017f424c4f434b4445454400000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f424b444e4654000000000000000000000000000000000000000000000000000081525081600090805190602001906200014f929190620002bb565b50806001908051906020019062000168929190620002bb565b5050506000600760006101000a81548160ff021916908315150217905550620001a66200019a620001ed60201b60201c565b620001f560201b60201c565b33600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003d0565b600033905090565b6000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002c9906200039a565b90600052602060002090601f016020900481019282620002ed576000855562000339565b82601f106200030857805160ff191683800117855562000339565b8280016001018555821562000339579182015b82811115620003385782518255916020019190600101906200031b565b5b5090506200034891906200034c565b5090565b5b80821115620003675760008160009055506001016200034d565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003b357607f821691505b60208210811415620003ca57620003c96200036b565b5b50919050565b61402580620003e06000396000f3fe6080604052600436106101ee5760003560e01c806370a082311161010d578063b6a379ec116100a0578063d936547e1161006f578063d936547e1461069c578063e086e5ec146106d9578063e985e9c5146106f0578063f2fde38b1461072d578063fd25b2ba14610756576101ee565b8063b6a379ec146105e4578063b88d4fde1461060d578063bd8aa78014610636578063c87b56dd1461065f576101ee565b80638da5cb5b116100dc5780638da5cb5b1461053c57806395d89b4114610567578063a22cb46514610592578063a6f9dae1146105bb576101ee565b806370a08231146104a8578063715018a6146104e55780637d9a7a4c146104fc5780638456cb5914610525576101ee565b806321b8092e1161018557806342842e0e1161015457806342842e0e146103ee57806342966c68146104175780635c975abb146104405780636352211e1461046b576101ee565b806321b8092e1461035c578063232452161461038557806323b872dd146103ae5780633f4ba83a146103d7576101ee565b8063095ea7b3116101c1578063095ea7b3146102c15780630d39fc81146102ea5780630f4e57fd1461031557806312639f9f14610340576101ee565b806301ffc9a7146101f35780630675b7c61461023057806306fdde0314610259578063081812fc14610284575b600080fd5b3480156101ff57600080fd5b5061021a60048036038101906102159190612922565b610781565b604051610227919061296a565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612acb565b610863565b005b34801561026557600080fd5b5061026e610885565b60405161027b9190612b9c565b60405180910390f35b34801561029057600080fd5b506102ab60048036038101906102a69190612bf4565b610917565b6040516102b89190612c62565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e39190612ca9565b61095d565b005b3480156102f657600080fd5b506102ff610a75565b60405161030c9190612cf8565b60405180910390f35b34801561032157600080fd5b5061032a610a7b565b6040516103379190612b9c565b60405180910390f35b61035a60048036038101906103559190612e32565b610b09565b005b34801561036857600080fd5b50610383600480360381019061037e9190612e8e565b610c83565b005b34801561039157600080fd5b506103ac60048036038101906103a79190612f7e565b610ccf565b005b3480156103ba57600080fd5b506103d560048036038101906103d09190612fc7565b610d74565b005b3480156103e357600080fd5b506103ec610dd4565b005b3480156103fa57600080fd5b5061041560048036038101906104109190612fc7565b610de6565b005b34801561042357600080fd5b5061043e60048036038101906104399190612bf4565b610e06565b005b34801561044c57600080fd5b50610455610ea6565b604051610462919061296a565b60405180910390f35b34801561047757600080fd5b50610492600480360381019061048d9190612bf4565b610ebd565b60405161049f9190612c62565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca9190612e8e565b610f6f565b6040516104dc9190612cf8565b60405180910390f35b3480156104f157600080fd5b506104fa611027565b005b34801561050857600080fd5b50610523600480360381019061051e9190612bf4565b61103b565b005b34801561053157600080fd5b5061053a61104d565b005b34801561054857600080fd5b5061055161105f565b60405161055e9190612c62565b60405180910390f35b34801561057357600080fd5b5061057c611089565b6040516105899190612b9c565b60405180910390f35b34801561059e57600080fd5b506105b960048036038101906105b49190613046565b61111b565b005b3480156105c757600080fd5b506105e260048036038101906105dd9190612e8e565b611131565b005b3480156105f057600080fd5b5061060b60048036038101906106069190612bf4565b611224565b005b34801561061957600080fd5b50610634600480360381019061062f9190613127565b611236565b005b34801561064257600080fd5b5061065d60048036038101906106589190612f7e565b611298565b005b34801561066b57600080fd5b5061068660048036038101906106819190612bf4565b61133d565b6040516106939190612b9c565b60405180910390f35b3480156106a857600080fd5b506106c360048036038101906106be9190612e8e565b61134f565b6040516106d0919061296a565b60405180910390f35b3480156106e557600080fd5b506106ee61136f565b005b3480156106fc57600080fd5b50610717600480360381019061071291906131aa565b611448565b604051610724919061296a565b60405180910390f35b34801561073957600080fd5b50610754600480360381019061074f9190612e8e565b6114dc565b005b34801561076257600080fd5b5061076b611560565b6040516107789190612cf8565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061084c57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061085c575061085b82611566565b5b9050919050565b61086b6115d0565b80600890805190602001906108819291906127d3565b5050565b60606000805461089490613219565b80601f01602080910402602001604051908101604052809291908181526020018280546108c090613219565b801561090d5780601f106108e25761010080835404028352916020019161090d565b820191906000526020600020905b8154815290600101906020018083116108f057829003601f168201915b5050505050905090565b60006109228261164e565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061096882610ebd565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d0906132bd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166109f8611699565b73ffffffffffffffffffffffffffffffffffffffff161480610a275750610a2681610a21611699565b611448565b5b610a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5d9061334f565b60405180910390fd5b610a7083836116a1565b505050565b600c5481565b60088054610a8890613219565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab490613219565b8015610b015780601f10610ad657610100808354040283529160200191610b01565b820191906000526020600020905b815481529060010190602001808311610ae457829003601f168201915b505050505081565b600060011515600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610b6b57600c54610b6f565b600d545b8360ff16610b7d919061339e565b9050348114610bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb890613444565b60405180910390fd5b81518360ff1614610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe906134b0565b60405180910390fd5b6000610c13600e61175a565b905060005b8460ff16811015610c7c57610c2d3383611768565b610c5182858381518110610c4457610c436134d0565b5b6020026020010151611942565b610c5b600e6119b6565b8180610c66906134ff565b9250508080610c74906134ff565b915050610c18565b5050505050565b610c8b6115d0565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610cd76115d0565b60005b81518161ffff161015610d70576000600b6000848461ffff1681518110610d0457610d036134d0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d6890613556565b915050610cda565b5050565b610d85610d7f611699565b826119cc565b610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb906135f3565b60405180910390fd5b610dcf838383611a61565b505050565b610ddc6115d0565b610de4611cc8565b565b610e0183838360405180602001604052806000815250611236565b505050565b610e17610e11611699565b826119cc565b80610e5b5750610e2561105f565b73ffffffffffffffffffffffffffffffffffffffff16610e43611699565b73ffffffffffffffffffffffffffffffffffffffff16145b610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e91906135f3565b60405180910390fd5b610ea381611d2b565b50565b6000600760009054906101000a900460ff16905090565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5d9061365f565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd7906136f1565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61102f6115d0565b6110396000611d37565b565b6110436115d0565b80600c8190555050565b6110556115d0565b61105d611dfd565b565b6000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461109890613219565b80601f01602080910402602001604051908101604052809291908181526020018280546110c490613219565b80156111115780601f106110e657610100808354040283529160200191611111565b820191906000526020600020905b8154815290600101906020018083116110f457829003601f168201915b5050505050905090565b61112d611126611699565b8383611e60565b5050565b6111396115d0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a09061375d565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fa2ea9883a321a3e97b8266c2b078bfeec6d50c711ed71f874a90d500ae2eaf36816040516112199190612c62565b60405180910390a150565b61122c6115d0565b80600d8190555050565b611247611241611699565b836119cc565b611286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127d906135f3565b60405180910390fd5b61129284848484611fcd565b50505050565b6112a06115d0565b60005b81518161ffff161015611339576001600b6000848461ffff16815181106112cd576112cc6134d0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061133190613556565b9150506112a3565b5050565b606061134882612029565b9050919050565b600b6020528060005260406000206000915054906101000a900460ff1681565b6113776115d0565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516113bf906137ae565b60006040518083038185875af1925050503d80600081146113fc576040519150601f19603f3d011682016040523d82523d6000602084013e611401565b606091505b5050905080611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c9061380f565b60405180910390fd5b50565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6114e46115d0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154b906138a1565b60405180910390fd5b61155d81611d37565b50565b600d5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6115d8611699565b73ffffffffffffffffffffffffffffffffffffffff166115f661105f565b73ffffffffffffffffffffffffffffffffffffffff161461164c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116439061390d565b60405180910390fd5b565b6116578161213c565b611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d9061365f565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661171483610ebd565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cf90613979565b60405180910390fd5b6117e18161213c565b15611821576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611818906139e5565b60405180910390fd5b61182d600083836121a8565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461187d9190613a05565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461193e600083836121c0565b5050565b61194b8261213c565b61198a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198190613acd565b60405180910390fd5b806006600084815260200190815260200160002090805190602001906119b19291906127d3565b505050565b6001816000016000828254019250508190555050565b6000806119d883610ebd565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611a1a5750611a198185611448565b5b80611a5857508373ffffffffffffffffffffffffffffffffffffffff16611a4084610917565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611a8182610ebd565b73ffffffffffffffffffffffffffffffffffffffff1614611ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ace90613b5f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3e90613bf1565b60405180910390fd5b611b528383836121a8565b611b5d6000826116a1565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611bad9190613c11565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c049190613a05565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611cc38383836121c0565b505050565b611cd06121c5565b6000600760006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611d14611699565b604051611d219190612c62565b60405180910390a1565b611d348161220e565b50565b6000600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611e05612261565b6001600760006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611e49611699565b604051611e569190612c62565b60405180910390a1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec690613c91565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611fc0919061296a565b60405180910390a3505050565b611fd8848484611a61565b611fe4848484846122ab565b612023576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201a90613d23565b60405180910390fd5b50505050565b60606120348261164e565b600060066000848152602001908152602001600020805461205490613219565b80601f016020809104026020016040519081016040528092919081815260200182805461208090613219565b80156120cd5780601f106120a2576101008083540402835291602001916120cd565b820191906000526020600020905b8154815290600101906020018083116120b057829003601f168201915b5050505050905060006120de612433565b90506000815114156120f4578192505050612137565b600082511115612129578082604051602001612111929190613d7f565b60405160208183030381529060405292505050612137565b612132846124c5565b925050505b919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6121b0612261565b6121bb83838361252d565b505050565b505050565b6121cd610ea6565b61220c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220390613def565b60405180910390fd5b565b61221781612532565b600060066000838152602001908152602001600020805461223790613219565b90501461225e5760066000828152602001908152602001600020600061225d9190612859565b5b50565b612269610ea6565b156122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a090613e5b565b60405180910390fd5b565b60006122cc8473ffffffffffffffffffffffffffffffffffffffff1661264f565b15612426578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026122f5611699565b8786866040518563ffffffff1660e01b81526004016123179493929190613ed0565b6020604051808303816000875af192505050801561235357506040513d601f19601f820116820180604052508101906123509190613f31565b60015b6123d6573d8060008114612383576040519150601f19603f3d011682016040523d82523d6000602084013e612388565b606091505b506000815114156123ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c590613d23565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061242b565b600190505b949350505050565b60606008805461244290613219565b80601f016020809104026020016040519081016040528092919081815260200182805461246e90613219565b80156124bb5780601f10612490576101008083540402835291602001916124bb565b820191906000526020600020905b81548152906001019060200180831161249e57829003601f168201915b5050505050905090565b60606124d08261164e565b60006124da612433565b905060008151116124fa5760405180602001604052806000815250612525565b8061250484612672565b604051602001612515929190613d7f565b6040516020818303038152906040525b915050919050565b505050565b600061253d82610ebd565b905061254b816000846121a8565b6125566000836116a1565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125a69190613c11565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461264b816000846121c0565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b606060008214156126ba576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506127ce565b600082905060005b600082146126ec5780806126d5906134ff565b915050600a826126e59190613f8d565b91506126c2565b60008167ffffffffffffffff811115612708576127076129a0565b5b6040519080825280601f01601f19166020018201604052801561273a5781602001600182028036833780820191505090505b5090505b600085146127c7576001826127539190613c11565b9150600a856127629190613fbe565b603061276e9190613a05565b60f81b818381518110612784576127836134d0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856127c09190613f8d565b945061273e565b8093505050505b919050565b8280546127df90613219565b90600052602060002090601f0160209004810192826128015760008555612848565b82601f1061281a57805160ff1916838001178555612848565b82800160010185558215612848579182015b8281111561284757825182559160200191906001019061282c565b5b5090506128559190612899565b5090565b50805461286590613219565b6000825580601f106128775750612896565b601f0160209004906000526020600020908101906128959190612899565b5b50565b5b808211156128b257600081600090555060010161289a565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6128ff816128ca565b811461290a57600080fd5b50565b60008135905061291c816128f6565b92915050565b600060208284031215612938576129376128c0565b5b60006129468482850161290d565b91505092915050565b60008115159050919050565b6129648161294f565b82525050565b600060208201905061297f600083018461295b565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6129d88261298f565b810181811067ffffffffffffffff821117156129f7576129f66129a0565b5b80604052505050565b6000612a0a6128b6565b9050612a1682826129cf565b919050565b600067ffffffffffffffff821115612a3657612a356129a0565b5b612a3f8261298f565b9050602081019050919050565b82818337600083830152505050565b6000612a6e612a6984612a1b565b612a00565b905082815260208101848484011115612a8a57612a8961298a565b5b612a95848285612a4c565b509392505050565b600082601f830112612ab257612ab1612985565b5b8135612ac2848260208601612a5b565b91505092915050565b600060208284031215612ae157612ae06128c0565b5b600082013567ffffffffffffffff811115612aff57612afe6128c5565b5b612b0b84828501612a9d565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b4e578082015181840152602081019050612b33565b83811115612b5d576000848401525b50505050565b6000612b6e82612b14565b612b788185612b1f565b9350612b88818560208601612b30565b612b918161298f565b840191505092915050565b60006020820190508181036000830152612bb68184612b63565b905092915050565b6000819050919050565b612bd181612bbe565b8114612bdc57600080fd5b50565b600081359050612bee81612bc8565b92915050565b600060208284031215612c0a57612c096128c0565b5b6000612c1884828501612bdf565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c4c82612c21565b9050919050565b612c5c81612c41565b82525050565b6000602082019050612c776000830184612c53565b92915050565b612c8681612c41565b8114612c9157600080fd5b50565b600081359050612ca381612c7d565b92915050565b60008060408385031215612cc057612cbf6128c0565b5b6000612cce85828601612c94565b9250506020612cdf85828601612bdf565b9150509250929050565b612cf281612bbe565b82525050565b6000602082019050612d0d6000830184612ce9565b92915050565b600060ff82169050919050565b612d2981612d13565b8114612d3457600080fd5b50565b600081359050612d4681612d20565b92915050565b600067ffffffffffffffff821115612d6757612d666129a0565b5b602082029050602081019050919050565b600080fd5b6000612d90612d8b84612d4c565b612a00565b90508083825260208201905060208402830185811115612db357612db2612d78565b5b835b81811015612dfa57803567ffffffffffffffff811115612dd857612dd7612985565b5b808601612de58982612a9d565b85526020850194505050602081019050612db5565b5050509392505050565b600082601f830112612e1957612e18612985565b5b8135612e29848260208601612d7d565b91505092915050565b60008060408385031215612e4957612e486128c0565b5b6000612e5785828601612d37565b925050602083013567ffffffffffffffff811115612e7857612e776128c5565b5b612e8485828601612e04565b9150509250929050565b600060208284031215612ea457612ea36128c0565b5b6000612eb284828501612c94565b91505092915050565b600067ffffffffffffffff821115612ed657612ed56129a0565b5b602082029050602081019050919050565b6000612efa612ef584612ebb565b612a00565b90508083825260208201905060208402830185811115612f1d57612f1c612d78565b5b835b81811015612f465780612f328882612c94565b845260208401935050602081019050612f1f565b5050509392505050565b600082601f830112612f6557612f64612985565b5b8135612f75848260208601612ee7565b91505092915050565b600060208284031215612f9457612f936128c0565b5b600082013567ffffffffffffffff811115612fb257612fb16128c5565b5b612fbe84828501612f50565b91505092915050565b600080600060608486031215612fe057612fdf6128c0565b5b6000612fee86828701612c94565b9350506020612fff86828701612c94565b925050604061301086828701612bdf565b9150509250925092565b6130238161294f565b811461302e57600080fd5b50565b6000813590506130408161301a565b92915050565b6000806040838503121561305d5761305c6128c0565b5b600061306b85828601612c94565b925050602061307c85828601613031565b9150509250929050565b600067ffffffffffffffff8211156130a1576130a06129a0565b5b6130aa8261298f565b9050602081019050919050565b60006130ca6130c584613086565b612a00565b9050828152602081018484840111156130e6576130e561298a565b5b6130f1848285612a4c565b509392505050565b600082601f83011261310e5761310d612985565b5b813561311e8482602086016130b7565b91505092915050565b60008060008060808587031215613141576131406128c0565b5b600061314f87828801612c94565b945050602061316087828801612c94565b935050604061317187828801612bdf565b925050606085013567ffffffffffffffff811115613192576131916128c5565b5b61319e878288016130f9565b91505092959194509250565b600080604083850312156131c1576131c06128c0565b5b60006131cf85828601612c94565b92505060206131e085828601612c94565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061323157607f821691505b60208210811415613245576132446131ea565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006132a7602183612b1f565b91506132b28261324b565b604082019050919050565b600060208201905081810360008301526132d68161329a565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000602082015250565b6000613339603e83612b1f565b9150613344826132dd565b604082019050919050565b600060208201905081810360008301526133688161332c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006133a982612bbe565b91506133b483612bbe565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133ed576133ec61336f565b5b828202905092915050565b7f4665657320446f6573204e6f74206d6174636821212121000000000000000000600082015250565b600061342e601783612b1f565b9150613439826133f8565b602082019050919050565b6000602082019050818103600083015261345d81613421565b9050919050565b7f555249206f72206e6674436e74206e6f74206d61746368656421212121000000600082015250565b600061349a601d83612b1f565b91506134a582613464565b602082019050919050565b600060208201905081810360008301526134c98161348d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061350a82612bbe565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561353d5761353c61336f565b5b600182019050919050565b600061ffff82169050919050565b600061356182613548565b915061ffff8214156135765761357561336f565b5b600182019050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206e6f7220617070726f766564000000000000000000000000000000000000602082015250565b60006135dd602e83612b1f565b91506135e882613581565b604082019050919050565b6000602082019050818103600083015261360c816135d0565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000613649601883612b1f565b915061365482613613565b602082019050919050565b600060208201905081810360008301526136788161363c565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006136db602983612b1f565b91506136e68261367f565b604082019050919050565b6000602082019050818103600083015261370a816136ce565b9050919050565b7f546869732061646472657373206973206e6f742076616c696400000000000000600082015250565b6000613747601983612b1f565b915061375282613711565b602082019050919050565b600060208201905081810360008301526137768161373a565b9050919050565b600081905092915050565b50565b600061379860008361377d565b91506137a382613788565b600082019050919050565b60006137b98261378b565b9150819050919050565b7f5478206e6f742073756363657373000000000000000000000000000000000000600082015250565b60006137f9600e83612b1f565b9150613804826137c3565b602082019050919050565b60006020820190508181036000830152613828816137ec565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061388b602683612b1f565b91506138968261382f565b604082019050919050565b600060208201905081810360008301526138ba8161387e565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138f7602083612b1f565b9150613902826138c1565b602082019050919050565b60006020820190508181036000830152613926816138ea565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613963602083612b1f565b915061396e8261392d565b602082019050919050565b6000602082019050818103600083015261399281613956565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006139cf601c83612b1f565b91506139da82613999565b602082019050919050565b600060208201905081810360008301526139fe816139c2565b9050919050565b6000613a1082612bbe565b9150613a1b83612bbe565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a5057613a4f61336f565b5b828201905092915050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000613ab7602e83612b1f565b9150613ac282613a5b565b604082019050919050565b60006020820190508181036000830152613ae681613aaa565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613b49602583612b1f565b9150613b5482613aed565b604082019050919050565b60006020820190508181036000830152613b7881613b3c565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613bdb602483612b1f565b9150613be682613b7f565b604082019050919050565b60006020820190508181036000830152613c0a81613bce565b9050919050565b6000613c1c82612bbe565b9150613c2783612bbe565b925082821015613c3a57613c3961336f565b5b828203905092915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613c7b601983612b1f565b9150613c8682613c45565b602082019050919050565b60006020820190508181036000830152613caa81613c6e565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613d0d603283612b1f565b9150613d1882613cb1565b604082019050919050565b60006020820190508181036000830152613d3c81613d00565b9050919050565b600081905092915050565b6000613d5982612b14565b613d638185613d43565b9350613d73818560208601612b30565b80840191505092915050565b6000613d8b8285613d4e565b9150613d978284613d4e565b91508190509392505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000613dd9601483612b1f565b9150613de482613da3565b602082019050919050565b60006020820190508181036000830152613e0881613dcc565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613e45601083612b1f565b9150613e5082613e0f565b602082019050919050565b60006020820190508181036000830152613e7481613e38565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613ea282613e7b565b613eac8185613e86565b9350613ebc818560208601612b30565b613ec58161298f565b840191505092915050565b6000608082019050613ee56000830187612c53565b613ef26020830186612c53565b613eff6040830185612ce9565b8181036060830152613f118184613e97565b905095945050505050565b600081519050613f2b816128f6565b92915050565b600060208284031215613f4757613f466128c0565b5b6000613f5584828501613f1c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f9882612bbe565b9150613fa383612bbe565b925082613fb357613fb2613f5e565b5b828204905092915050565b6000613fc982612bbe565b9150613fd483612bbe565b925082613fe457613fe3613f5e565b5b82820690509291505056fea26469706673582212203766d80fc903534b45c977154d380673d3389c2a02eb351c70e36c6e2878ba1764736f6c634300080b0033