60806040523480156200001157600080fd5b506040518060400160405280601081526020017f577261707065642041435441204e4654000000000000000000000000000000008152506040518060400160405280600881526020017f414354412d4e4654000000000000000000000000000000000000000000000000815250816000908051906020019062000096929190620001c1565b508060019080519060200190620000af929190620001c1565b5050506000600b60006101000a81548160ff021916908315150217905550620000ed620000e1620000f360201b60201c565b620000fb60201b60201c565b620002d5565b600033905090565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001cf90620002a0565b90600052602060002090601f016020900481019282620001f357600085556200023f565b82601f106200020e57805160ff19168380011785556200023f565b828001600101855582156200023f579182015b828111156200023e57825182559160200191906001019062000221565b5b5090506200024e919062000252565b5090565b5b808211156200026d57600081600090555060010162000253565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002b957607f821691505b602082108103620002cf57620002ce62000271565b5b50919050565b61441280620002e56000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636352211e116100f9578063a118f24911610097578063b88d4fde11610071578063b88d4fde146104cd578063c87b56dd146104e9578063e985e9c514610519578063f2fde38b14610549576101c4565b8063a118f24914610477578063a22cb46514610493578063b761f6a4146104af576101c4565b80638456cb59116100d35780638456cb59146104155780638823da6c1461041f5780638da5cb5b1461043b57806395d89b4114610459576101c4565b80636352211e146103ab57806370a08231146103db578063715018a61461040b576101c4565b806334ccc5ea1161016657806342842e0e1161014057806342842e0e1461032557806342966c68146103415780634f6ccce71461035d5780635c975abb1461038d576101c4565b806334ccc5ea146102cd5780633d02d0c9146102eb5780633f4ba83a1461031b576101c4565b8063095ea7b3116101a2578063095ea7b31461024757806318160ddd1461026357806323b872dd146102815780632f745c591461029d576101c4565b806301ffc9a7146101c957806306fdde03146101f9578063081812fc14610217575b600080fd5b6101e360048036038101906101de9190612c3f565b610565565b6040516101f09190612c87565b60405180910390f35b610201610577565b60405161020e9190612d3b565b60405180910390f35b610231600480360381019061022c9190612d93565b610609565b60405161023e9190612e01565b60405180910390f35b610261600480360381019061025c9190612e48565b61068e565b005b61026b6107a5565b6040516102789190612e97565b60405180910390f35b61029b60048036038101906102969190612eb2565b6107b2565b005b6102b760048036038101906102b29190612e48565b610812565b6040516102c49190612e97565b60405180910390f35b6102d56108b7565b6040516102e29190612f22565b60405180910390f35b61030560048036038101906103009190613072565b6108bd565b6040516103129190612e97565b60405180910390f35b610323610a5b565b005b61033f600480360381019061033a9190612eb2565b610ae1565b005b61035b60048036038101906103569190612d93565b610b01565b005b61037760048036038101906103729190612d93565b610b5d565b6040516103849190612e97565b60405180910390f35b610395610bce565b6040516103a29190612c87565b60405180910390f35b6103c560048036038101906103c09190612d93565b610be5565b6040516103d29190612e01565b60405180910390f35b6103f560048036038101906103f091906130ce565b610c96565b6040516104029190612e97565b60405180910390f35b610413610d4d565b005b61041d610dd5565b005b610439600480360381019061043491906130ce565b610e5b565b005b610443610f71565b6040516104509190612e01565b60405180910390f35b610461610f9b565b60405161046e9190612d3b565b60405180910390f35b610491600480360381019061048c91906130ce565b61102d565b005b6104ad60048036038101906104a89190613127565b61114c565b005b6104b7611162565b6040516104c49190612f22565b60405180910390f35b6104e760048036038101906104e29190613208565b611167565b005b61050360048036038101906104fe9190612d93565b6111c9565b6040516105109190612d3b565b60405180910390f35b610533600480360381019061052e919061328b565b6111db565b6040516105409190612c87565b60405180910390f35b610563600480360381019061055e91906130ce565b61126f565b005b600061057082611366565b9050919050565b606060008054610586906132fa565b80601f01602080910402602001604051908101604052809291908181526020018280546105b2906132fa565b80156105ff5780601f106105d4576101008083540402835291602001916105ff565b820191906000526020600020905b8154815290600101906020018083116105e257829003601f168201915b5050505050905090565b6000610614826113e0565b610653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064a9061339d565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061069982610be5565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610709576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107009061342f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661072861144c565b73ffffffffffffffffffffffffffffffffffffffff16148061075757506107568161075161144c565b6111db565b5b610796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078d906134c1565b60405180910390fd5b6107a08383611454565b505050565b6000600880549050905090565b6107c36107bd61144c565b8261150d565b610802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f990613553565b60405180910390fd5b61080d8383836115eb565b505050565b600061081d83610c96565b821061085e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610855906135e5565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b61010081565b60006108c7610bce565b15610907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fe90613651565b60405180910390fd5b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098a906136bd565b60405180910390fd5b600461ffff16825110156109dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d390613729565b60405180910390fd5b61010061ffff16825110610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c90613795565b60405180910390fd5b610a2f600c611851565b6000610a3b600c611867565b9050610a478482611875565b610a518184611a4e565b8091505092915050565b610a6361144c565b73ffffffffffffffffffffffffffffffffffffffff16610a81610f71565b73ffffffffffffffffffffffffffffffffffffffff1614610ad7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ace90613801565b60405180910390fd5b610adf611ac2565b565b610afc83838360405180602001604052806000815250611167565b505050565b610b12610b0c61144c565b8261150d565b610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4890613893565b60405180910390fd5b610b5a81611b64565b50565b6000610b676107a5565b8210610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f90613925565b60405180910390fd5b60088281548110610bbc57610bbb613945565b5b90600052602060002001549050919050565b6000600b60009054906101000a900460ff16905090565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c84906139e6565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfd90613a78565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d5561144c565b73ffffffffffffffffffffffffffffffffffffffff16610d73610f71565b73ffffffffffffffffffffffffffffffffffffffff1614610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc090613801565b60405180910390fd5b610dd36000611b70565b565b610ddd61144c565b73ffffffffffffffffffffffffffffffffffffffff16610dfb610f71565b73ffffffffffffffffffffffffffffffffffffffff1614610e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4890613801565b60405180910390fd5b610e59611c36565b565b610e6361144c565b73ffffffffffffffffffffffffffffffffffffffff16610e81610f71565b73ffffffffffffffffffffffffffffffffffffffff1614610ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ece90613801565b60405180910390fd5b610edf610bce565b15610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1690613651565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff021916905550565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610faa906132fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610fd6906132fa565b80156110235780601f10610ff857610100808354040283529160200191611023565b820191906000526020600020905b81548152906001019060200180831161100657829003601f168201915b5050505050905090565b61103561144c565b73ffffffffffffffffffffffffffffffffffffffff16611053610f71565b73ffffffffffffffffffffffffffffffffffffffff16146110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a090613801565b60405180910390fd5b6110b1610bce565b156110f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e890613651565b60405180910390fd5b6001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61115e61115761144c565b8383611cd9565b5050565b600481565b61117861117261144c565b8361150d565b6111b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ae90613553565b60405180910390fd5b6111c384848484611e45565b50505050565b60606111d482611ea1565b9050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61127761144c565b73ffffffffffffffffffffffffffffffffffffffff16611295610f71565b73ffffffffffffffffffffffffffffffffffffffff16146112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290613801565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361135a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135190613b0a565b60405180910390fd5b61136381611b70565b50565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113d957506113d882611ff2565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166114c783610be5565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000611518826113e0565b611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e90613b9c565b60405180910390fd5b600061156283610be5565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806115d157508373ffffffffffffffffffffffffffffffffffffffff166115b984610609565b73ffffffffffffffffffffffffffffffffffffffff16145b806115e257506115e181856111db565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661160b82610be5565b73ffffffffffffffffffffffffffffffffffffffff1614611661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165890613c2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c790613cc0565b60405180910390fd5b6116db8383836120d4565b6116e6600082611454565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117369190613d0f565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461178d9190613d43565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461184c83838361212c565b505050565b6001816000016000828254019250508190555050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118db90613de5565b60405180910390fd5b6118ed816113e0565b1561192d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192490613e51565b60405180910390fd5b611939600083836120d4565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119899190613d43565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a4a6000838361212c565b5050565b611a57826113e0565b611a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8d90613ee3565b60405180910390fd5b80600a60008481526020019081526020016000209080519060200190611abd929190612af0565b505050565b611aca610bce565b611b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0090613f4f565b60405180910390fd5b6000600b60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611b4d61144c565b604051611b5a9190612e01565b60405180910390a1565b611b6d81612131565b50565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611c3e610bce565b15611c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7590613651565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611cc261144c565b604051611ccf9190612e01565b60405180910390a1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3e90613fbb565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611e389190612c87565b60405180910390a3505050565b611e508484846115eb565b611e5c84848484612184565b611e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e929061404d565b60405180910390fd5b50505050565b6060611eac826113e0565b611eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee2906140df565b60405180910390fd5b6000600a60008481526020019081526020016000208054611f0b906132fa565b80601f0160208091040260200160405190810160405280929190818152602001828054611f37906132fa565b8015611f845780601f10611f5957610100808354040283529160200191611f84565b820191906000526020600020905b815481529060010190602001808311611f6757829003601f168201915b505050505090506000611f9561230b565b90506000815103611faa578192505050611fed565b600082511115611fdf578082604051602001611fc792919061413b565b60405160208183030381529060405292505050611fed565b611fe884612322565b925050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806120bd57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806120cd57506120cc826123c9565b5b9050919050565b6120dc610bce565b1561211c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211390613651565b60405180910390fd5b612127838383612433565b505050565b505050565b61213a81612545565b6000600a6000838152602001908152602001600020805461215a906132fa565b90501461218157600a600082815260200190815260200160002060006121809190612b76565b5b50565b60006121a58473ffffffffffffffffffffffffffffffffffffffff16612662565b156122fe578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026121ce61144c565b8786866040518563ffffffff1660e01b81526004016121f094939291906141b4565b6020604051808303816000875af192505050801561222c57506040513d601f19601f820116820180604052508101906122299190614215565b60015b6122ae573d806000811461225c576040519150601f19603f3d011682016040523d82523d6000602084013e612261565b606091505b5060008151036122a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229d9061404d565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612303565b600190505b949350505050565b606060405180602001604052806000815250905090565b606061232d826113e0565b61236c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612363906142b4565b60405180910390fd5b600061237661230b565b9050600081511161239657604051806020016040528060008152506123c1565b806123a084612685565b6040516020016123b192919061413b565b6040516020818303038152906040525b915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61243e8383836127e5565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036124805761247b816127ea565b6124bf565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146124be576124bd8382612833565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612501576124fc816129a0565b612540565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461253f5761253e8282612a71565b5b5b505050565b600061255082610be5565b905061255e816000846120d4565b612569600083611454565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125b99190613d0f565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461265e8160008461212c565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6060600082036126cc576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506127e0565b600082905060005b600082146126fe5780806126e7906142d4565b915050600a826126f7919061434b565b91506126d4565b60008167ffffffffffffffff81111561271a57612719612f47565b5b6040519080825280601f01601f19166020018201604052801561274c5781602001600182028036833780820191505090505b5090505b600085146127d9576001826127659190613d0f565b9150600a85612774919061437c565b60306127809190613d43565b60f81b81838151811061279657612795613945565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856127d2919061434b565b9450612750565b8093505050505b919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161284084610c96565b61284a9190613d0f565b905060006007600084815260200190815260200160002054905081811461292f576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506129b49190613d0f565b90506000600960008481526020019081526020016000205490506000600883815481106129e4576129e3613945565b5b906000526020600020015490508060088381548110612a0657612a05613945565b5b906000526020600020018190555081600960008381526020019081526020016000208190555060096000858152602001908152602001600020600090556008805480612a5557612a546143ad565b5b6001900381819060005260206000200160009055905550505050565b6000612a7c83610c96565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b828054612afc906132fa565b90600052602060002090601f016020900481019282612b1e5760008555612b65565b82601f10612b3757805160ff1916838001178555612b65565b82800160010185558215612b65579182015b82811115612b64578251825591602001919060010190612b49565b5b509050612b729190612bb6565b5090565b508054612b82906132fa565b6000825580601f10612b945750612bb3565b601f016020900490600052602060002090810190612bb29190612bb6565b5b50565b5b80821115612bcf576000816000905550600101612bb7565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612c1c81612be7565b8114612c2757600080fd5b50565b600081359050612c3981612c13565b92915050565b600060208284031215612c5557612c54612bdd565b5b6000612c6384828501612c2a565b91505092915050565b60008115159050919050565b612c8181612c6c565b82525050565b6000602082019050612c9c6000830184612c78565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612cdc578082015181840152602081019050612cc1565b83811115612ceb576000848401525b50505050565b6000601f19601f8301169050919050565b6000612d0d82612ca2565b612d178185612cad565b9350612d27818560208601612cbe565b612d3081612cf1565b840191505092915050565b60006020820190508181036000830152612d558184612d02565b905092915050565b6000819050919050565b612d7081612d5d565b8114612d7b57600080fd5b50565b600081359050612d8d81612d67565b92915050565b600060208284031215612da957612da8612bdd565b5b6000612db784828501612d7e565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612deb82612dc0565b9050919050565b612dfb81612de0565b82525050565b6000602082019050612e166000830184612df2565b92915050565b612e2581612de0565b8114612e3057600080fd5b50565b600081359050612e4281612e1c565b92915050565b60008060408385031215612e5f57612e5e612bdd565b5b6000612e6d85828601612e33565b9250506020612e7e85828601612d7e565b9150509250929050565b612e9181612d5d565b82525050565b6000602082019050612eac6000830184612e88565b92915050565b600080600060608486031215612ecb57612eca612bdd565b5b6000612ed986828701612e33565b9350506020612eea86828701612e33565b9250506040612efb86828701612d7e565b9150509250925092565b600061ffff82169050919050565b612f1c81612f05565b82525050565b6000602082019050612f376000830184612f13565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612f7f82612cf1565b810181811067ffffffffffffffff82111715612f9e57612f9d612f47565b5b80604052505050565b6000612fb1612bd3565b9050612fbd8282612f76565b919050565b600067ffffffffffffffff821115612fdd57612fdc612f47565b5b612fe682612cf1565b9050602081019050919050565b82818337600083830152505050565b600061301561301084612fc2565b612fa7565b90508281526020810184848401111561303157613030612f42565b5b61303c848285612ff3565b509392505050565b600082601f83011261305957613058612f3d565b5b8135613069848260208601613002565b91505092915050565b6000806040838503121561308957613088612bdd565b5b600061309785828601612e33565b925050602083013567ffffffffffffffff8111156130b8576130b7612be2565b5b6130c485828601613044565b9150509250929050565b6000602082840312156130e4576130e3612bdd565b5b60006130f284828501612e33565b91505092915050565b61310481612c6c565b811461310f57600080fd5b50565b600081359050613121816130fb565b92915050565b6000806040838503121561313e5761313d612bdd565b5b600061314c85828601612e33565b925050602061315d85828601613112565b9150509250929050565b600067ffffffffffffffff82111561318257613181612f47565b5b61318b82612cf1565b9050602081019050919050565b60006131ab6131a684613167565b612fa7565b9050828152602081018484840111156131c7576131c6612f42565b5b6131d2848285612ff3565b509392505050565b600082601f8301126131ef576131ee612f3d565b5b81356131ff848260208601613198565b91505092915050565b6000806000806080858703121561322257613221612bdd565b5b600061323087828801612e33565b945050602061324187828801612e33565b935050604061325287828801612d7e565b925050606085013567ffffffffffffffff81111561327357613272612be2565b5b61327f878288016131da565b91505092959194509250565b600080604083850312156132a2576132a1612bdd565b5b60006132b085828601612e33565b92505060206132c185828601612e33565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061331257607f821691505b602082108103613325576133246132cb565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613387602c83612cad565b91506133928261332b565b604082019050919050565b600060208201905081810360008301526133b68161337a565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613419602183612cad565b9150613424826133bd565b604082019050919050565b600060208201905081810360008301526134488161340c565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006134ab603883612cad565b91506134b68261344f565b604082019050919050565b600060208201905081810360008301526134da8161349e565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b600061353d603183612cad565b9150613548826134e1565b604082019050919050565b6000602082019050818103600083015261356c81613530565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006135cf602b83612cad565b91506135da82613573565b604082019050919050565b600060208201905081810360008301526135fe816135c2565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b600061363b601083612cad565b915061364682613605565b602082019050919050565b6000602082019050818103600083015261366a8161362e565b9050919050565b7f6e6f7420616c6c6f776564000000000000000000000000000000000000000000600082015250565b60006136a7600b83612cad565b91506136b282613671565b602082019050919050565b600060208201905081810360008301526136d68161369a565b9050919050565b7f55524920697320746f6f2073686f727400000000000000000000000000000000600082015250565b6000613713601083612cad565b915061371e826136dd565b602082019050919050565b6000602082019050818103600083015261374281613706565b9050919050565b7f55524920697320746f6f206c6f6e670000000000000000000000000000000000600082015250565b600061377f600f83612cad565b915061378a82613749565b602082019050919050565b600060208201905081810360008301526137ae81613772565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137eb602083612cad565b91506137f6826137b5565b602082019050919050565b6000602082019050818103600083015261381a816137de565b9050919050565b7f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656400000000000000000000000000000000602082015250565b600061387d603083612cad565b915061388882613821565b604082019050919050565b600060208201905081810360008301526138ac81613870565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b600061390f602c83612cad565b915061391a826138b3565b604082019050919050565b6000602082019050818103600083015261393e81613902565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006139d0602983612cad565b91506139db82613974565b604082019050919050565b600060208201905081810360008301526139ff816139c3565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613a62602a83612cad565b9150613a6d82613a06565b604082019050919050565b60006020820190508181036000830152613a9181613a55565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613af4602683612cad565b9150613aff82613a98565b604082019050919050565b60006020820190508181036000830152613b2381613ae7565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613b86602c83612cad565b9150613b9182613b2a565b604082019050919050565b60006020820190508181036000830152613bb581613b79565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613c18602583612cad565b9150613c2382613bbc565b604082019050919050565b60006020820190508181036000830152613c4781613c0b565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613caa602483612cad565b9150613cb582613c4e565b604082019050919050565b60006020820190508181036000830152613cd981613c9d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d1a82612d5d565b9150613d2583612d5d565b925082821015613d3857613d37613ce0565b5b828203905092915050565b6000613d4e82612d5d565b9150613d5983612d5d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d8e57613d8d613ce0565b5b828201905092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613dcf602083612cad565b9150613dda82613d99565b602082019050919050565b60006020820190508181036000830152613dfe81613dc2565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613e3b601c83612cad565b9150613e4682613e05565b602082019050919050565b60006020820190508181036000830152613e6a81613e2e565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000613ecd602e83612cad565b9150613ed882613e71565b604082019050919050565b60006020820190508181036000830152613efc81613ec0565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000613f39601483612cad565b9150613f4482613f03565b602082019050919050565b60006020820190508181036000830152613f6881613f2c565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613fa5601983612cad565b9150613fb082613f6f565b602082019050919050565b60006020820190508181036000830152613fd481613f98565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614037603283612cad565b915061404282613fdb565b604082019050919050565b600060208201905081810360008301526140668161402a565b9050919050565b7f45524337323155524953746f726167653a2055524920717565727920666f722060008201527f6e6f6e6578697374656e7420746f6b656e000000000000000000000000000000602082015250565b60006140c9603183612cad565b91506140d48261406d565b604082019050919050565b600060208201905081810360008301526140f8816140bc565b9050919050565b600081905092915050565b600061411582612ca2565b61411f81856140ff565b935061412f818560208601612cbe565b80840191505092915050565b6000614147828561410a565b9150614153828461410a565b91508190509392505050565b600081519050919050565b600082825260208201905092915050565b60006141868261415f565b614190818561416a565b93506141a0818560208601612cbe565b6141a981612cf1565b840191505092915050565b60006080820190506141c96000830187612df2565b6141d66020830186612df2565b6141e36040830185612e88565b81810360608301526141f5818461417b565b905095945050505050565b60008151905061420f81612c13565b92915050565b60006020828403121561422b5761422a612bdd565b5b600061423984828501614200565b91505092915050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b600061429e602f83612cad565b91506142a982614242565b604082019050919050565b600060208201905081810360008301526142cd81614291565b9050919050565b60006142df82612d5d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361431157614310613ce0565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061435682612d5d565b915061436183612d5d565b9250826143715761437061431c565b5b828204905092915050565b600061438782612d5d565b915061439283612d5d565b9250826143a2576143a161431c565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220e569c10a7c6ad9692d1ad0f45ddfee8d4e33872ca8ec4ff3bbb480db23db3b0464736f6c634300080d0033