Source Code
Latest 25 from a total of 87 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Buy Token | 21385088 | 440 days ago | IN | 0.0001 ETH | 0.00163279 | ||||
| Withdraw Currenc... | 19069432 | 764 days ago | IN | 0 ETH | 0.00067426 | ||||
| Withdraw All | 19069401 | 764 days ago | IN | 0 ETH | 0.00145521 | ||||
| Buy Token | 19062720 | 765 days ago | IN | 0.062 ETH | 0.00060083 | ||||
| Buy Token | 19052868 | 766 days ago | IN | 0.1 ETH | 0.00102588 | ||||
| Buy Token | 18043026 | 908 days ago | IN | 0 ETH | 0.00506273 | ||||
| Withdraw Currenc... | 18042469 | 908 days ago | IN | 0 ETH | 0.00142256 | ||||
| Withdraw All | 18042466 | 908 days ago | IN | 0 ETH | 0.0023346 | ||||
| Buy Token | 18042344 | 908 days ago | IN | 0.11 ETH | 0.00402514 | ||||
| Buy Token | 18042002 | 908 days ago | IN | 0.025 ETH | 0.00067032 | ||||
| Buy Token | 18041837 | 908 days ago | IN | 0.025 ETH | 0.00144161 | ||||
| Buy Token | 18040422 | 908 days ago | IN | 0.0839 ETH | 0.00119253 | ||||
| Buy Token | 18038066 | 908 days ago | IN | 0.03 ETH | 0.00179337 | ||||
| Buy Token | 18038013 | 908 days ago | IN | 0.01 ETH | 0.00078748 | ||||
| Buy Token | 18038001 | 908 days ago | IN | 0.009 ETH | 0.00074094 | ||||
| Buy Token | 18037990 | 908 days ago | IN | 0 ETH | 0.00125973 | ||||
| Buy Token | 18037989 | 908 days ago | IN | 0.1 ETH | 0.00160773 | ||||
| Buy Token | 18037972 | 908 days ago | IN | 0 ETH | 0.00147423 | ||||
| Buy Token | 18037919 | 909 days ago | IN | 0.12 ETH | 0.00177678 | ||||
| Buy Token | 18037906 | 909 days ago | IN | 0.12 ETH | 0.00166509 | ||||
| Buy Token | 18037890 | 909 days ago | IN | 0.13 ETH | 0.00210302 | ||||
| Buy Token | 18037863 | 909 days ago | IN | 0.13 ETH | 0.0026668 | ||||
| Buy Token | 18037856 | 909 days ago | IN | 0.13 ETH | 0.00283743 | ||||
| Buy Token | 18037848 | 909 days ago | IN | 0.13 ETH | 0.00235686 | ||||
| Buy Token | 18037842 | 909 days ago | IN | 0.04 ETH | 0.00088898 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Presale
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-08-12
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;
library SafeMath {
function tryAdd(
uint256 a,
uint256 b
) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
function trySub(
uint256 a,
uint256 b
) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
function tryMul(
uint256 a,
uint256 b
) internal pure returns (bool, uint256) {
unchecked {
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
function tryDiv(
uint256 a,
uint256 b
) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
function tryMod(
uint256 a,
uint256 b
) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
pragma solidity ^0.8.0;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(
address recipient,
uint256 amount
) external returns (bool);
function allowance(
address owner,
address spender
) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}
pragma solidity ^0.8.0;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
pragma solidity ^0.8.0;
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
_transferOwnership(_msgSender());
}
function owner() public view virtual returns (address) {
return _owner;
}
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(
newOwner != address(0),
"Ownable: new owner is the zero address"
);
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
pragma solidity ^0.8.0;
library Address {
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}
function sendValue(address payable recipient, uint256 amount) internal {
require(
address(this).balance >= amount,
"Address: insufficient balance"
);
(bool success, ) = recipient.call{value: amount}("");
require(
success,
"Address: unable to send value, recipient may have reverted"
);
}
function functionCall(
address target,
bytes memory data
) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return
functionCallWithValue(
target,
data,
value,
"Address: low-level call with value failed"
);
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(
address(this).balance >= value,
"Address: insufficient balance for call"
);
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(
data
);
return verifyCallResult(success, returndata, errorMessage);
}
function functionStaticCall(
address target,
bytes memory data
) internal view returns (bytes memory) {
return
functionStaticCall(
target,
data,
"Address: low-level static call failed"
);
}
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResult(success, returndata, errorMessage);
}
function functionDelegateCall(
address target,
bytes memory data
) internal returns (bytes memory) {
return
functionDelegateCall(
target,
data,
"Address: low-level delegate call failed"
);
}
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResult(success, returndata, errorMessage);
}
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
// File contracts/OwnerWithdrawable.sol
pragma solidity ^0.8.0;
contract OwnerWithdrawable is Ownable {
using SafeMath for uint256;
using SafeERC20 for IERC20;
receive() external payable {}
fallback() external payable {}
function withdraw(address token, uint256 amt) public onlyOwner {
IERC20(token).safeTransfer(msg.sender, amt);
}
function withdrawAll(address token) public onlyOwner {
uint256 amt = IERC20(token).balanceOf(address(this));
withdraw(token, amt);
}
function withdrawCurrency(uint256 amt) public onlyOwner {
payable(msg.sender).transfer(amt);
}
// function deposit(address token, uint256 amt) public onlyOwner {
// uint256 allowance = IERC20(token).allowance(msg.sender, address(this));
// require(allowance >= amt, "Check the token allowance");
// IERC20(token).transferFrom(owner(), address(this), amt);
// }
}
pragma solidity ^0.8.0;
library SafeERC20 {
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(
token,
abi.encodeWithSelector(token.transfer.selector, to, value)
);
}
function safeTransferFrom(
IERC20 token,
address from,
address to,
uint256 value
) internal {
_callOptionalReturn(
token,
abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
);
}
function safeApprove(
IERC20 token,
address spender,
uint256 value
) internal {
require(
(value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(
token,
abi.encodeWithSelector(token.approve.selector, spender, value)
);
}
function safeIncreaseAllowance(
IERC20 token,
address spender,
uint256 value
) internal {
uint256 newAllowance = token.allowance(address(this), spender) + value;
_callOptionalReturn(
token,
abi.encodeWithSelector(
token.approve.selector,
spender,
newAllowance
)
);
}
function safeDecreaseAllowance(
IERC20 token,
address spender,
uint256 value
) internal {
unchecked {
uint256 oldAllowance = token.allowance(address(this), spender);
require(
oldAllowance >= value,
"SafeERC20: decreased allowance below zero"
);
uint256 newAllowance = oldAllowance - value;
_callOptionalReturn(
token,
abi.encodeWithSelector(
token.approve.selector,
spender,
newAllowance
)
);
}
}
function _callOptionalReturn(IERC20 token, bytes memory data) private {
bytes memory returndata = address(token).functionCall(
data,
"SafeERC20: low-level call failed"
);
if (returndata.length > 0) {
require(
abi.decode(returndata, (bool)),
"SafeERC20: ERC20 operation did not succeed"
);
}
}
}
pragma solidity ^0.8.0;
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
pragma solidity ^0.8.0;
contract Presale is Ownable, OwnerWithdrawable {
using SafeMath for uint256;
using SafeERC20 for IERC20;
using SafeERC20 for IERC20Metadata;
uint256 public rate;
address public saleToken;
uint public saleTokenDec;
uint256 public totalTokensforSale;
mapping(address => bool) public payableTokens;
mapping(address => uint256) public tokenPrices;
bool public saleStatus;
address[] public buyers;
mapping(address => BuyerTokenDetails) public buyersAmount;
uint256 public totalTokensSold;
struct BuyerTokenDetails {
uint amount;
bool exists;
bool isClaimed;
}
constructor() {
saleStatus = false;
}
modifier saleEnabled() {
require(saleStatus == true, "Presale: is not enabled");
_;
}
modifier saleStoped() {
require(saleStatus == false, "Presale: is not stopped");
_;
}
function setSaleToken(
address _saleToken,
uint256 _totalTokensforSale,
uint256 _rate,
bool _saleStatus
) external onlyOwner {
require(_rate != 0);
rate = _rate;
saleToken = _saleToken;
saleStatus = _saleStatus;
saleTokenDec = IERC20Metadata(saleToken).decimals();
totalTokensforSale = _totalTokensforSale;
IERC20(saleToken).safeTransferFrom(
msg.sender,
address(this),
totalTokensforSale
);
}
function stopSale() external onlyOwner {
saleStatus = false;
}
function resumeSale() external onlyOwner {
saleStatus = true;
}
function addPayableTokens(
address[] memory _tokens,
uint256[] memory _prices
) external onlyOwner {
require(
_tokens.length == _prices.length,
"Presale: tokens & prices arrays length mismatch"
);
for (uint256 i = 0; i < _tokens.length; i++) {
require(_prices[i] != 0);
payableTokens[_tokens[i]] = true;
tokenPrices[_tokens[i]] = _prices[i];
}
}
function payableTokenStatus(
address _token,
bool _status
) external onlyOwner {
require(payableTokens[_token] != _status);
payableTokens[_token] = _status;
}
function updateTokenRate(
address[] memory _tokens,
uint256[] memory _prices,
uint256 _rate
) external onlyOwner {
require(
_tokens.length == _prices.length,
"Presale: tokens & prices arrays length mismatch"
);
if (_rate != 0) {
rate = _rate;
}
for (uint256 i = 0; i < _tokens.length; i += 1) {
require(payableTokens[_tokens[i]] == true);
require(_prices[i] != 0);
tokenPrices[_tokens[i]] = _prices[i];
}
}
function getTokenAmount(
address token,
uint256 amount
) public view returns (uint256) {
uint256 amtOut;
if (token != address(0)) {
require(payableTokens[token] == true, "Presale: Token not allowed");
uint256 price = tokenPrices[token];
amtOut = amount.mul(10 ** saleTokenDec).div(price);
} else {
amtOut = amount.mul(10 ** saleTokenDec).div(rate);
}
return amtOut;
}
function buyToken(
address _token,
uint256 _amount
) external payable saleEnabled {
uint256 saleTokenAmt = _token != address(0)
? getTokenAmount(_token, _amount)
: getTokenAmount(address(0), msg.value);
require(
(totalTokensSold + saleTokenAmt) < totalTokensforSale,
"Presale: Not enough tokens to be sale"
);
if (_token != address(0)) {
require(_amount > 0);
IERC20(_token).safeTransferFrom(msg.sender, address(this), _amount);
} else {}
totalTokensSold += saleTokenAmt;
if (!buyersAmount[msg.sender].exists) {
buyers.push(msg.sender);
buyersAmount[msg.sender].exists = true;
}
buyersAmount[msg.sender].amount += saleTokenAmt;
}
function unlockToken() external payable saleStoped {
require(
buyersAmount[msg.sender].amount > 0,
"Presale: No tokens to claim"
);
uint256 tokensforWithdraw = buyersAmount[msg.sender].amount;
buyersAmount[msg.sender].amount = 0;
IERC20(saleToken).safeTransfer(msg.sender, tokensforWithdraw);
}
// Method to unlock all the tokens
function unlockAllTokens() external onlyOwner saleStoped {
for (uint256 i = 0; i < buyers.length; i++) {
if (buyersAmount[buyers[i]].amount > 0) {
IERC20(saleToken).safeTransfer(
buyers[i],
buyersAmount[buyers[i]].amount
);
buyersAmount[buyers[i]].amount = 0;
}
}
}
function withdrawAllSaleTokens() external onlyOwner saleStoped {
uint256 amt = IERC20(saleToken).balanceOf(address(this));
IERC20(saleToken).transfer(msg.sender, amt);
totalTokensforSale = 0;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"}],"name":"addPayableTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"buyToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"buyers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"buyersAmount","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"exists","type":"bool"},{"internalType":"bool","name":"isClaimed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"payableTokenStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"payableTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resumeSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleTokenDec","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_saleToken","type":"address"},{"internalType":"uint256","name":"_totalTokensforSale","type":"uint256"},{"internalType":"uint256","name":"_rate","type":"uint256"},{"internalType":"bool","name":"_saleStatus","type":"bool"}],"name":"setSaleToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenPrices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensforSale","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockAllTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"},{"internalType":"uint256","name":"_rate","type":"uint256"}],"name":"updateTokenRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAllSaleTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"withdrawCurrency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040523480156200001157600080fd5b5062000032620000266200005360201b60201c565b6200005b60201b60201c565b6000600760006101000a81548160ff0219169083151502179055506200011f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b613539806200012f6000396000f3fe6080604052600436106101a05760003560e01c806368f8fc10116100ec578063e36b0b371161008a578063f2fde38b11610064578063f2fde38b14610544578063f3fef3a31461056d578063f9020e3314610596578063fa09e630146105c1576101a7565b8063e36b0b37146104c5578063e985e367146104dc578063f2aa821814610507576101a7565b806380655eef116100c657806380655eef1461041b5780638da5cb5b146104585780639ae2fd3414610483578063ace1741c1461049a576101a7565b806368f8fc10146103bd5780636bcedf9c146103d9578063715018a614610404576101a7565b806333e364cb116101595780635413c1c8116101335780635413c1c81461031357806354a9f1021461033c5780635e0be6071461037b57806363b2011714610392576101a7565b806333e364cb146102aa5780633874e325146102c15780633c00a36c146102ea576101a7565b8063115ece4c146101a957806318a24b5b146101e6578063204120bc146101f057806329d429a81461022d5780632c4e722e146102565780633115329e14610281576101a7565b366101a757005b005b3480156101b557600080fd5b506101d060048036038101906101cb919061275a565b6105ea565b6040516101dd9190612fcc565b60405180910390f35b6101ee610775565b005b3480156101fc57600080fd5b50610217600480360381019061021291906126f5565b61092f565b6040516102249190612fcc565b60405180910390f35b34801561023957600080fd5b50610254600480360381019061024f919061271e565b610947565b005b34801561026257600080fd5b5061026b610a7b565b6040516102789190612fcc565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a39190612865565b610a81565b005b3480156102b657600080fd5b506102bf610d26565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190612796565b610dbf565b005b3480156102f657600080fd5b50610311600480360381019061030c919061290d565b610fb2565b005b34801561031f57600080fd5b5061033a600480360381019061033591906127f9565b611078565b005b34801561034857600080fd5b50610363600480360381019061035e91906126f5565b611306565b60405161037293929190612fe7565b60405180910390f35b34801561038757600080fd5b5061039061134a565b005b34801561039e57600080fd5b506103a76116f5565b6040516103b49190612fcc565b60405180910390f35b6103d760048036038101906103d2919061275a565b6116fb565b005b3480156103e557600080fd5b506103ee6119f3565b6040516103fb9190612fcc565b60405180910390f35b34801561041057600080fd5b506104196119f9565b005b34801561042757600080fd5b50610442600480360381019061043d91906126f5565b611a81565b60405161044f9190612e2f565b60405180910390f35b34801561046457600080fd5b5061046d611aa1565b60405161047a9190612db4565b60405180910390f35b34801561048f57600080fd5b50610498611aca565b005b3480156104a657600080fd5b506104af611d06565b6040516104bc9190612fcc565b60405180910390f35b3480156104d157600080fd5b506104da611d0c565b005b3480156104e857600080fd5b506104f1611da5565b6040516104fe9190612db4565b60405180910390f35b34801561051357600080fd5b5061052e6004803603810190610529919061290d565b611dcb565b60405161053b9190612db4565b60405180910390f35b34801561055057600080fd5b5061056b600480360381019061056691906126f5565b611e0a565b005b34801561057957600080fd5b50610594600480360381019061058f919061275a565b611f02565b005b3480156105a257600080fd5b506105ab611fad565b6040516105b89190612e2f565b60405180910390f35b3480156105cd57600080fd5b506105e860048036038101906105e391906126f5565b611fc0565b005b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146107335760011515600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146106b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ab90612e8c565b60405180910390fd5b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061072b8161071d600354600a61070e91906131b3565b876120d790919063ffffffff16565b6120ed90919063ffffffff16565b91505061076b565b61076860015461075a600354600a61074b91906131b3565b866120d790919063ffffffff16565b6120ed90919063ffffffff16565b90505b8091505092915050565b60001515600760009054906101000a900460ff161515146107cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c290612eac565b60405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411610850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084790612f2c565b60405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061092c3382600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166121039092919063ffffffff16565b50565b60066020528060005260406000206000915090505481565b61094f612189565b73ffffffffffffffffffffffffffffffffffffffff1661096d611aa1565b73ffffffffffffffffffffffffffffffffffffffff16146109c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ba90612f4c565b60405180910390fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610a2057600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60015481565b610a89612189565b73ffffffffffffffffffffffffffffffffffffffff16610aa7611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af490612f4c565b60405180910390fd5b8151835114610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3890612eec565b60405180910390fd5b60008114610b5157806001819055505b60005b8351811015610d20576001151560056000868481518110610b9e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610bfa57600080fd5b6000838281518110610c35577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610c4857600080fd5b828181518110610c81577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160066000868481518110610cc6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181610d1991906130d9565b9050610b54565b50505050565b610d2e612189565b73ffffffffffffffffffffffffffffffffffffffff16610d4c611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614610da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9990612f4c565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b610dc7612189565b73ffffffffffffffffffffffffffffffffffffffff16610de5611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614610e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3290612f4c565b60405180910390fd5b6000821415610e4957600080fd5b8160018190555083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1357600080fd5b505afa158015610f27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4b919061295f565b60ff1660038190555082600481905550610fac3330600454600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612191909392919063ffffffff16565b50505050565b610fba612189565b73ffffffffffffffffffffffffffffffffffffffff16610fd8611aa1565b73ffffffffffffffffffffffffffffffffffffffff161461102e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102590612f4c565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611074573d6000803e3d6000fd5b5050565b611080612189565b73ffffffffffffffffffffffffffffffffffffffff1661109e611aa1565b73ffffffffffffffffffffffffffffffffffffffff16146110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb90612f4c565b60405180910390fd5b8051825114611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90612eec565b60405180910390fd5b60005b825181101561130157600082828151811061117f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151141561119257600080fd5b6001600560008584815181106111d1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818181518110611263577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600660008584815181106112a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806112f9906133b3565b91505061113b565b505050565b60096020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060010160019054906101000a900460ff16905083565b611352612189565b73ffffffffffffffffffffffffffffffffffffffff16611370611aa1565b73ffffffffffffffffffffffffffffffffffffffff16146113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd90612f4c565b60405180910390fd5b60001515600760009054906101000a900460ff1615151461141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390612eac565b60405180910390fd5b60005b6008805490508110156116f2576000600960006008848154811061146c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156116df5761163260088281548110611518577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600060088581548110611581577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166121039092919063ffffffff16565b60006009600060088481548110611672577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b80806116ea906133b3565b91505061141f565b50565b600a5481565b60011515600760009054906101000a900460ff16151514611751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174890612f8c565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611797576117926000346105ea565b6117a2565b6117a183836105ea565b5b905060045481600a546117b591906130d9565b106117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90612f0c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611868576000821161183657600080fd5b6118633330848673ffffffffffffffffffffffffffffffffffffffff16612191909392919063ffffffff16565b611869565b5b80600a600082825461187b91906130d9565b92505081905550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff16611995576008339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546119e791906130d9565b92505081905550505050565b60045481565b611a01612189565b73ffffffffffffffffffffffffffffffffffffffff16611a1f611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6c90612f4c565b60405180910390fd5b611a7f600061221a565b565b60056020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611ad2612189565b73ffffffffffffffffffffffffffffffffffffffff16611af0611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90612f4c565b60405180910390fd5b60001515600760009054906101000a900460ff16151514611b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9390612eac565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611bf99190612db4565b60206040518083038186803b158015611c1157600080fd5b505afa158015611c25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c499190612936565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611ca8929190612e06565b602060405180830381600087803b158015611cc257600080fd5b505af1158015611cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfa91906128e4565b50600060048190555050565b60035481565b611d14612189565b73ffffffffffffffffffffffffffffffffffffffff16611d32611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7f90612f4c565b60405180910390fd5b6000600760006101000a81548160ff021916908315150217905550565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60088181548110611ddb57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e12612189565b73ffffffffffffffffffffffffffffffffffffffff16611e30611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7d90612f4c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ef6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eed90612e6c565b60405180910390fd5b611eff8161221a565b50565b611f0a612189565b73ffffffffffffffffffffffffffffffffffffffff16611f28611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7590612f4c565b60405180910390fd5b611fa933828473ffffffffffffffffffffffffffffffffffffffff166121039092919063ffffffff16565b5050565b600760009054906101000a900460ff1681565b611fc8612189565b73ffffffffffffffffffffffffffffffffffffffff16611fe6611aa1565b73ffffffffffffffffffffffffffffffffffffffff161461203c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203390612f4c565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120779190612db4565b60206040518083038186803b15801561208f57600080fd5b505afa1580156120a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c79190612936565b90506120d38282611f02565b5050565b600081836120e591906132d1565b905092915050565b600081836120fb919061312f565b905092915050565b6121848363a9059cbb60e01b8484604051602401612122929190612e06565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122de565b505050565b600033905090565b612214846323b872dd60e01b8585856040516024016121b293929190612dcf565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122de565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612340826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166123a59092919063ffffffff16565b90506000815111156123a0578080602001905181019061236091906128e4565b61239f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239690612fac565b60405180910390fd5b5b505050565b60606123b484846000856123bd565b90509392505050565b606082471015612402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f990612ecc565b60405180910390fd5b61240b856124d1565b61244a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244190612f6c565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516124739190612d9d565b60006040518083038185875af1925050503d80600081146124b0576040519150601f19603f3d011682016040523d82523d6000602084013e6124b5565b606091505b50915091506124c58282866124e4565b92505050949350505050565b600080823b905060008111915050919050565b606083156124f457829050612544565b6000835111156125075782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253b9190612e4a565b60405180910390fd5b9392505050565b600061255e6125598461304f565b61301e565b9050808382526020820190508285602086028201111561257d57600080fd5b60005b858110156125ad57816125938882612623565b845260208401935060208301925050600181019050612580565b5050509392505050565b60006125ca6125c58461307b565b61301e565b905080838252602082019050828560208602820111156125e957600080fd5b60005b8581101561261957816125ff88826126b6565b8452602084019350602083019250506001810190506125ec565b5050509392505050565b600081359050612632816134a7565b92915050565b600082601f83011261264957600080fd5b813561265984826020860161254b565b91505092915050565b600082601f83011261267357600080fd5b81356126838482602086016125b7565b91505092915050565b60008135905061269b816134be565b92915050565b6000815190506126b0816134be565b92915050565b6000813590506126c5816134d5565b92915050565b6000815190506126da816134d5565b92915050565b6000815190506126ef816134ec565b92915050565b60006020828403121561270757600080fd5b600061271584828501612623565b91505092915050565b6000806040838503121561273157600080fd5b600061273f85828601612623565b92505060206127508582860161268c565b9150509250929050565b6000806040838503121561276d57600080fd5b600061277b85828601612623565b925050602061278c858286016126b6565b9150509250929050565b600080600080608085870312156127ac57600080fd5b60006127ba87828801612623565b94505060206127cb878288016126b6565b93505060406127dc878288016126b6565b92505060606127ed8782880161268c565b91505092959194509250565b6000806040838503121561280c57600080fd5b600083013567ffffffffffffffff81111561282657600080fd5b61283285828601612638565b925050602083013567ffffffffffffffff81111561284f57600080fd5b61285b85828601612662565b9150509250929050565b60008060006060848603121561287a57600080fd5b600084013567ffffffffffffffff81111561289457600080fd5b6128a086828701612638565b935050602084013567ffffffffffffffff8111156128bd57600080fd5b6128c986828701612662565b92505060406128da868287016126b6565b9150509250925092565b6000602082840312156128f657600080fd5b6000612904848285016126a1565b91505092915050565b60006020828403121561291f57600080fd5b600061292d848285016126b6565b91505092915050565b60006020828403121561294857600080fd5b6000612956848285016126cb565b91505092915050565b60006020828403121561297157600080fd5b600061297f848285016126e0565b91505092915050565b6129918161332b565b82525050565b6129a08161333d565b82525050565b60006129b1826130a7565b6129bb81856130bd565b93506129cb818560208601613380565b80840191505092915050565b60006129e2826130b2565b6129ec81856130c8565b93506129fc818560208601613380565b612a0581613489565b840191505092915050565b6000612a1d6026836130c8565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a83601a836130c8565b91507f50726573616c653a20546f6b656e206e6f7420616c6c6f7765640000000000006000830152602082019050919050565b6000612ac36017836130c8565b91507f50726573616c653a206973206e6f742073746f707065640000000000000000006000830152602082019050919050565b6000612b036026836130c8565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612b69602f836130c8565b91507f50726573616c653a20746f6b656e73202620707269636573206172726179732060008301527f6c656e677468206d69736d6174636800000000000000000000000000000000006020830152604082019050919050565b6000612bcf6025836130c8565b91507f50726573616c653a204e6f7420656e6f75676820746f6b656e7320746f20626560008301527f2073616c650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612c35601b836130c8565b91507f50726573616c653a204e6f20746f6b656e7320746f20636c61696d00000000006000830152602082019050919050565b6000612c756020836130c8565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612cb5601d836130c8565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000612cf56017836130c8565b91507f50726573616c653a206973206e6f7420656e61626c65640000000000000000006000830152602082019050919050565b6000612d35602a836130c8565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b612d9781613369565b82525050565b6000612da982846129a6565b915081905092915050565b6000602082019050612dc96000830184612988565b92915050565b6000606082019050612de46000830186612988565b612df16020830185612988565b612dfe6040830184612d8e565b949350505050565b6000604082019050612e1b6000830185612988565b612e286020830184612d8e565b9392505050565b6000602082019050612e446000830184612997565b92915050565b60006020820190508181036000830152612e6481846129d7565b905092915050565b60006020820190508181036000830152612e8581612a10565b9050919050565b60006020820190508181036000830152612ea581612a76565b9050919050565b60006020820190508181036000830152612ec581612ab6565b9050919050565b60006020820190508181036000830152612ee581612af6565b9050919050565b60006020820190508181036000830152612f0581612b5c565b9050919050565b60006020820190508181036000830152612f2581612bc2565b9050919050565b60006020820190508181036000830152612f4581612c28565b9050919050565b60006020820190508181036000830152612f6581612c68565b9050919050565b60006020820190508181036000830152612f8581612ca8565b9050919050565b60006020820190508181036000830152612fa581612ce8565b9050919050565b60006020820190508181036000830152612fc581612d28565b9050919050565b6000602082019050612fe16000830184612d8e565b92915050565b6000606082019050612ffc6000830186612d8e565b6130096020830185612997565b6130166040830184612997565b949350505050565b6000604051905081810181811067ffffffffffffffff821117156130455761304461345a565b5b8060405250919050565b600067ffffffffffffffff82111561306a5761306961345a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156130965761309561345a565b5b602082029050602081019050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006130e482613369565b91506130ef83613369565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613124576131236133fc565b5b828201905092915050565b600061313a82613369565b915061314583613369565b9250826131555761315461342b565b5b828204905092915050565b6000808291508390505b60018511156131aa57808604811115613186576131856133fc565b5b60018516156131955780820291505b80810290506131a38561349a565b945061316a565b94509492505050565b60006131be82613369565b91506131c983613369565b92506131f67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846131fe565b905092915050565b60008261320e57600190506132ca565b8161321c57600090506132ca565b8160018114613232576002811461323c5761326b565b60019150506132ca565b60ff84111561324e5761324d6133fc565b5b8360020a915084821115613265576132646133fc565b5b506132ca565b5060208310610133831016604e8410600b84101617156132a05782820a90508381111561329b5761329a6133fc565b5b6132ca565b6132ad8484846001613160565b925090508184048111156132c4576132c36133fc565b5b81810290505b9392505050565b60006132dc82613369565b91506132e783613369565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133205761331f6133fc565b5b828202905092915050565b600061333682613349565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561339e578082015181840152602081019050613383565b838111156133ad576000848401525b50505050565b60006133be82613369565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133f1576133f06133fc565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b6134b08161332b565b81146134bb57600080fd5b50565b6134c78161333d565b81146134d257600080fd5b50565b6134de81613369565b81146134e957600080fd5b50565b6134f581613373565b811461350057600080fd5b5056fea26469706673582212209041016385b6143e3e5538c16a1827d639d6ab24b2343e19aba249ca4012351164736f6c63430008000033
Deployed Bytecode
0x6080604052600436106101a05760003560e01c806368f8fc10116100ec578063e36b0b371161008a578063f2fde38b11610064578063f2fde38b14610544578063f3fef3a31461056d578063f9020e3314610596578063fa09e630146105c1576101a7565b8063e36b0b37146104c5578063e985e367146104dc578063f2aa821814610507576101a7565b806380655eef116100c657806380655eef1461041b5780638da5cb5b146104585780639ae2fd3414610483578063ace1741c1461049a576101a7565b806368f8fc10146103bd5780636bcedf9c146103d9578063715018a614610404576101a7565b806333e364cb116101595780635413c1c8116101335780635413c1c81461031357806354a9f1021461033c5780635e0be6071461037b57806363b2011714610392576101a7565b806333e364cb146102aa5780633874e325146102c15780633c00a36c146102ea576101a7565b8063115ece4c146101a957806318a24b5b146101e6578063204120bc146101f057806329d429a81461022d5780632c4e722e146102565780633115329e14610281576101a7565b366101a757005b005b3480156101b557600080fd5b506101d060048036038101906101cb919061275a565b6105ea565b6040516101dd9190612fcc565b60405180910390f35b6101ee610775565b005b3480156101fc57600080fd5b50610217600480360381019061021291906126f5565b61092f565b6040516102249190612fcc565b60405180910390f35b34801561023957600080fd5b50610254600480360381019061024f919061271e565b610947565b005b34801561026257600080fd5b5061026b610a7b565b6040516102789190612fcc565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a39190612865565b610a81565b005b3480156102b657600080fd5b506102bf610d26565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190612796565b610dbf565b005b3480156102f657600080fd5b50610311600480360381019061030c919061290d565b610fb2565b005b34801561031f57600080fd5b5061033a600480360381019061033591906127f9565b611078565b005b34801561034857600080fd5b50610363600480360381019061035e91906126f5565b611306565b60405161037293929190612fe7565b60405180910390f35b34801561038757600080fd5b5061039061134a565b005b34801561039e57600080fd5b506103a76116f5565b6040516103b49190612fcc565b60405180910390f35b6103d760048036038101906103d2919061275a565b6116fb565b005b3480156103e557600080fd5b506103ee6119f3565b6040516103fb9190612fcc565b60405180910390f35b34801561041057600080fd5b506104196119f9565b005b34801561042757600080fd5b50610442600480360381019061043d91906126f5565b611a81565b60405161044f9190612e2f565b60405180910390f35b34801561046457600080fd5b5061046d611aa1565b60405161047a9190612db4565b60405180910390f35b34801561048f57600080fd5b50610498611aca565b005b3480156104a657600080fd5b506104af611d06565b6040516104bc9190612fcc565b60405180910390f35b3480156104d157600080fd5b506104da611d0c565b005b3480156104e857600080fd5b506104f1611da5565b6040516104fe9190612db4565b60405180910390f35b34801561051357600080fd5b5061052e6004803603810190610529919061290d565b611dcb565b60405161053b9190612db4565b60405180910390f35b34801561055057600080fd5b5061056b600480360381019061056691906126f5565b611e0a565b005b34801561057957600080fd5b50610594600480360381019061058f919061275a565b611f02565b005b3480156105a257600080fd5b506105ab611fad565b6040516105b89190612e2f565b60405180910390f35b3480156105cd57600080fd5b506105e860048036038101906105e391906126f5565b611fc0565b005b600080600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146107335760011515600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146106b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ab90612e8c565b60405180910390fd5b6000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061072b8161071d600354600a61070e91906131b3565b876120d790919063ffffffff16565b6120ed90919063ffffffff16565b91505061076b565b61076860015461075a600354600a61074b91906131b3565b866120d790919063ffffffff16565b6120ed90919063ffffffff16565b90505b8091505092915050565b60001515600760009054906101000a900460ff161515146107cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c290612eac565b60405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411610850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084790612f2c565b60405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061092c3382600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166121039092919063ffffffff16565b50565b60066020528060005260406000206000915090505481565b61094f612189565b73ffffffffffffffffffffffffffffffffffffffff1661096d611aa1565b73ffffffffffffffffffffffffffffffffffffffff16146109c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ba90612f4c565b60405180910390fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415610a2057600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60015481565b610a89612189565b73ffffffffffffffffffffffffffffffffffffffff16610aa7611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614610afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af490612f4c565b60405180910390fd5b8151835114610b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3890612eec565b60405180910390fd5b60008114610b5157806001819055505b60005b8351811015610d20576001151560056000868481518110610b9e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610bfa57600080fd5b6000838281518110610c35577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101511415610c4857600080fd5b828181518110610c81577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015160066000868481518110610cc6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600181610d1991906130d9565b9050610b54565b50505050565b610d2e612189565b73ffffffffffffffffffffffffffffffffffffffff16610d4c611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614610da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9990612f4c565b60405180910390fd5b6001600760006101000a81548160ff021916908315150217905550565b610dc7612189565b73ffffffffffffffffffffffffffffffffffffffff16610de5611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614610e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3290612f4c565b60405180910390fd5b6000821415610e4957600080fd5b8160018190555083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548160ff021916908315150217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1357600080fd5b505afa158015610f27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4b919061295f565b60ff1660038190555082600481905550610fac3330600454600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612191909392919063ffffffff16565b50505050565b610fba612189565b73ffffffffffffffffffffffffffffffffffffffff16610fd8611aa1565b73ffffffffffffffffffffffffffffffffffffffff161461102e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102590612f4c565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611074573d6000803e3d6000fd5b5050565b611080612189565b73ffffffffffffffffffffffffffffffffffffffff1661109e611aa1565b73ffffffffffffffffffffffffffffffffffffffff16146110f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110eb90612f4c565b60405180910390fd5b8051825114611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112f90612eec565b60405180910390fd5b60005b825181101561130157600082828151811061117f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151141561119257600080fd5b6001600560008584815181106111d1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818181518110611263577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151600660008584815181106112a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080806112f9906133b3565b91505061113b565b505050565b60096020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060010160019054906101000a900460ff16905083565b611352612189565b73ffffffffffffffffffffffffffffffffffffffff16611370611aa1565b73ffffffffffffffffffffffffffffffffffffffff16146113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113bd90612f4c565b60405180910390fd5b60001515600760009054906101000a900460ff1615151461141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390612eac565b60405180910390fd5b60005b6008805490508110156116f2576000600960006008848154811061146c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156116df5761163260088281548110611518577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600060088581548110611581577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166121039092919063ffffffff16565b60006009600060088481548110611672577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505b80806116ea906133b3565b91505061141f565b50565b600a5481565b60011515600760009054906101000a900460ff16151514611751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174890612f8c565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611797576117926000346105ea565b6117a2565b6117a183836105ea565b5b905060045481600a546117b591906130d9565b106117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90612f0c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611868576000821161183657600080fd5b6118633330848673ffffffffffffffffffffffffffffffffffffffff16612191909392919063ffffffff16565b611869565b5b80600a600082825461187b91906130d9565b92505081905550600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900460ff16611995576008339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b80600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282546119e791906130d9565b92505081905550505050565b60045481565b611a01612189565b73ffffffffffffffffffffffffffffffffffffffff16611a1f611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6c90612f4c565b60405180910390fd5b611a7f600061221a565b565b60056020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611ad2612189565b73ffffffffffffffffffffffffffffffffffffffff16611af0611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611b46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3d90612f4c565b60405180910390fd5b60001515600760009054906101000a900460ff16151514611b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9390612eac565b60405180910390fd5b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611bf99190612db4565b60206040518083038186803b158015611c1157600080fd5b505afa158015611c25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c499190612936565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611ca8929190612e06565b602060405180830381600087803b158015611cc257600080fd5b505af1158015611cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfa91906128e4565b50600060048190555050565b60035481565b611d14612189565b73ffffffffffffffffffffffffffffffffffffffff16611d32611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7f90612f4c565b60405180910390fd5b6000600760006101000a81548160ff021916908315150217905550565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60088181548110611ddb57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e12612189565b73ffffffffffffffffffffffffffffffffffffffff16611e30611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7d90612f4c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ef6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eed90612e6c565b60405180910390fd5b611eff8161221a565b50565b611f0a612189565b73ffffffffffffffffffffffffffffffffffffffff16611f28611aa1565b73ffffffffffffffffffffffffffffffffffffffff1614611f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7590612f4c565b60405180910390fd5b611fa933828473ffffffffffffffffffffffffffffffffffffffff166121039092919063ffffffff16565b5050565b600760009054906101000a900460ff1681565b611fc8612189565b73ffffffffffffffffffffffffffffffffffffffff16611fe6611aa1565b73ffffffffffffffffffffffffffffffffffffffff161461203c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203390612f4c565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120779190612db4565b60206040518083038186803b15801561208f57600080fd5b505afa1580156120a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c79190612936565b90506120d38282611f02565b5050565b600081836120e591906132d1565b905092915050565b600081836120fb919061312f565b905092915050565b6121848363a9059cbb60e01b8484604051602401612122929190612e06565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122de565b505050565b600033905090565b612214846323b872dd60e01b8585856040516024016121b293929190612dcf565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122de565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612340826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166123a59092919063ffffffff16565b90506000815111156123a0578080602001905181019061236091906128e4565b61239f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239690612fac565b60405180910390fd5b5b505050565b60606123b484846000856123bd565b90509392505050565b606082471015612402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f990612ecc565b60405180910390fd5b61240b856124d1565b61244a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244190612f6c565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516124739190612d9d565b60006040518083038185875af1925050503d80600081146124b0576040519150601f19603f3d011682016040523d82523d6000602084013e6124b5565b606091505b50915091506124c58282866124e4565b92505050949350505050565b600080823b905060008111915050919050565b606083156124f457829050612544565b6000835111156125075782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253b9190612e4a565b60405180910390fd5b9392505050565b600061255e6125598461304f565b61301e565b9050808382526020820190508285602086028201111561257d57600080fd5b60005b858110156125ad57816125938882612623565b845260208401935060208301925050600181019050612580565b5050509392505050565b60006125ca6125c58461307b565b61301e565b905080838252602082019050828560208602820111156125e957600080fd5b60005b8581101561261957816125ff88826126b6565b8452602084019350602083019250506001810190506125ec565b5050509392505050565b600081359050612632816134a7565b92915050565b600082601f83011261264957600080fd5b813561265984826020860161254b565b91505092915050565b600082601f83011261267357600080fd5b81356126838482602086016125b7565b91505092915050565b60008135905061269b816134be565b92915050565b6000815190506126b0816134be565b92915050565b6000813590506126c5816134d5565b92915050565b6000815190506126da816134d5565b92915050565b6000815190506126ef816134ec565b92915050565b60006020828403121561270757600080fd5b600061271584828501612623565b91505092915050565b6000806040838503121561273157600080fd5b600061273f85828601612623565b92505060206127508582860161268c565b9150509250929050565b6000806040838503121561276d57600080fd5b600061277b85828601612623565b925050602061278c858286016126b6565b9150509250929050565b600080600080608085870312156127ac57600080fd5b60006127ba87828801612623565b94505060206127cb878288016126b6565b93505060406127dc878288016126b6565b92505060606127ed8782880161268c565b91505092959194509250565b6000806040838503121561280c57600080fd5b600083013567ffffffffffffffff81111561282657600080fd5b61283285828601612638565b925050602083013567ffffffffffffffff81111561284f57600080fd5b61285b85828601612662565b9150509250929050565b60008060006060848603121561287a57600080fd5b600084013567ffffffffffffffff81111561289457600080fd5b6128a086828701612638565b935050602084013567ffffffffffffffff8111156128bd57600080fd5b6128c986828701612662565b92505060406128da868287016126b6565b9150509250925092565b6000602082840312156128f657600080fd5b6000612904848285016126a1565b91505092915050565b60006020828403121561291f57600080fd5b600061292d848285016126b6565b91505092915050565b60006020828403121561294857600080fd5b6000612956848285016126cb565b91505092915050565b60006020828403121561297157600080fd5b600061297f848285016126e0565b91505092915050565b6129918161332b565b82525050565b6129a08161333d565b82525050565b60006129b1826130a7565b6129bb81856130bd565b93506129cb818560208601613380565b80840191505092915050565b60006129e2826130b2565b6129ec81856130c8565b93506129fc818560208601613380565b612a0581613489565b840191505092915050565b6000612a1d6026836130c8565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612a83601a836130c8565b91507f50726573616c653a20546f6b656e206e6f7420616c6c6f7765640000000000006000830152602082019050919050565b6000612ac36017836130c8565b91507f50726573616c653a206973206e6f742073746f707065640000000000000000006000830152602082019050919050565b6000612b036026836130c8565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612b69602f836130c8565b91507f50726573616c653a20746f6b656e73202620707269636573206172726179732060008301527f6c656e677468206d69736d6174636800000000000000000000000000000000006020830152604082019050919050565b6000612bcf6025836130c8565b91507f50726573616c653a204e6f7420656e6f75676820746f6b656e7320746f20626560008301527f2073616c650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612c35601b836130c8565b91507f50726573616c653a204e6f20746f6b656e7320746f20636c61696d00000000006000830152602082019050919050565b6000612c756020836130c8565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000612cb5601d836130c8565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000612cf56017836130c8565b91507f50726573616c653a206973206e6f7420656e61626c65640000000000000000006000830152602082019050919050565b6000612d35602a836130c8565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b612d9781613369565b82525050565b6000612da982846129a6565b915081905092915050565b6000602082019050612dc96000830184612988565b92915050565b6000606082019050612de46000830186612988565b612df16020830185612988565b612dfe6040830184612d8e565b949350505050565b6000604082019050612e1b6000830185612988565b612e286020830184612d8e565b9392505050565b6000602082019050612e446000830184612997565b92915050565b60006020820190508181036000830152612e6481846129d7565b905092915050565b60006020820190508181036000830152612e8581612a10565b9050919050565b60006020820190508181036000830152612ea581612a76565b9050919050565b60006020820190508181036000830152612ec581612ab6565b9050919050565b60006020820190508181036000830152612ee581612af6565b9050919050565b60006020820190508181036000830152612f0581612b5c565b9050919050565b60006020820190508181036000830152612f2581612bc2565b9050919050565b60006020820190508181036000830152612f4581612c28565b9050919050565b60006020820190508181036000830152612f6581612c68565b9050919050565b60006020820190508181036000830152612f8581612ca8565b9050919050565b60006020820190508181036000830152612fa581612ce8565b9050919050565b60006020820190508181036000830152612fc581612d28565b9050919050565b6000602082019050612fe16000830184612d8e565b92915050565b6000606082019050612ffc6000830186612d8e565b6130096020830185612997565b6130166040830184612997565b949350505050565b6000604051905081810181811067ffffffffffffffff821117156130455761304461345a565b5b8060405250919050565b600067ffffffffffffffff82111561306a5761306961345a565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156130965761309561345a565b5b602082029050602081019050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b60006130e482613369565b91506130ef83613369565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613124576131236133fc565b5b828201905092915050565b600061313a82613369565b915061314583613369565b9250826131555761315461342b565b5b828204905092915050565b6000808291508390505b60018511156131aa57808604811115613186576131856133fc565b5b60018516156131955780820291505b80810290506131a38561349a565b945061316a565b94509492505050565b60006131be82613369565b91506131c983613369565b92506131f67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846131fe565b905092915050565b60008261320e57600190506132ca565b8161321c57600090506132ca565b8160018114613232576002811461323c5761326b565b60019150506132ca565b60ff84111561324e5761324d6133fc565b5b8360020a915084821115613265576132646133fc565b5b506132ca565b5060208310610133831016604e8410600b84101617156132a05782820a90508381111561329b5761329a6133fc565b5b6132ca565b6132ad8484846001613160565b925090508184048111156132c4576132c36133fc565b5b81810290505b9392505050565b60006132dc82613369565b91506132e783613369565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133205761331f6133fc565b5b828202905092915050565b600061333682613349565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561339e578082015181840152602081019050613383565b838111156133ad576000848401525b50505050565b60006133be82613369565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133f1576133f06133fc565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b6134b08161332b565b81146134bb57600080fd5b50565b6134c78161333d565b81146134d257600080fd5b50565b6134de81613369565b81146134e957600080fd5b50565b6134f581613373565b811461350057600080fd5b5056fea26469706673582212209041016385b6143e3e5538c16a1827d639d6ab24b2343e19aba249ca4012351164736f6c63430008000033
Deployed Bytecode Sourcemap
12617:5373:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15576:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16929:370;;;:::i;:::-;;12958:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14781:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12778:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14993:575;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14214:77;;;;;;;;;;;;;:::i;:::-;;13572:550;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9341:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14299:474;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13070:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;17347:407;;;;;;;;;;;;;:::i;:::-;;13134:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16076:845;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12866:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4212:103;;;;;;;;;;;;;:::i;:::-;;12906:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3989:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17762:225;;;;;;;;;;;;;:::i;:::-;;12835:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14130:76;;;;;;;;;;;;;:::i;:::-;;12804:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13040:23;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4323:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9045:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13011:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9178:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15576:492;15677:7;15697:14;15743:1;15726:19;;:5;:19;;;15722:315;;15794:4;15770:28;;:13;:20;15784:5;15770:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;15762:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15844:13;15860:11;:18;15872:5;15860:18;;;;;;;;;;;;;;;;15844:34;;15902:41;15937:5;15902:30;15919:12;;15913:2;:18;;;;:::i;:::-;15902:6;:10;;:30;;;;:::i;:::-;:34;;:41;;;;:::i;:::-;15893:50;;15722:315;;;;15985:40;16020:4;;15985:30;16002:12;;15996:2;:18;;;;:::i;:::-;15985:6;:10;;:30;;;;:::i;:::-;:34;;:40;;;;:::i;:::-;15976:49;;15722:315;16054:6;16047:13;;;15576:492;;;;:::o;16929:370::-;13511:5;13497:19;;:10;;;;;;;;;;;:19;;;13489:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;17047:1:::1;17013:12;:24;17026:10;17013:24;;;;;;;;;;;;;;;:31;;;:35;16991:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;17114:25;17142:12;:24;17155:10;17142:24;;;;;;;;;;;;;;;:31;;;17114:59;;17218:1;17184:12;:24;17197:10;17184:24;;;;;;;;;;;;;;;:31;;:35;;;;17230:61;17261:10;17273:17;17237:9;;;;;;;;;;;17230:30;;;;:61;;;;;:::i;:::-;13555:1;16929:370::o:0;12958:46::-;;;;;;;;;;;;;;;;;:::o;14781:204::-;4135:12;:10;:12::i;:::-;4124:23;;:7;:5;:7::i;:::-;:23;;;4116:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14927:7:::1;14902:32;;:13;:21;14916:6;14902:21;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;;14894:41;;;::::0;::::1;;14970:7;14946:13;:21;14960:6;14946:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;14781:204:::0;;:::o;12778:19::-;;;;:::o;14993:575::-;4135:12;:10;:12::i;:::-;4124:23;;:7;:5;:7::i;:::-;:23;;;4116:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15189:7:::1;:14;15171:7;:14;:32;15149:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;15302:1;15293:5;:10;15289:55;;15327:5;15320:4;:12;;;;15289:55;15359:9;15354:207;15378:7;:14;15374:1;:18;15354:207;;;15454:4;15425:33;;:13;:25;15439:7;15447:1;15439:10;;;;;;;;;;;;;;;;;;;;;;15425:25;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;15417:42;;;::::0;::::1;;15496:1;15482:7;15490:1;15482:10;;;;;;;;;;;;;;;;;;;;;;:15;;15474:24;;;::::0;::::1;;15539:7;15547:1;15539:10;;;;;;;;;;;;;;;;;;;;;;15513:11;:23;15525:7;15533:1;15525:10;;;;;;;;;;;;;;;;;;;;;;15513:23;;;;;;;;;;;;;;;:36;;;;15399:1;15394:6;;;;;:::i;:::-;;;15354:207;;;;14993:575:::0;;;:::o;14214:77::-;4135:12;:10;:12::i;:::-;4124:23;;:7;:5;:7::i;:::-;:23;;;4116:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14279:4:::1;14266:10;;:17;;;;;;;;;;;;;;;;;;14214:77::o:0;13572:550::-;4135:12;:10;:12::i;:::-;4124:23;;:7;:5;:7::i;:::-;:23;;;4116:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13766:1:::1;13757:5;:10;;13749:19;;;::::0;::::1;;13786:5;13779:4;:12;;;;13814:10;13802:9;;:22;;;;;;;;;;;;;;;;;;13848:11;13835:10;;:24;;;;;;;;;;;;;;;;;;13900:9;;;;;;;;;;;13885:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13870:51;;:12;:51;;;;13953:19;13932:18;:40;;;;13983:131;14032:10;14065:4;14085:18;;13990:9;;;;;;;;;;;13983:34;;;;:131;;;;;;:::i;:::-;13572:550:::0;;;;:::o;9341:108::-;4135:12;:10;:12::i;:::-;4124:23;;:7;:5;:7::i;:::-;:23;;;4116:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9416:10:::1;9408:28;;:33;9437:3;9408:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9341:108:::0;:::o;14299:474::-;4135:12;:10;:12::i;:::-;4124:23;;:7;:5;:7::i;:::-;:23;;;4116:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14472:7:::1;:14;14454:7;:14;:32;14432:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;14577:9;14572:194;14596:7;:14;14592:1;:18;14572:194;;;14654:1;14640:7;14648:1;14640:10;;;;;;;;;;;;;;;;;;;;;;:15;;14632:24;;;::::0;::::1;;14699:4;14671:13;:25;14685:7;14693:1;14685:10;;;;;;;;;;;;;;;;;;;;;;14671:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14744:7;14752:1;14744:10;;;;;;;;;;;;;;;;;;;;;;14718:11;:23;14730:7;14738:1;14730:10;;;;;;;;;;;;;;;;;;;;;;14718:23;;;;;;;;;;;;;;;:36;;;;14612:3;;;;;:::i;:::-;;;;14572:194;;;;14299:474:::0;;:::o;13070:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17347:407::-;4135:12;:10;:12::i;:::-;4124:23;;:7;:5;:7::i;:::-;:23;;;4116:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13511:5:::1;13497:19;;:10;;;;;;;;;;;:19;;;13489:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;17420:9:::2;17415:332;17439:6;:13;;;;17435:1;:17;17415:332;;;17511:1;17478:12;:23;17491:6;17498:1;17491:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17478:23;;;;;;;;;;;;;;;:30;;;:34;17474:262;;;17533:134;17586:6;17593:1;17586:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17618:12;:23;17631:6;17638:1;17631:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17618:23;;;;;;;;;;;;;;;:30;;;17540:9;;;;;;;;;;;17533:30;;;;:134;;;;;:::i;:::-;17719:1;17686:12;:23;17699:6;17706:1;17699:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17686:23;;;;;;;;;;;;;;;:30;;:34;;;;17474:262;17454:3;;;;;:::i;:::-;;;;17415:332;;;;17347:407::o:0;13134:30::-;;;;:::o;16076:845::-;13398:4;13384:18;;:10;;;;;;;;;;;:18;;;13376:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;16193:20:::1;16234:1:::0;16216:20:::1;;:6;:20;;;;:120;;16299:37;16322:1;16326:9;16299:14;:37::i;:::-;16216:120;;;16252:31;16267:6;16275:7;16252:14;:31::i;:::-;16216:120;16193:143;;16404:18;;16388:12;16370:15;;:30;;;;:::i;:::-;16369:53;16347:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;16520:1;16502:20;;:6;:20;;;16498:163;;16557:1;16547:7;:11;16539:20;;;::::0;::::1;;16574:67;16606:10;16626:4;16633:7;16581:6;16574:31;;;;:67;;;;;;:::i;:::-;16498:163;;;;16692:12;16673:15;;:31;;;;;;;:::i;:::-;;;;;;;;16720:12;:24;16733:10;16720:24;;;;;;;;;;;;;;;:31;;;;;;;;;;;;16715:141;;16768:6;16780:10;16768:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16840:4;16806:12;:24;16819:10;16806:24;;;;;;;;;;;;;;;:31;;;:38;;;;;;;;;;;;;;;;;;16715:141;16901:12;16866;:24;16879:10;16866:24;;;;;;;;;;;;;;;:31;;;:47;;;;;;;:::i;:::-;;;;;;;;13441:1;16076:845:::0;;:::o;12866:33::-;;;;:::o;4212:103::-;4135:12;:10;:12::i;:::-;4124:23;;:7;:5;:7::i;:::-;:23;;;4116:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4277:30:::1;4304:1;4277:18;:30::i;:::-;4212:103::o:0;12906:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;3989:87::-;4035:7;4062:6;;;;;;;;;;;4055:13;;3989:87;:::o;17762:225::-;4135:12;:10;:12::i;:::-;4124:23;;:7;:5;:7::i;:::-;:23;;;4116:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13511:5:::1;13497:19;;:10;;;;;;;;;;;:19;;;13489:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;17836:11:::2;17857:9;;;;;;;;;;;17850:27;;;17886:4;17850:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17836:56;;17910:9;;;;;;;;;;;17903:26;;;17930:10;17942:3;17903:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17978:1;17957:18;:22;;;;13555:1;17762:225::o:0;12835:24::-;;;;:::o;14130:76::-;4135:12;:10;:12::i;:::-;4124:23;;:7;:5;:7::i;:::-;:23;;;4116:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14193:5:::1;14180:10;;:18;;;;;;;;;;;;;;;;;;14130:76::o:0;12804:24::-;;;;;;;;;;;;;:::o;13040:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4323:238::-;4135:12;:10;:12::i;:::-;4124:23;;:7;:5;:7::i;:::-;:23;;;4116:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4446:1:::1;4426:22;;:8;:22;;;;4404:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;4525:28;4544:8;4525:18;:28::i;:::-;4323:238:::0;:::o;9045:125::-;4135:12;:10;:12::i;:::-;4124:23;;:7;:5;:7::i;:::-;:23;;;4116:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9119:43:::1;9146:10;9158:3;9126:5;9119:26;;;;:43;;;;;:::i;:::-;9045:125:::0;;:::o;13011:22::-;;;;;;;;;;;;;:::o;9178:155::-;4135:12;:10;:12::i;:::-;4124:23;;:7;:5;:7::i;:::-;:23;;;4116:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9242:11:::1;9263:5;9256:23;;;9288:4;9256:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9242:52;;9305:20;9314:5;9321:3;9305:8;:20::i;:::-;4195:1;9178:155:::0;:::o;1536:98::-;1594:7;1625:1;1621;:5;;;;:::i;:::-;1614:12;;1536:98;;;;:::o;1642:::-;1700:7;1731:1;1727;:5;;;;:::i;:::-;1720:12;;1642:98;;;;:::o;9847:214::-;9930:123;9964:5;10007:23;;;10032:2;10036:5;9984:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9930:19;:123::i;:::-;9847:214;;;:::o;3487:98::-;3540:7;3567:10;3560:17;;3487:98;:::o;10069:285::-;10213:133;10247:5;10290:27;;;10319:4;10325:2;10329:5;10267:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10213:19;:133::i;:::-;10069:285;;;;:::o;4569:191::-;4643:16;4662:6;;;;;;;;;;;4643:25;;4688:8;4679:6;;:17;;;;;;;;;;;;;;;;;;4743:8;4712:40;;4733:8;4712:40;;;;;;;;;;;;4569:191;;:::o;11916:419::-;11997:23;12023:106;12065:4;12023:106;;;;;;;;;;;;;;;;;12031:5;12023:27;;;;:106;;;;;:::i;:::-;11997:132;;12164:1;12144:10;:17;:21;12140:188;;;12219:10;12208:30;;;;;;;;;;;;:::i;:::-;12182:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;12140:188;11916:419;;;:::o;5626:229::-;5763:12;5795:52;5817:6;5825:4;5831:1;5834:12;5795:21;:52::i;:::-;5788:59;;5626:229;;;;;:::o;6227:569::-;6397:12;6469:5;6444:21;:30;;6422:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;6559:18;6570:6;6559:10;:18::i;:::-;6551:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;6623:12;6637:23;6664:6;:11;;6683:5;6704:4;6664:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6622:97;;;;6737:51;6754:7;6763:10;6775:12;6737:16;:51::i;:::-;6730:58;;;;6227:569;;;;;;:::o;4817:196::-;4877:4;4894:12;4961:7;4949:20;4941:28;;5004:1;4997:4;:8;4990:15;;;4817:196;;;:::o;8230:550::-;8380:12;8409:7;8405:368;;;8440:10;8433:17;;;;8405:368;8507:1;8487:10;:17;:21;8483:279;;;8590:10;8584:17;8651:15;8638:10;8634:2;8630:19;8623:44;8538:148;8733:12;8726:20;;;;;;;;;;;:::i;:::-;;;;;;;;8230:550;;;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;669:622::-;;790:80;805:64;862:6;805:64;:::i;:::-;790:80;:::i;:::-;781:89;;890:5;918:6;911:5;904:21;944:4;937:5;933:16;926:23;;969:6;1019:3;1011:4;1003:6;999:17;994:3;990:27;987:36;984:2;;;1036:1;1033;1026:12;984:2;1064:1;1049:236;1074:6;1071:1;1068:13;1049:236;;;1141:3;1169:37;1202:3;1190:10;1169:37;:::i;:::-;1164:3;1157:50;1236:4;1231:3;1227:14;1220:21;;1270:4;1265:3;1261:14;1254:21;;1109:176;1096:1;1093;1089:9;1084:14;;1049:236;;;1053:14;771:520;;;;;;;:::o;1297:139::-;;1381:6;1368:20;1359:29;;1397:33;1424:5;1397:33;:::i;:::-;1349:87;;;;:::o;1459:303::-;;1579:3;1572:4;1564:6;1560:17;1556:27;1546:2;;1597:1;1594;1587:12;1546:2;1637:6;1624:20;1662:94;1752:3;1744:6;1737:4;1729:6;1725:17;1662:94;:::i;:::-;1653:103;;1536:226;;;;;:::o;1785:303::-;;1905:3;1898:4;1890:6;1886:17;1882:27;1872:2;;1923:1;1920;1913:12;1872:2;1963:6;1950:20;1988:94;2078:3;2070:6;2063:4;2055:6;2051:17;1988:94;:::i;:::-;1979:103;;1862:226;;;;;:::o;2094:133::-;;2175:6;2162:20;2153:29;;2191:30;2215:5;2191:30;:::i;:::-;2143:84;;;;:::o;2233:137::-;;2318:6;2312:13;2303:22;;2334:30;2358:5;2334:30;:::i;:::-;2293:77;;;;:::o;2376:139::-;;2460:6;2447:20;2438:29;;2476:33;2503:5;2476:33;:::i;:::-;2428:87;;;;:::o;2521:143::-;;2609:6;2603:13;2594:22;;2625:33;2652:5;2625:33;:::i;:::-;2584:80;;;;:::o;2670:139::-;;2756:6;2750:13;2741:22;;2772:31;2797:5;2772:31;:::i;:::-;2731:78;;;;:::o;2815:262::-;;2923:2;2911:9;2902:7;2898:23;2894:32;2891:2;;;2939:1;2936;2929:12;2891:2;2982:1;3007:53;3052:7;3043:6;3032:9;3028:22;3007:53;:::i;:::-;2997:63;;2953:117;2881:196;;;;:::o;3083:401::-;;;3205:2;3193:9;3184:7;3180:23;3176:32;3173:2;;;3221:1;3218;3211:12;3173:2;3264:1;3289:53;3334:7;3325:6;3314:9;3310:22;3289:53;:::i;:::-;3279:63;;3235:117;3391:2;3417:50;3459:7;3450:6;3439:9;3435:22;3417:50;:::i;:::-;3407:60;;3362:115;3163:321;;;;;:::o;3490:407::-;;;3615:2;3603:9;3594:7;3590:23;3586:32;3583:2;;;3631:1;3628;3621:12;3583:2;3674:1;3699:53;3744:7;3735:6;3724:9;3720:22;3699:53;:::i;:::-;3689:63;;3645:117;3801:2;3827:53;3872:7;3863:6;3852:9;3848:22;3827:53;:::i;:::-;3817:63;;3772:118;3573:324;;;;;:::o;3903:692::-;;;;;4059:3;4047:9;4038:7;4034:23;4030:33;4027:2;;;4076:1;4073;4066:12;4027:2;4119:1;4144:53;4189:7;4180:6;4169:9;4165:22;4144:53;:::i;:::-;4134:63;;4090:117;4246:2;4272:53;4317:7;4308:6;4297:9;4293:22;4272:53;:::i;:::-;4262:63;;4217:118;4374:2;4400:53;4445:7;4436:6;4425:9;4421:22;4400:53;:::i;:::-;4390:63;;4345:118;4502:2;4528:50;4570:7;4561:6;4550:9;4546:22;4528:50;:::i;:::-;4518:60;;4473:115;4017:578;;;;;;;:::o;4601:693::-;;;4776:2;4764:9;4755:7;4751:23;4747:32;4744:2;;;4792:1;4789;4782:12;4744:2;4863:1;4852:9;4848:17;4835:31;4893:18;4885:6;4882:30;4879:2;;;4925:1;4922;4915:12;4879:2;4953:78;5023:7;5014:6;5003:9;4999:22;4953:78;:::i;:::-;4943:88;;4806:235;5108:2;5097:9;5093:18;5080:32;5139:18;5131:6;5128:30;5125:2;;;5171:1;5168;5161:12;5125:2;5199:78;5269:7;5260:6;5249:9;5245:22;5199:78;:::i;:::-;5189:88;;5051:236;4734:560;;;;;:::o;5300:838::-;;;;5492:2;5480:9;5471:7;5467:23;5463:32;5460:2;;;5508:1;5505;5498:12;5460:2;5579:1;5568:9;5564:17;5551:31;5609:18;5601:6;5598:30;5595:2;;;5641:1;5638;5631:12;5595:2;5669:78;5739:7;5730:6;5719:9;5715:22;5669:78;:::i;:::-;5659:88;;5522:235;5824:2;5813:9;5809:18;5796:32;5855:18;5847:6;5844:30;5841:2;;;5887:1;5884;5877:12;5841:2;5915:78;5985:7;5976:6;5965:9;5961:22;5915:78;:::i;:::-;5905:88;;5767:236;6042:2;6068:53;6113:7;6104:6;6093:9;6089:22;6068:53;:::i;:::-;6058:63;;6013:118;5450:688;;;;;:::o;6144:278::-;;6260:2;6248:9;6239:7;6235:23;6231:32;6228:2;;;6276:1;6273;6266:12;6228:2;6319:1;6344:61;6397:7;6388:6;6377:9;6373:22;6344:61;:::i;:::-;6334:71;;6290:125;6218:204;;;;:::o;6428:262::-;;6536:2;6524:9;6515:7;6511:23;6507:32;6504:2;;;6552:1;6549;6542:12;6504:2;6595:1;6620:53;6665:7;6656:6;6645:9;6641:22;6620:53;:::i;:::-;6610:63;;6566:117;6494:196;;;;:::o;6696:284::-;;6815:2;6803:9;6794:7;6790:23;6786:32;6783:2;;;6831:1;6828;6821:12;6783:2;6874:1;6899:64;6955:7;6946:6;6935:9;6931:22;6899:64;:::i;:::-;6889:74;;6845:128;6773:207;;;;:::o;6986:280::-;;7103:2;7091:9;7082:7;7078:23;7074:32;7071:2;;;7119:1;7116;7109:12;7071:2;7162:1;7187:62;7241:7;7232:6;7221:9;7217:22;7187:62;:::i;:::-;7177:72;;7133:126;7061:205;;;;:::o;7272:118::-;7359:24;7377:5;7359:24;:::i;:::-;7354:3;7347:37;7337:53;;:::o;7396:109::-;7477:21;7492:5;7477:21;:::i;:::-;7472:3;7465:34;7455:50;;:::o;7511:373::-;;7643:38;7675:5;7643:38;:::i;:::-;7697:88;7778:6;7773:3;7697:88;:::i;:::-;7690:95;;7794:52;7839:6;7834:3;7827:4;7820:5;7816:16;7794:52;:::i;:::-;7871:6;7866:3;7862:16;7855:23;;7619:265;;;;;:::o;7890:364::-;;8006:39;8039:5;8006:39;:::i;:::-;8061:71;8125:6;8120:3;8061:71;:::i;:::-;8054:78;;8141:52;8186:6;8181:3;8174:4;8167:5;8163:16;8141:52;:::i;:::-;8218:29;8240:6;8218:29;:::i;:::-;8213:3;8209:39;8202:46;;7982:272;;;;;:::o;8260:370::-;;8423:67;8487:2;8482:3;8423:67;:::i;:::-;8416:74;;8520:34;8516:1;8511:3;8507:11;8500:55;8586:8;8581:2;8576:3;8572:12;8565:30;8621:2;8616:3;8612:12;8605:19;;8406:224;;;:::o;8636:324::-;;8799:67;8863:2;8858:3;8799:67;:::i;:::-;8792:74;;8896:28;8892:1;8887:3;8883:11;8876:49;8951:2;8946:3;8942:12;8935:19;;8782:178;;;:::o;8966:321::-;;9129:67;9193:2;9188:3;9129:67;:::i;:::-;9122:74;;9226:25;9222:1;9217:3;9213:11;9206:46;9278:2;9273:3;9269:12;9262:19;;9112:175;;;:::o;9293:370::-;;9456:67;9520:2;9515:3;9456:67;:::i;:::-;9449:74;;9553:34;9549:1;9544:3;9540:11;9533:55;9619:8;9614:2;9609:3;9605:12;9598:30;9654:2;9649:3;9645:12;9638:19;;9439:224;;;:::o;9669:379::-;;9832:67;9896:2;9891:3;9832:67;:::i;:::-;9825:74;;9929:34;9925:1;9920:3;9916:11;9909:55;9995:17;9990:2;9985:3;9981:12;9974:39;10039:2;10034:3;10030:12;10023:19;;9815:233;;;:::o;10054:369::-;;10217:67;10281:2;10276:3;10217:67;:::i;:::-;10210:74;;10314:34;10310:1;10305:3;10301:11;10294:55;10380:7;10375:2;10370:3;10366:12;10359:29;10414:2;10409:3;10405:12;10398:19;;10200:223;;;:::o;10429:325::-;;10592:67;10656:2;10651:3;10592:67;:::i;:::-;10585:74;;10689:29;10685:1;10680:3;10676:11;10669:50;10745:2;10740:3;10736:12;10729:19;;10575:179;;;:::o;10760:330::-;;10923:67;10987:2;10982:3;10923:67;:::i;:::-;10916:74;;11020:34;11016:1;11011:3;11007:11;11000:55;11081:2;11076:3;11072:12;11065:19;;10906:184;;;:::o;11096:327::-;;11259:67;11323:2;11318:3;11259:67;:::i;:::-;11252:74;;11356:31;11352:1;11347:3;11343:11;11336:52;11414:2;11409:3;11405:12;11398:19;;11242:181;;;:::o;11429:321::-;;11592:67;11656:2;11651:3;11592:67;:::i;:::-;11585:74;;11689:25;11685:1;11680:3;11676:11;11669:46;11741:2;11736:3;11732:12;11725:19;;11575:175;;;:::o;11756:374::-;;11919:67;11983:2;11978:3;11919:67;:::i;:::-;11912:74;;12016:34;12012:1;12007:3;12003:11;11996:55;12082:12;12077:2;12072:3;12068:12;12061:34;12121:2;12116:3;12112:12;12105:19;;11902:228;;;:::o;12136:118::-;12223:24;12241:5;12223:24;:::i;:::-;12218:3;12211:37;12201:53;;:::o;12260:271::-;;12412:93;12501:3;12492:6;12412:93;:::i;:::-;12405:100;;12522:3;12515:10;;12394:137;;;;:::o;12537:222::-;;12668:2;12657:9;12653:18;12645:26;;12681:71;12749:1;12738:9;12734:17;12725:6;12681:71;:::i;:::-;12635:124;;;;:::o;12765:442::-;;12952:2;12941:9;12937:18;12929:26;;12965:71;13033:1;13022:9;13018:17;13009:6;12965:71;:::i;:::-;13046:72;13114:2;13103:9;13099:18;13090:6;13046:72;:::i;:::-;13128;13196:2;13185:9;13181:18;13172:6;13128:72;:::i;:::-;12919:288;;;;;;:::o;13213:332::-;;13372:2;13361:9;13357:18;13349:26;;13385:71;13453:1;13442:9;13438:17;13429:6;13385:71;:::i;:::-;13466:72;13534:2;13523:9;13519:18;13510:6;13466:72;:::i;:::-;13339:206;;;;;:::o;13551:210::-;;13676:2;13665:9;13661:18;13653:26;;13689:65;13751:1;13740:9;13736:17;13727:6;13689:65;:::i;:::-;13643:118;;;;:::o;13767:313::-;;13918:2;13907:9;13903:18;13895:26;;13967:9;13961:4;13957:20;13953:1;13942:9;13938:17;13931:47;13995:78;14068:4;14059:6;13995:78;:::i;:::-;13987:86;;13885:195;;;;:::o;14086:419::-;;14290:2;14279:9;14275:18;14267:26;;14339:9;14333:4;14329:20;14325:1;14314:9;14310:17;14303:47;14367:131;14493:4;14367:131;:::i;:::-;14359:139;;14257:248;;;:::o;14511:419::-;;14715:2;14704:9;14700:18;14692:26;;14764:9;14758:4;14754:20;14750:1;14739:9;14735:17;14728:47;14792:131;14918:4;14792:131;:::i;:::-;14784:139;;14682:248;;;:::o;14936:419::-;;15140:2;15129:9;15125:18;15117:26;;15189:9;15183:4;15179:20;15175:1;15164:9;15160:17;15153:47;15217:131;15343:4;15217:131;:::i;:::-;15209:139;;15107:248;;;:::o;15361:419::-;;15565:2;15554:9;15550:18;15542:26;;15614:9;15608:4;15604:20;15600:1;15589:9;15585:17;15578:47;15642:131;15768:4;15642:131;:::i;:::-;15634:139;;15532:248;;;:::o;15786:419::-;;15990:2;15979:9;15975:18;15967:26;;16039:9;16033:4;16029:20;16025:1;16014:9;16010:17;16003:47;16067:131;16193:4;16067:131;:::i;:::-;16059:139;;15957:248;;;:::o;16211:419::-;;16415:2;16404:9;16400:18;16392:26;;16464:9;16458:4;16454:20;16450:1;16439:9;16435:17;16428:47;16492:131;16618:4;16492:131;:::i;:::-;16484:139;;16382:248;;;:::o;16636:419::-;;16840:2;16829:9;16825:18;16817:26;;16889:9;16883:4;16879:20;16875:1;16864:9;16860:17;16853:47;16917:131;17043:4;16917:131;:::i;:::-;16909:139;;16807:248;;;:::o;17061:419::-;;17265:2;17254:9;17250:18;17242:26;;17314:9;17308:4;17304:20;17300:1;17289:9;17285:17;17278:47;17342:131;17468:4;17342:131;:::i;:::-;17334:139;;17232:248;;;:::o;17486:419::-;;17690:2;17679:9;17675:18;17667:26;;17739:9;17733:4;17729:20;17725:1;17714:9;17710:17;17703:47;17767:131;17893:4;17767:131;:::i;:::-;17759:139;;17657:248;;;:::o;17911:419::-;;18115:2;18104:9;18100:18;18092:26;;18164:9;18158:4;18154:20;18150:1;18139:9;18135:17;18128:47;18192:131;18318:4;18192:131;:::i;:::-;18184:139;;18082:248;;;:::o;18336:419::-;;18540:2;18529:9;18525:18;18517:26;;18589:9;18583:4;18579:20;18575:1;18564:9;18560:17;18553:47;18617:131;18743:4;18617:131;:::i;:::-;18609:139;;18507:248;;;:::o;18761:222::-;;18892:2;18881:9;18877:18;18869:26;;18905:71;18973:1;18962:9;18958:17;18949:6;18905:71;:::i;:::-;18859:124;;;;:::o;18989:418::-;;19164:2;19153:9;19149:18;19141:26;;19177:71;19245:1;19234:9;19230:17;19221:6;19177:71;:::i;:::-;19258:66;19320:2;19309:9;19305:18;19296:6;19258:66;:::i;:::-;19334;19396:2;19385:9;19381:18;19372:6;19334:66;:::i;:::-;19131:276;;;;;;:::o;19413:283::-;;19479:2;19473:9;19463:19;;19521:4;19513:6;19509:17;19628:6;19616:10;19613:22;19592:18;19580:10;19577:34;19574:62;19571:2;;;19639:18;;:::i;:::-;19571:2;19679:10;19675:2;19668:22;19453:243;;;;:::o;19702:311::-;;19869:18;19861:6;19858:30;19855:2;;;19891:18;;:::i;:::-;19855:2;19941:4;19933:6;19929:17;19921:25;;20001:4;19995;19991:15;19983:23;;19784:229;;;:::o;20019:311::-;;20186:18;20178:6;20175:30;20172:2;;;20208:18;;:::i;:::-;20172:2;20258:4;20250:6;20246:17;20238:25;;20318:4;20312;20308:15;20300:23;;20101:229;;;:::o;20336:98::-;;20421:5;20415:12;20405:22;;20394:40;;;:::o;20440:99::-;;20526:5;20520:12;20510:22;;20499:40;;;:::o;20545:147::-;;20683:3;20668:18;;20658:34;;;;:::o;20698:169::-;;20816:6;20811:3;20804:19;20856:4;20851:3;20847:14;20832:29;;20794:73;;;;:::o;20873:305::-;;20932:20;20950:1;20932:20;:::i;:::-;20927:25;;20966:20;20984:1;20966:20;:::i;:::-;20961:25;;21120:1;21052:66;21048:74;21045:1;21042:81;21039:2;;;21126:18;;:::i;:::-;21039:2;21170:1;21167;21163:9;21156:16;;20917:261;;;;:::o;21184:185::-;;21241:20;21259:1;21241:20;:::i;:::-;21236:25;;21275:20;21293:1;21275:20;:::i;:::-;21270:25;;21314:1;21304:2;;21319:18;;:::i;:::-;21304:2;21361:1;21358;21354:9;21349:14;;21226:143;;;;:::o;21375:848::-;;;21467:6;21458:15;;21491:5;21482:14;;21505:712;21526:1;21516:8;21513:15;21505:712;;;21621:4;21616:3;21612:14;21606:4;21603:24;21600:2;;;21630:18;;:::i;:::-;21600:2;21680:1;21670:8;21666:16;21663:2;;;22095:4;22088:5;22084:16;22075:25;;21663:2;22145:4;22139;22135:15;22127:23;;22175:32;22198:8;22175:32;:::i;:::-;22163:44;;21505:712;;;21448:775;;;;;;;:::o;22229:285::-;;22313:23;22331:4;22313:23;:::i;:::-;22305:31;;22357:27;22375:8;22357:27;:::i;:::-;22345:39;;22403:104;22440:66;22430:8;22424:4;22403:104;:::i;:::-;22394:113;;22295:219;;;;:::o;22520:1073::-;;22765:8;22755:2;;22786:1;22777:10;;22788:5;;22755:2;22814:4;22804:2;;22831:1;22822:10;;22833:5;;22804:2;22900:4;22948:1;22943:27;;;;22984:1;22979:191;;;;22893:277;;22943:27;22961:1;22952:10;;22963:5;;;22979:191;23024:3;23014:8;23011:17;23008:2;;;23031:18;;:::i;:::-;23008:2;23080:8;23077:1;23073:16;23064:25;;23115:3;23108:5;23105:14;23102:2;;;23122:18;;:::i;:::-;23102:2;23155:5;;;22893:277;;23279:2;23269:8;23266:16;23260:3;23254:4;23251:13;23247:36;23229:2;23219:8;23216:16;23211:2;23205:4;23202:12;23198:35;23182:111;23179:2;;;23335:8;23329:4;23325:19;23316:28;;23370:3;23363:5;23360:14;23357:2;;;23377:18;;:::i;:::-;23357:2;23410:5;;23179:2;23450:42;23488:3;23478:8;23472:4;23469:1;23450:42;:::i;:::-;23435:57;;;;23524:4;23519:3;23515:14;23508:5;23505:25;23502:2;;;23533:18;;:::i;:::-;23502:2;23582:4;23575:5;23571:16;23562:25;;22580:1013;;;;;;:::o;23599:348::-;;23662:20;23680:1;23662:20;:::i;:::-;23657:25;;23696:20;23714:1;23696:20;:::i;:::-;23691:25;;23884:1;23816:66;23812:74;23809:1;23806:81;23801:1;23794:9;23787:17;23783:105;23780:2;;;23891:18;;:::i;:::-;23780:2;23939:1;23936;23932:9;23921:20;;23647:300;;;;:::o;23953:96::-;;24019:24;24037:5;24019:24;:::i;:::-;24008:35;;23998:51;;;:::o;24055:90::-;;24132:5;24125:13;24118:21;24107:32;;24097:48;;;:::o;24151:126::-;;24228:42;24221:5;24217:54;24206:65;;24196:81;;;:::o;24283:77::-;;24349:5;24338:16;;24328:32;;;:::o;24366:86::-;;24441:4;24434:5;24430:16;24419:27;;24409:43;;;:::o;24458:307::-;24526:1;24536:113;24550:6;24547:1;24544:13;24536:113;;;24635:1;24630:3;24626:11;24620:18;24616:1;24611:3;24607:11;24600:39;24572:2;24569:1;24565:10;24560:15;;24536:113;;;24667:6;24664:1;24661:13;24658:2;;;24747:1;24738:6;24733:3;24729:16;24722:27;24658:2;24507:258;;;;:::o;24771:233::-;;24833:24;24851:5;24833:24;:::i;:::-;24824:33;;24879:66;24872:5;24869:77;24866:2;;;24949:18;;:::i;:::-;24866:2;24996:1;24989:5;24985:13;24978:20;;24814:190;;;:::o;25010:180::-;25058:77;25055:1;25048:88;25155:4;25152:1;25145:15;25179:4;25176:1;25169:15;25196:180;25244:77;25241:1;25234:88;25341:4;25338:1;25331:15;25365:4;25362:1;25355:15;25382:180;25430:77;25427:1;25420:88;25527:4;25524:1;25517:15;25551:4;25548:1;25541:15;25568:102;;25660:2;25656:7;25651:2;25644:5;25640:14;25636:28;25626:38;;25616:54;;;:::o;25676:102::-;;25765:5;25762:1;25758:13;25737:34;;25727:51;;;:::o;25784:122::-;25857:24;25875:5;25857:24;:::i;:::-;25850:5;25847:35;25837:2;;25896:1;25893;25886:12;25837:2;25827:79;:::o;25912:116::-;25982:21;25997:5;25982:21;:::i;:::-;25975:5;25972:32;25962:2;;26018:1;26015;26008:12;25962:2;25952:76;:::o;26034:122::-;26107:24;26125:5;26107:24;:::i;:::-;26100:5;26097:35;26087:2;;26146:1;26143;26136:12;26087:2;26077:79;:::o;26162:118::-;26233:22;26249:5;26233:22;:::i;:::-;26226:5;26223:33;26213:2;;26270:1;26267;26260:12;26213:2;26203:77;:::o
Swarm Source
ipfs://9041016385b6143e3e5538c16a1827d639d6ab24b2343e19aba249ca40123511
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.21
Net Worth in ETH
0.0001
Token Allocations
ETH
100.00%
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,054.24 | 0.0001 | $0.205424 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.