Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 4 from a total of 4 transactions
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Core
Compiler Version
v0.6.0+commit.26b70077
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-07-16
*/
/**
*Submitted for verification at Etherscan.io on 2020-07-15
*/
pragma experimental ABIEncoderV2;
pragma solidity ^0.6.0;
interface IRouter {
function f(uint id, bytes32 k) external view returns (address);
function defaultDataContract(uint id) external view returns (address);
function bondNr() external view returns (uint);
function setBondNr(uint _bondNr) external;
function setDefaultContract(uint id, address data) external;
function addField(uint id, bytes32 field, address data) external;
}
enum BondStage {
//无意义状态
DefaultStage,
//评级
RiskRating,
RiskRatingFail,
//募资
CrowdFunding,
CrowdFundingSuccess,
CrowdFundingFail,
UnRepay,//待还款
RepaySuccess,
Overdue,
//由清算导致的债务结清
DebtClosed
}
//状态标签
enum IssuerStage {
DefaultStage,
UnWithdrawCrowd,
WithdrawCrowdSuccess,
UnWithdrawPawn,
WithdrawPawnSuccess
}
/**
*Submitted for verification at Etherscan.io on 2020-04-03
*/
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
contract Context {
// Empty internal constructor, to prevent people from mistakenly deploying
// an instance of this contract, which should be used via inheritance.
constructor () internal { }
function _msgSender() internal view virtual returns (address payable) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*
* _Available since v2.4.0._
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*
* _Available since v2.4.0._
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*
* _Available since v2.4.0._
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != accountHash && codehash != 0x0);
}
/**
* @dev Converts an `address` into `address payable`. Note that this is
* simply a type cast: the actual underlying value is not changed.
*
* _Available since v2.4.0._
*/
// function toPayable(address account) internal pure returns (address payable) {
// return address(uint160(account));
// }
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*
* _Available since v2.4.0._
*/
// function sendValue(address payable recipient, uint256 amount) internal {
// require(address(this).balance >= amount, "Address: insufficient balance");
// // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
// (bool success, ) = recipient.call.value(amount)("");
// require(success, "Address: unable to send value, recipient may have reverted");
// }
}
library SafeERC20 {
using SafeMath for uint256;
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 {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
// solhint-disable-next-line max-line-length
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).add(value);
// callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
// }
// function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
// uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
// callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
// }
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function callOptionalReturn(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves.
// A Solidity high level call has three parts:
// 1. The target address is checked to verify it contains contract code
// 2. The call itself is made, and success asserted
// 3. The return value is decoded, which in turn checks the size of the returned data.
// solhint-disable-next-line max-line-length
require(address(token).isContract(), "SafeERC20: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = address(token).call(data);
require(success, "SafeERC20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
/**
* @dev Optional functions from the ERC20 standard.
*/
abstract contract ERC20Detailed is IERC20 {
string private _name;
string private _symbol;
uint8 private _decimals;
/**
* @dev Sets the values for `name`, `symbol`, and `decimals`. All three of
* these values are immutable: they can only be set once during
* construction.
*/
constructor (string memory name, string memory symbol, uint8 decimals) public {
_name = name;
_symbol = symbol;
_decimals = decimals;
}
/**
* @dev Returns the name of the token.
*/
function name() public view returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5,05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei.
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view returns (uint8) {
return _decimals;
}
}
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20Mintable}.
*
* TIP: For a detailed writeup see our guide
* https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* We have followed general OpenZeppelin guidelines: functions revert instead
* of returning `false` on failure. This behavior is nonetheless conventional
* and does not conflict with the expectations of ERC20 applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
contract ERC20 is Context, IERC20 {
using SafeMath for uint256;
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
uint256 private _totalSupply;
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20};
*
* Requirements:
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
* - the caller must have allowance for `sender`'s tokens of at least
* `amount`.
*/
function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
// function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
// _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
// return true;
// }
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
// function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
// _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
// return true;
// }
/**
* @dev Moves tokens `amount` from `sender` to `recipient`.
*
* This is internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(address sender, address recipient, uint256 amount) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
// _beforeTokenTransfer(sender, recipient, amount);
_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements
*
* - `to` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
// _beforeTokenTransfer(address(0), account, amount);
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
// _beforeTokenTransfer(account, address(0), amount);
_balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
_totalSupply = _totalSupply.sub(amount);
emit Transfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
*
* This is internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(address owner, address spender, uint256 amount) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Destroys `amount` tokens from `account`.`amount` is then deducted
* from the caller's allowance.
*
* See {_burn} and {_approve}.
*/
// function _burnFrom(address account, uint256 amount) internal virtual {
// _burn(account, amount);
// _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance"));
// }
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of `from`'s tokens
* will be to transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of `from`'s tokens will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:using-hooks.adoc[Using Hooks].
*/
// function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}
// File: ../../../../tmp/openzeppelin-contracts/contracts/token/ERC20/ERC20Burnable.sol
// pragma solidity ^0.6.0;
/**
* @dev Extension of {ERC20} that allows token holders to destroy both their own
* tokens and those that they have an allowance for, in a way that can be
* recognized off-chain (via event analysis).
*/
contract ERC20Burnable is Context, ERC20 {
/**
* @dev Destroys `amount` tokens from the caller.
*
* See {ERC20-_burn}.
*/
function burn(uint256 amount) public virtual {
_burn(_msgSender(), amount);
}
/**
* @dev See {ERC20-_burnFrom}.
*/
// function burnFrom(address account, uint256 amount) public virtual {
// _burnFrom(account, amount);
// }
}
interface IBondData {
struct what {
address proposal;
uint256 weight;
}
struct prwhat {
address who;
address proposal;
uint256 reason;
}
struct Balance {
//发行者:
//amountGive: 质押的token数量,项目方代币
//amountGet: 募集的token数量,USDT,USDC
//投资者:
//amountGive: 投资的token数量,USDT,USDC
//amountGet: 债券凭证数量
uint256 amountGive;
uint256 amountGet;
}
function issuer() external view returns (address);
function collateralToken() external view returns (address);
function crowdToken() external view returns (address);
function getBorrowAmountGive() external view returns (uint256);
function getSupplyAmount(address who) external view returns (uint256);
function par() external view returns (uint256);
function mintBond(address who, uint256 amount) external;
function burnBond(address who, uint256 amount) external;
function transferableAmount() external view returns (uint256);
function debt() external view returns (uint256);
function actualBondIssuance() external view returns (uint256);
function couponRate() external view returns (uint256);
function depositMultiple() external view returns (uint256);
function discount() external view returns (uint256);
function voteExpired() external view returns (uint256);
function investExpired() external view returns (uint256);
function totalBondIssuance() external view returns (uint256);
function maturity() external view returns (uint256);
function config() external view returns (address);
function weightOf(address who) external view returns (uint256);
function totalWeight() external view returns (uint256);
function bondExpired() external view returns (uint256);
function interestBearingPeriod() external;
function bondStage() external view returns (uint256);
function issuerStage() external view returns (uint256);
function issueFee() external view returns (uint256);
function totalInterest() external view returns (uint256);
function gracePeriod() external view returns (uint256);
function liability() external view returns (uint256);
function remainInvestAmount() external view returns (uint256);
function supplyMap(address) external view returns (Balance memory);
function balanceOf(address account) external view returns (uint256);
function setPar(uint256) external;
function liquidateLine() external view returns (uint256);
function setBondParam(bytes32 k, uint256 v) external;
function setBondParamAddress(bytes32 k, address v) external;
function minIssueRatio() external view returns (uint256);
function partialLiquidateAmount() external view returns (uint256);
function votes(address who) external view returns (what memory);
function setVotes(address who, address proposal, uint256 amount) external;
function weights(address proposal) external view returns (uint256);
function setBondParamMapping(bytes32 name, address k, uint256 v) external;
function top() external view returns (address);
function voteLedger(address who) external view returns (uint256);
function totalWeights() external view returns (uint256);
function setPr(address who, address proposal, uint256 reason) external;
function pr() external view returns (prwhat memory);
function fee() external view returns (uint256);
function profits(address who) external view returns (uint256);
function totalProfits() external view returns (uint256);
function originLiability() external view returns (uint256);
function liquidating() external view returns (bool);
function setLiquidating(bool _liquidating) external;
function sysProfit() external view returns (uint256);
function totalFee() external view returns (uint256);
function supportRedeem() external view returns (bool);
}
/*
* Copyright (c) The Force Protocol Development Team
*/
interface ICoreUtils {
function d(uint256 id) external view returns (address);
function bondData(uint256 id) external view returns (IBondData);
//principal + interest = principal * (1 + couponRate);
function calcPrincipalAndInterest(uint256 principal, uint256 couponRate)
external
pure
returns (uint256);
//可转出金额,募集到的总资金减去给所有投票人的手续费
function transferableAmount(uint256 id) external view returns (uint256);
//总的募集资金量
function debt(uint256 id) external view returns (uint256);
//总的募集资金量
function totalInterest(uint256 id) external view returns (uint256);
function debtPlusTotalInterest(uint256 id) external view returns (uint256);
//可投资的剩余份数
function remainInvestAmount(uint256 id) external view returns (uint256);
function calcMinCollateralTokenAmount(uint256 id)
external
view
returns (uint256);
function pawnBalanceInUsd(uint256 id) external view returns (uint256);
function disCountPawnBalanceInUsd(uint256 id)
external
view
returns (uint256);
function crowdBalanceInUsd(uint256 id) external view returns (uint256);
//资不抵债判断,资不抵债时,为true,否则为false
function isInsolvency(uint256 id) external view returns (bool);
//获取质押的代币价格
function pawnPrice(uint256 id) external view returns (uint256);
//获取募资的代币价格
function crowdPrice(uint256 id) external view returns (uint256);
//要清算的质押物数量
//X = (AC*price - PCR*PD)/(price*(1-PCR*Discount))
//X = (PCR*PD - AC*price)/(price*(PCR*Discount-1))
function X(uint256 id) external view returns (uint256 res);
//清算额,减少的债务
//X*price(collater)*Discount/price(crowd)
function Y(uint256 id) external view returns (uint256 res);
//到期后,由系统债务算出需要清算的抵押物数量
function calcLiquidatePawnAmount(uint256 id) external view returns (uint256);
function calcLiquidatePawnAmount(uint256 id, uint256 liability) external view returns (uint256);
function investPrincipalWithInterest(uint256 id, address who)
external
view
returns (uint256);
//bond:
function convert2BondAmount(address b, address t, uint256 amount)
external
view
returns (uint256);
//bond:
function convert2GiveAmount(uint256 id, uint256 bondAmount)
external
view
returns (uint256);
function isUnsafe(uint256 id) external view returns (bool unsafe);
function isDepositMultipleUnsafe(uint256 id) external view returns (bool unsafe);
function getLiquidateAmount(uint id, uint y1) external view returns (uint256, uint256);
function precision(uint256 id) external view returns (uint256);
function isDebtOpen(uint256 id) external view returns (bool);
function isMinIssuanceCheckOK(uint256 id) external view returns (bool ok);
}
/**
* @title ERC20 interface
* @dev see https://eips.ethereum.org/EIPS/eip-20
*/
interface IERC20Detailed {
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
}
interface IOracle {
function get(address t) external view returns (uint, bool);
}
interface IConfig {
function voteDuration() external view returns (uint256);
function investDuration() external view returns (uint256);
function discount(address token) external view returns (uint256);
function depositMultiple(address token) external view returns (uint256);
function liquidateLine(address token) external view returns (uint256);
function gracePeriod() external view returns (uint256);
function partialLiquidateAmount(address token) external view returns (uint256);
function gov() external view returns(address);
function ratingFeeRatio() external view returns (uint256);
}
interface IACL {
function accessible(address from, address to, bytes4 sig)
external
view
returns (bool);
}
contract Core {
using SafeERC20 for IERC20;
using SafeMath for uint256;
address public ACL;
address public router;
address public config;
address public oracle;
ICoreUtils public coreUtils;
address public nameGen;
modifier auth {
IACL _ACL = IACL(ACL);
require(_ACL.accessible(msg.sender, address(this), msg.sig), "core: access unauthorized");
_;
}
constructor(
address _ACL,
address _router,
address _config,
address _coreUtils,
address _oracle,
address _nameGen
) public {
ACL = _ACL;
router = _router;
config = _config;
coreUtils = ICoreUtils(_coreUtils);
oracle = _oracle;
nameGen = _nameGen;
}
function setCoreParamAddress(bytes32 k, address v) external auth {
if (k == bytes32("router")) {
router = v;
return;
}
if (k == bytes32("config")) {
config = v;
return;
}
if (k == bytes32("coreUtils")) {
coreUtils = ICoreUtils(v);
return;
}
if (k == bytes32("oracle")) {
oracle = v;
return;
}
revert("setCoreParamAddress: invalid k");
}
function setACL(
address _ACL) external {
require(msg.sender == ACL, "require ACL");
ACL = _ACL;
}
function d(uint256 id) public view returns (address) {
return IRouter(router).defaultDataContract(id);
}
function bondData(uint256 id) public view returns (IBondData) {
return IBondData(d(id));
}
event MonitorEvent(address indexed who, address indexed bond, bytes32 indexed funcName, bytes);
function MonitorEventCallback(address who, address bond, bytes32 funcName, bytes calldata payload) external auth {
emit MonitorEvent(who, bond, funcName, payload);
}
function initialDepositCb(uint256 id, uint256 amount) external auth {
IBondData b = bondData(id);
b.setBondParam("depositMultiple", IConfig(config).depositMultiple(b.collateralToken()));
require(amount >= ICoreUtils(coreUtils).calcMinCollateralTokenAmount(id), "invalid deposit amount");
// 支持评级
if (b.supportRedeem()) {
b.setBondParam("bondStage", uint256(BondStage.RiskRating));
b.setBondParamAddress("gov", IConfig(config).gov());
uint256 voteDuration = IConfig(config).voteDuration(); //s
b.setBondParam("voteExpired", now + voteDuration);
} else {
b.setBondParam("bondStage", uint256(BondStage.CrowdFunding));
b.setBondParam("voteExpired", now);//不支持评级的债券发债后,投票立即到期
b.setBondParam("investExpired", now + IConfig(config).investDuration());
b.setBondParam("bondExpired", now + IConfig(config).investDuration() + b.maturity());
}
b.setBondParam("gracePeriod", IConfig(config).gracePeriod());
b.setBondParam("discount", IConfig(config).discount(b.collateralToken()));
b.setBondParam("liquidateLine", IConfig(config).liquidateLine(b.collateralToken()));
b.setBondParam("partialLiquidateAmount", IConfig(config).partialLiquidateAmount(b.crowdToken()));
b.setBondParam("borrowAmountGive", b.getBorrowAmountGive().add(amount));
}
//发债方追加资金, amount为需要转入的token数
function depositCb(address who, uint256 id, uint256 amount)
external
auth
returns (bool)
{
require(d(id) != address(0) && bondData(id).issuer() == who, "invalid address or issuer");
IBondData b = bondData(id);
// //充值amount token到合约中,充值之前需要approve
// safeTransferFrom(b.collateralToken(), msg.sender, address(this), address(this), amount);
b.setBondParam("borrowAmountGive",b.getBorrowAmountGive().add(amount));
return true;
}
//投资债券接口
//id: 发行的债券id,唯一标志债券
//amount: 投资的数量
function investCb(address who, uint256 id, uint256 amount)
external
auth
returns (bool)
{
IBondData b = bondData(id);
require(d(id) != address(0)
&& who != b.issuer()
&& now <= b.investExpired()
&& b.bondStage() == uint(BondStage.CrowdFunding), "forbidden self invest, or invest is expired");
uint256 bondAmount = coreUtils.convert2BondAmount(address(b), b.crowdToken(), amount);
//投资不能超过剩余可投份数
require(
bondAmount > 0 && bondAmount <= coreUtils.remainInvestAmount(id),
"invalid bondAmount"
);
b.mintBond(who, bondAmount);
// //充值amount token到合约中,充值之前需要approve
// safeTransferFrom(give, msg.sender, address(this), address(this), amount);
require(coreUtils.remainInvestAmount(id) >= 0, "bond overflow");
return true;
}
//停止融资, 开始计息
function interestBearingPeriod(uint256 id) external {
IBondData b = bondData(id);
//设置众筹状态, 调用的前置条件必须满足债券投票完成并且通过.
//@auth 仅允许 @Core 合约调用.
require(d(id) != address(0)
&& b.bondStage() == uint256(BondStage.CrowdFunding)
&& (now > b.investExpired() || coreUtils.remainInvestAmount(id) == 0), "already closed invest");
//计算融资进度.
if (coreUtils.isMinIssuanceCheckOK(id)) {
uint sysDebt = coreUtils.debtPlusTotalInterest(id);
b.setBondParam("liability", sysDebt);
b.setBondParam("originLiability", sysDebt);
uint256 _1 = 1 ether;
uint256 crowdUsdxLeverage = coreUtils.crowdBalanceInUsd(id)
.mul(b.depositMultiple())
.mul(b.liquidateLine())
.div(1e36);
//CCR < 0.7 * 4
//pawnUsd/crowdUsd < 0.7*4
bool unsafe = coreUtils.pawnBalanceInUsd(id) < crowdUsdxLeverage;
if (unsafe) {
b.setBondParam("bondStage", uint256(BondStage.CrowdFundingFail));
b.setBondParam("issuerStage", uint256(IssuerStage.UnWithdrawPawn));
} else {
b.setBondParam("bondExpired", now + b.maturity());
b.setBondParam("bondStage", uint256(BondStage.CrowdFundingSuccess));
b.setBondParam("issuerStage", uint256(IssuerStage.UnWithdrawCrowd));
//根据当前融资额度获取投票手续费.
uint256 totalFee = b.totalFee();
uint256 voteFee = totalFee.mul(IConfig(config).ratingFeeRatio()).div(_1);
//支持评级
if (b.supportRedeem()) {
b.setBondParam("fee", voteFee);
b.setBondParam("sysProfit", totalFee.sub(voteFee));
} else {
b.setBondParam("fee", 0);//无投票手续费
b.setBondParam("sysProfit", totalFee);//发债手续费全部归ForTube平台
}
}
} else {
b.setBondParam("bondStage", uint256(BondStage.CrowdFundingFail));
b.setBondParam("issuerStage", uint256(IssuerStage.UnWithdrawPawn));
}
emit MonitorEvent(msg.sender, address(b), "interestBearingPeriod", abi.encodePacked());
}
//转出募集到的资金,只有债券发行者可以转出资金
function txOutCrowdCb(address who, uint256 id) external auth returns (uint) {
IBondData b = IBondData(bondData(id));
require(d(id) != address(0) && b.issuerStage() == uint(IssuerStage.UnWithdrawCrowd) && b.issuer() == who, "only txout crowd once or require issuer");
uint256 balance = coreUtils.transferableAmount(id);
// safeTransferFrom(crowd, address(this), address(this), msg.sender, balance);
b.setBondParam("issuerStage", uint256(IssuerStage.WithdrawCrowdSuccess));
b.setBondParam("bondStage", uint256(BondStage.UnRepay));
return balance;
}
function overdueCb(uint256 id) external auth {
IBondData b = IBondData(bondData(id));
require(now >= b.bondExpired().add(b.gracePeriod())
&& (b.bondStage() == uint(BondStage.UnRepay) || b.bondStage() == uint(BondStage.CrowdFundingSuccess) ), "invalid overdue call state");
b.setBondParam("bondStage", uint256(BondStage.Overdue));
emit MonitorEvent(msg.sender, address(b), "overdue", abi.encodePacked());
}
//发债方还款
//id: 发行的债券id,唯一标志债券
//get: 募集的token地址
//amount: 还款数量
function repayCb(address who, uint256 id) external auth returns (uint) {
require(d(id) != address(0) && bondData(id).issuer() == who, "invalid address or issuer");
IBondData b = bondData(id);
//募资成功,起息后即可还款,只有未还款或者逾期中可以还款,债务被关闭或者抵押物被清算完,不用还款
require(
b.bondStage() == uint(BondStage.UnRepay) || b.bondStage() == uint(BondStage.Overdue),
"invalid state"
);
//充值repayAmount token到合约中,充值之前需要approve
//使用amountGet进行计算
uint256 repayAmount = b.liability();
b.setBondParam("liability", 0);
//safeTransferFrom(crowd, msg.sender, address(this), address(this), repayAmount);
b.setBondParam("bondStage", uint256(BondStage.RepaySuccess));
b.setBondParam("issuerStage", uint256(IssuerStage.UnWithdrawPawn));
//清算一部分后,正常还款,需要设置清算中为false
if (b.liquidating()) {
b.setLiquidating(false);
}
return repayAmount;
}
//发债方取回质押token,在发债方已还清贷款的情况下,可以取回质押品
//id: 发行的债券id,唯一标志债券
//pawn: 抵押的token地址
//amount: 取回数量
function withdrawPawnCb(address who, uint256 id) external auth returns (uint) {
IBondData b = bondData(id);
require(d(id) != address(0)
&& b.issuer() == who
&& b.issuerStage() == uint256(IssuerStage.UnWithdrawPawn), "invalid issuer, txout state or address");
b.setBondParam("issuerStage", uint256(IssuerStage.WithdrawPawnSuccess));
uint256 borrowGive = b.getBorrowAmountGive();
//刚好结清债务和抵押物均为0(b.issuerStage() == uint256(IssuerStage.DebtClosed))时,不能取回抵押物
require(borrowGive > 0, "invalid give amount");
b.setBondParam("borrowAmountGive", 0);//更新抵押品数量为0
return borrowGive;
}
//募资失败,投资人凭借"债券"取回本金
function withdrawPrincipalCb(address who, uint256 id)
external
auth
returns (uint256)
{
IBondData b = bondData(id);
//募资完成, 但是未募资成功.
require(d(id) != address(0) &&
b.bondStage() == uint(BondStage.CrowdFundingFail),
"must crowdfunding failure"
);
(uint256 supplyGive) = b.getSupplyAmount(who);
//safeTransferFrom(give, address(this), address(this), msg.sender, supplyGive);
uint256 bondAmount = coreUtils.convert2BondAmount(
address(b),
b.crowdToken(),
supplyGive
);
b.burnBond(who, bondAmount);
return supplyGive;
}
//债券到期, 投资人取回本金和收益
function withdrawPrincipalAndInterestCb(address who, uint256 id)
external
auth
returns (uint256)
{
IBondData b = bondData(id);
//募资成功,并且债券到期
require(d(id) != address(0) && (
b.bondStage() == uint(BondStage.RepaySuccess)
|| b.bondStage() == uint(BondStage.DebtClosed)),
"unrepay or unliquidate"
);
(uint256 supplyGive) = b.getSupplyAmount(who);
uint256 bondAmount = coreUtils.convert2BondAmount(
address(b),
b.crowdToken(),
supplyGive
);
uint256 actualRepay = coreUtils.investPrincipalWithInterest(id, who);
//safeTransferFrom(give, address(this), address(this), msg.sender, actualRepay);
b.burnBond(who, bondAmount);
return actualRepay;
}
function abs(uint256 a, uint256 b) internal pure returns (uint c) {
c = a >= b ? a.sub(b) : b.sub(a);
}
function liquidateInternal(address who, uint256 id, uint y1, uint x1) internal returns (uint256, uint256, uint256, uint256) {
IBondData b = bondData(id);
require(b.issuer() != who, "can't self-liquidate");
//当前已经处于清算中状态
if (b.liquidating()) {
bool depositMultipleUnsafe = coreUtils.isDepositMultipleUnsafe(id);
require(depositMultipleUnsafe, "in depositMultiple safe state");
} else {
require(coreUtils.isUnsafe(id), "in safe state");
//设置为清算中状态
b.setLiquidating(true);
}
uint256 balance = IERC20(b.crowdToken()).balanceOf(who);
uint256 y = coreUtils.Y(id);
uint256 x = coreUtils.X(id);
require(balance >= y1 && y1 <= y, "insufficient y1 or balance");
if (y1 == b.liability() || abs(y1, b.liability()) <= uint256(1)
|| x1 == b.getBorrowAmountGive()
|| abs(x1, b.getBorrowAmountGive()) <= coreUtils.precision(id)) {
b.setBondParam("bondStage", uint(BondStage.DebtClosed));
b.setLiquidating(false);
}
if (y1 == b.liability() || abs(y1, b.liability()) <= uint256(1)) {
if (!(x1 == b.getBorrowAmountGive() || abs(x1, b.getBorrowAmountGive()) <= coreUtils.precision(id))) {
b.setBondParam("issuerStage", uint(IssuerStage.UnWithdrawPawn));
}
}
//对债务误差为1的处理
if (abs(y1, b.liability()) <= uint256(1)) {
b.setBondParam("liability", 0);
} else {
b.setBondParam("liability", b.liability().sub(y1));
}
if (abs(x1, b.getBorrowAmountGive()) <= coreUtils.precision(id)) {
b.setBondParam("borrowAmountGive", 0);
} else {
b.setBondParam("borrowAmountGive", b.getBorrowAmountGive().sub(x1));
}
if (!coreUtils.isDepositMultipleUnsafe(id)) {
b.setLiquidating(false);
}
if (coreUtils.isDebtOpen(id)) {
b.setBondParam("sysProfit", b.sysProfit().add(b.fee()));
b.setBondParam("fee", 0);
}
return (y1, x1, y, x);
}
//分批清算债券接口
//id: 债券发行id,同上
function liquidateCb(address who, uint256 id, uint256 y1)
external
auth
returns (uint256, uint256, uint256, uint256)
{
(uint y, uint x) = coreUtils.getLiquidateAmount(id, y1);
return liquidateInternal(who, id, y, x);
}
//取回系统盈利
function withdrawSysProfitCb(address who, uint256 id) external auth returns (uint256) {
IBondData b = bondData(id);
uint256 _sysProfit = b.sysProfit();
require(_sysProfit > 0, "no withdrawable sysProfit");
b.setBondParam("sysProfit", 0);
return _sysProfit;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_ACL","type":"address"},{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_config","type":"address"},{"internalType":"address","name":"_coreUtils","type":"address"},{"internalType":"address","name":"_oracle","type":"address"},{"internalType":"address","name":"_nameGen","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"},{"indexed":true,"internalType":"address","name":"bond","type":"address"},{"indexed":true,"internalType":"bytes32","name":"funcName","type":"bytes32"},{"indexed":false,"internalType":"bytes","name":"","type":"bytes"}],"name":"MonitorEvent","type":"event"},{"inputs":[],"name":"ACL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"address","name":"bond","type":"address"},{"internalType":"bytes32","name":"funcName","type":"bytes32"},{"internalType":"bytes","name":"payload","type":"bytes"}],"name":"MonitorEventCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"bondData","outputs":[{"internalType":"contract IBondData","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"config","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coreUtils","outputs":[{"internalType":"contract ICoreUtils","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"d","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositCb","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"initialDepositCb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"interestBearingPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"investCb","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"y1","type":"uint256"}],"name":"liquidateCb","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nameGen","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"overdueCb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"repayCb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ACL","type":"address"}],"name":"setACL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"k","type":"bytes32"},{"internalType":"address","name":"v","type":"address"}],"name":"setCoreParamAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"txOutCrowdCb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"withdrawPawnCb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"withdrawPrincipalAndInterestCb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"withdrawPrincipalCb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"withdrawSysProfitCb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040523480156200001157600080fd5b5060405162005f5938038062005f598339810160408190526200003491620000c5565b600080546001600160a01b03199081166001600160a01b03988916179091556001805482169688169690961790955560028054861694871694909417909355600480548516928616929092179091556003805484169185169190911790556005805490921692169190911790556200014b565b80516001600160a01b0381168114620000bf57600080fd5b92915050565b60008060008060008060c08789031215620000de578182fd5b620000ea8888620000a7565b9550620000fb8860208901620000a7565b94506200010c8860408901620000a7565b93506200011d8860608901620000a7565b92506200012e8860808901620000a7565b91506200013f8860a08901620000a7565b90509295509295509295565b615dfe806200015b6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806387f1b455116100c3578063b55be8021161007c578063b55be802146102a0578063bf8ef0b2146102b3578063d891e08e146102c6578063f887ea40146102d9578063f8906b73146102e1578063fc848c65146102f45761014d565b806387f1b4551461022c5780638c472b1b1461024c5780638db26fb11461025f57806393b25fa3146102725780639eade48114610285578063ac719f9e146102985761014d565b806376aad6051161011557806376aad605146101c9578063794bcf8a146101de57806379502c55146102015780637af53532146102095780637dc0d1d0146102115780637f6b590c146102195761014d565b8063027748f31461015257806327b916971461017b578063336289141461018e5780635ef05056146101a1578063733abbe2146101b4575b600080fd5b61016561016036600461547b565b610307565b6040516101729190615d67565b60405180910390f35b61016561018936600461547b565b6104c9565b61016561019c36600461547b565b6107df565b6101656101af36600461547b565b610b3e565b6101bc610e45565b60405161017291906155e8565b6101dc6101d73660046153a6565b610e54565b005b6101f16101ec3660046154a6565b610ea0565b6040516101729493929190615d95565b6101bc610ff9565b6101bc611008565b6101bc611017565b6101bc610227366004615529565b611026565b61023f61023a3660046154a6565b6110ad565b6040516101729190615666565b6101dc61025a366004615529565b6115e0565b61016561026d36600461547b565b611961565b61023f6102803660046154a6565b611e2d565b6101bc610293366004615529565b612055565b6101bc612060565b6101dc6102ae3660046153de565b61206f565b6101dc6102c1366004615529565b612173565b6101dc6102d43660046154fa565b612dc0565b6101bc612f52565b6101dc6102ef366004615559565b612f61565b61016561030236600461547b565b613d58565b6000805460405163a90ffc2760e01b81526001600160a01b0390911690819063a90ffc279061034990339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b15801561036157600080fd5b505afa158015610375573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061039991908101906154da565b6103be5760405162461bcd60e51b81526004016103b590615bd8565b60405180910390fd5b60006103c984612055565b90506000816001600160a01b0316637b01c4bf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561040657600080fd5b505afa15801561041a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061043e9190810190615541565b9050600081116104605760405162461bcd60e51b81526004016103b590615c5d565b6040516356273aed60e11b81526001600160a01b0383169063ac4e75da9061048d90600090600401615b41565b600060405180830381600087803b1580156104a757600080fd5b505af11580156104bb573d6000803e3d6000fd5b509298975050505050505050565b6000805460405163a90ffc2760e01b81526001600160a01b0390911690819063a90ffc279061050b90339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b15801561052357600080fd5b505afa158015610537573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061055b91908101906154da565b6105775760405162461bcd60e51b81526004016103b590615bd8565b600061058284612055565b9050600061058f85611026565b6001600160a01b0316141580156106275750846001600160a01b0316816001600160a01b0316631d1438486040518163ffffffff1660e01b815260040160206040518083038186803b1580156105e457600080fd5b505afa1580156105f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061061c91908101906153c2565b6001600160a01b0316145b80156106a357506003816001600160a01b031663d7982e166040518163ffffffff1660e01b815260040160206040518083038186803b15801561066957600080fd5b505afa15801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106a19190810190615541565b145b6106bf5760405162461bcd60e51b81526004016103b590615743565b6040516356273aed60e11b81526001600160a01b0382169063ac4e75da906106eb906004908101615937565b600060405180830381600087803b15801561070557600080fd5b505af1158015610719573d6000803e3d6000fd5b505050506000816001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561075857600080fd5b505afa15801561076c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107909190810190615541565b9050600081116107b25760405162461bcd60e51b81526004016103b590615cc4565b6040516356273aed60e11b81526001600160a01b0383169063ac4e75da9061048d90600090600401615886565b6000805460405163a90ffc2760e01b81526001600160a01b0390911690819063a90ffc279061082190339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b15801561083957600080fd5b505afa15801561084d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061087191908101906154da565b61088d5760405162461bcd60e51b81526004016103b590615bd8565b600061089884612055565b905060006108a585611026565b6001600160a01b03161415801561092c57506005816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b1580156108f257600080fd5b505afa158015610906573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061092a9190810190615541565b145b6109485760405162461bcd60e51b81526004016103b5906157f7565b6040516348a3ea4760e11b81526000906001600160a01b03831690639147d48e906109779089906004016155e8565b60206040518083038186803b15801561098f57600080fd5b505afa1580156109a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109c79190810190615541565b90506000600460009054906101000a90046001600160a01b03166001600160a01b0316639382717384856001600160a01b0316630757dc886040518163ffffffff1660e01b815260040160206040518083038186803b158015610a2957600080fd5b505afa158015610a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a6191908101906153c2565b856040518463ffffffff1660e01b8152600401610a8093929190615629565b60206040518083038186803b158015610a9857600080fd5b505afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ad09190810190615541565b6040516302295fb560e21b81529091506001600160a01b038416906308a57ed490610b01908a90859060040161564d565b600060405180830381600087803b158015610b1b57600080fd5b505af1158015610b2f573d6000803e3d6000fd5b50939998505050505050505050565b6000805460405163a90ffc2760e01b81526001600160a01b0390911690819063a90ffc2790610b8090339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b158015610b9857600080fd5b505afa158015610bac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bd091908101906154da565b610bec5760405162461bcd60e51b81526004016103b590615bd8565b6000610bf784612055565b90506000610c0485611026565b6001600160a01b031614158015610c8b57506001816001600160a01b031663d7982e166040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5157600080fd5b505afa158015610c65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c899190810190615541565b145b8015610d185750846001600160a01b0316816001600160a01b0316631d1438486040518163ffffffff1660e01b815260040160206040518083038186803b158015610cd557600080fd5b505afa158015610ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d0d91908101906153c2565b6001600160a01b0316145b610d345760405162461bcd60e51b81526004016103b5906158d1565b60048054604051630278b29760e51b81526000926001600160a01b0390921691634f1652e091610d6691899101615d67565b60206040518083038186803b158015610d7e57600080fd5b505afa158015610d92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610db69190810190615541565b6040516356273aed60e11b81529091506001600160a01b0383169063ac4e75da90610de690600290600401615937565b600060405180830381600087803b158015610e0057600080fd5b505af1158015610e14573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038516925063ac4e75da915061048d90600690600401615a8c565b6004546001600160a01b031681565b6000546001600160a01b03163314610e7e5760405162461bcd60e51b81526004016103b590615d21565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000805460405163a90ffc2760e01b81528291829182916001600160a01b031690819063a90ffc2790610ee690339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b158015610efe57600080fd5b505afa158015610f12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f3691908101906154da565b610f525760405162461bcd60e51b81526004016103b590615bd8565b60048054604051633a595a5560e21b815260009283926001600160a01b03169163e965695491610f86918d918d9101615d87565b604080518083038186803b158015610f9d57600080fd5b505afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fd5919081019061557a565b91509150610fe58a8a84846141b9565b965096509650965050505093509350935093565b6002546001600160a01b031681565b6000546001600160a01b031681565b6003546001600160a01b031681565b600154604051633ed0aabf60e11b81526000916001600160a01b031690637da1557e90611057908590600401615d67565b60206040518083038186803b15801561106f57600080fd5b505afa158015611083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110a791908101906153c2565b92915050565b6000805460405163a90ffc2760e01b81526001600160a01b0390911690819063a90ffc27906110ef90339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b15801561110757600080fd5b505afa15801561111b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061113f91908101906154da565b61115b5760405162461bcd60e51b81526004016103b590615bd8565b600061116685612055565b9050600061117386611026565b6001600160a01b03161415801561120c5750806001600160a01b0316631d1438486040518163ffffffff1660e01b815260040160206040518083038186803b1580156111be57600080fd5b505afa1580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111f691908101906153c2565b6001600160a01b0316866001600160a01b031614155b80156112885750806001600160a01b031663f79f298f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561124c57600080fd5b505afa158015611260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112849190810190615541565b4211155b801561130457506003816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ca57600080fd5b505afa1580156112de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113029190810190615541565b145b6113205760405162461bcd60e51b81526004016103b590615b8d565b6000600460009054906101000a90046001600160a01b03166001600160a01b0316639382717383846001600160a01b0316630757dc886040518163ffffffff1660e01b815260040160206040518083038186803b15801561138057600080fd5b505afa158015611394573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113b891908101906153c2565b886040518463ffffffff1660e01b81526004016113d793929190615629565b60206040518083038186803b1580156113ef57600080fd5b505afa158015611403573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114279190810190615541565b90506000811180156114b75750600480546040516366048dc360e11b81526001600160a01b039091169163cc091b8691611463918a9101615d67565b60206040518083038186803b15801561147b57600080fd5b505afa15801561148f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114b39190810190615541565b8111155b6114d35760405162461bcd60e51b81526004016103b590615a41565b6040516319b8f56b60e21b81526001600160a01b038316906366e3d5ac90611501908a90859060040161564d565b600060405180830381600087803b15801561151b57600080fd5b505af115801561152f573d6000803e3d6000fd5b5050600480546040516366048dc360e11b8152600094506001600160a01b03909116925063cc091b8691611565918b9101615d67565b60206040518083038186803b15801561157d57600080fd5b505afa158015611591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115b59190810190615541565b10156115d35760405162461bcd60e51b81526004016103b5906158aa565b5060019695505050505050565b6000805460405163a90ffc2760e01b81526001600160a01b0390911691829163a90ffc2791611622913391309190356001600160e01b031916906004016155fc565b60206040518083038186803b15801561163a57600080fd5b505afa15801561164e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061167291908101906154da565b61168e5760405162461bcd60e51b81526004016103b590615bd8565b600061169983612055565b905061178c816001600160a01b031663a06db7dc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116d757600080fd5b505afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061170f9190810190615541565b826001600160a01b03166345958de16040518163ffffffff1660e01b815260040160206040518083038186803b15801561174857600080fd5b505afa15801561175c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117809190810190615541565b9063ffffffff61522a16565b421015801561188557506006816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b1580156117d157600080fd5b505afa1580156117e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118099190810190615541565b148061188557506004816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b15801561184b57600080fd5b505afa15801561185f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118839190810190615541565b145b6118a15760405162461bcd60e51b81526004016103b59061582e565b6040516356273aed60e11b81526001600160a01b0382169063ac4e75da906118ce90600890600401615a8c565b600060405180830381600087803b1580156118e857600080fd5b505af11580156118fc573d6000803e3d6000fd5b505060408051600081526020810191829052666f76657264756560c81b93506001600160a01b038516925033917fa071f6ee20c14dbcbea2f49f2bb5099d5fe3331ad2a8a52693d2d2f391c9b23f91611954916156a0565b60405180910390a4505050565b6000805460405163a90ffc2760e01b81526001600160a01b0390911690819063a90ffc27906119a390339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b1580156119bb57600080fd5b505afa1580156119cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119f391908101906154da565b611a0f5760405162461bcd60e51b81526004016103b590615bd8565b6000611a1a84611026565b6001600160a01b031614158015611aba5750836001600160a01b0316611a3f84612055565b6001600160a01b0316631d1438486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7757600080fd5b505afa158015611a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611aaf91908101906153c2565b6001600160a01b0316145b611ad65760405162461bcd60e51b81526004016103b5906157c0565b6000611ae184612055565b90506006816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1e57600080fd5b505afa158015611b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b569190810190615541565b1480611bd257506008816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9857600080fd5b505afa158015611bac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bd09190810190615541565b145b611bee5760405162461bcd60e51b81526004016103b590615c36565b6000816001600160a01b031663705727b56040518163ffffffff1660e01b815260040160206040518083038186803b158015611c2957600080fd5b505afa158015611c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c619190810190615541565b6040516356273aed60e11b81529091506001600160a01b0383169063ac4e75da90611c9190600090600401615995565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038516925063ac4e75da9150611cf090600790600401615a8c565b600060405180830381600087803b158015611d0a57600080fd5b505af1158015611d1e573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038516925063ac4e75da9150611d4f90600390600401615937565b600060405180830381600087803b158015611d6957600080fd5b505af1158015611d7d573d6000803e3d6000fd5b50505050816001600160a01b031663334b3e486040518163ffffffff1660e01b815260040160206040518083038186803b158015611dba57600080fd5b505afa158015611dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611df291908101906154da565b15611e24576040516364a7231560e01b81526001600160a01b038316906364a723159061048d90600090600401615666565b95945050505050565b6000805460405163a90ffc2760e01b81526001600160a01b0390911690819063a90ffc2790611e6f90339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b158015611e8757600080fd5b505afa158015611e9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ebf91908101906154da565b611edb5760405162461bcd60e51b81526004016103b590615bd8565b6000611ee685611026565b6001600160a01b031614158015611f865750846001600160a01b0316611f0b85612055565b6001600160a01b0316631d1438486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f4357600080fd5b505afa158015611f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f7b91908101906153c2565b6001600160a01b0316145b611fa25760405162461bcd60e51b81526004016103b5906157c0565b6000611fad85612055565b9050806001600160a01b031663ac4e75da611ffb86846001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561174857600080fd5b6040518263ffffffff1660e01b81526004016120179190615886565b600060405180830381600087803b15801561203157600080fd5b505af1158015612045573d6000803e3d6000fd5b5060019998505050505050505050565b60006110a782611026565b6005546001600160a01b031681565b6000805460405163a90ffc2760e01b81526001600160a01b0390911691829163a90ffc27916120b1913391309190356001600160e01b031916906004016155fc565b60206040518083038186803b1580156120c957600080fd5b505afa1580156120dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061210191908101906154da565b61211d5760405162461bcd60e51b81526004016103b590615bd8565b83856001600160a01b0316876001600160a01b03167fa071f6ee20c14dbcbea2f49f2bb5099d5fe3331ad2a8a52693d2d2f391c9b23f8686604051612163929190615671565b60405180910390a4505050505050565b600061217e82612055565b9050600061218b83611026565b6001600160a01b03161415801561221257506003816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b1580156121d857600080fd5b505afa1580156121ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122109190810190615541565b145b80156123135750806001600160a01b031663f79f298f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561225257600080fd5b505afa158015612266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061228a9190810190615541565b4211806123135750600480546040516366048dc360e11b81526001600160a01b039091169163cc091b86916122c191869101615d67565b60206040518083038186803b1580156122d957600080fd5b505afa1580156122ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123119190810190615541565b155b61232f5760405162461bcd60e51b81526004016103b590615b5e565b60048054604051639ac7333960e01b81526001600160a01b0390911691639ac733399161235e91869101615d67565b60206040518083038186803b15801561237657600080fd5b505afa15801561238a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123ae91908101906154da565b15612c9357600480546040516347c37f3f60e01b81526000926001600160a01b03909216916347c37f3f916123e591879101615d67565b60206040518083038186803b1580156123fd57600080fd5b505afa158015612411573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124359190810190615541565b6040516356273aed60e11b81529091506001600160a01b0383169063ac4e75da90612464908490600401615995565b600060405180830381600087803b15801561247e57600080fd5b505af1158015612492573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038516925063ac4e75da91506124c2908490600401615956565b600060405180830381600087803b1580156124dc57600080fd5b505af11580156124f0573d6000803e3d6000fd5b505050506000670de0b6b3a7640000905060006126956ec097ce7bc90715b34b9f1000000000612689866001600160a01b031663e33b15616040518163ffffffff1660e01b815260040160206040518083038186803b15801561255257600080fd5b505afa158015612566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061258a9190810190615541565b61267d886001600160a01b031663ef7239cf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125c657600080fd5b505afa1580156125da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125fe9190810190615541565b60048054604051632ef5b44f60e11b81526001600160a01b0390911691635deb689e9161262d918f9101615d67565b60206040518083038186803b15801561264557600080fd5b505afa158015612659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061267d9190810190615541565b9063ffffffff61525616565b9063ffffffff61529016565b60048054604051633dfd41c360e21b815292935060009284926001600160a01b039092169163f7f5070c916126cc918b9101615d67565b60206040518083038186803b1580156126e457600080fd5b505afa1580156126f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061271c9190810190615541565b10905080156127e8576040516356273aed60e11b81526001600160a01b0386169063ac4e75da9061275290600590600401615a8c565b600060405180830381600087803b15801561276c57600080fd5b505af1158015612780573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038816925063ac4e75da91506127b190600390600401615937565b600060405180830381600087803b1580156127cb57600080fd5b505af11580156127df573d6000803e3d6000fd5b50505050612c8a565b846001600160a01b031663ac4e75da866001600160a01b031663204f83f96040518163ffffffff1660e01b815260040160206040518083038186803b15801561283057600080fd5b505afa158015612844573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128689190810190615541565b42016040518263ffffffff1660e01b81526004016128869190615a6d565b600060405180830381600087803b1580156128a057600080fd5b505af11580156128b4573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038816925063ac4e75da91506128e4906004908101615a8c565b600060405180830381600087803b1580156128fe57600080fd5b505af1158015612912573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038816925063ac4e75da915061294390600190600401615937565b600060405180830381600087803b15801561295d57600080fd5b505af1158015612971573d6000803e3d6000fd5b505050506000856001600160a01b0316631df4ccfc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129b057600080fd5b505afa1580156129c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129e89190810190615541565b90506000612a8685612689600260009054906101000a90046001600160a01b03166001600160a01b0316636702a3b06040518163ffffffff1660e01b815260040160206040518083038186803b158015612a4157600080fd5b505afa158015612a55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a799190810190615541565b859063ffffffff61525616565b9050866001600160a01b0316631d7935456040518163ffffffff1660e01b815260040160206040518083038186803b158015612ac157600080fd5b505afa158015612ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612af991908101906154da565b15612bc9576040516356273aed60e11b81526001600160a01b0388169063ac4e75da90612b2a9084906004016159b2565b600060405180830381600087803b158015612b4457600080fd5b505af1158015612b58573d6000803e3d6000fd5b5050506001600160a01b038816905063ac4e75da612b7684846152d2565b6040518263ffffffff1660e01b8152600401612b929190615b41565b600060405180830381600087803b158015612bac57600080fd5b505af1158015612bc0573d6000803e3d6000fd5b50505050612c87565b6040516356273aed60e11b81526001600160a01b0388169063ac4e75da90612bf6906000906004016159b2565b600060405180830381600087803b158015612c1057600080fd5b505af1158015612c24573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038a16925063ac4e75da9150612c54908590600401615b41565b600060405180830381600087803b158015612c6e57600080fd5b505af1158015612c82573d6000803e3d6000fd5b505050505b50505b50505050612d52565b6040516356273aed60e11b81526001600160a01b0382169063ac4e75da90612cc090600590600401615a8c565b600060405180830381600087803b158015612cda57600080fd5b505af1158015612cee573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038416925063ac4e75da9150612d1f90600390600401615937565b600060405180830381600087803b158015612d3957600080fd5b505af1158015612d4d573d6000803e3d6000fd5b505050505b60408051600081526020810191829052741a5b9d195c995cdd1099585c9a5b99d4195c9a5bd9605a1b916001600160a01b0384169133917fa071f6ee20c14dbcbea2f49f2bb5099d5fe3331ad2a8a52693d2d2f391c9b23f91612db4916156a0565b60405180910390a45050565b6000805460405163a90ffc2760e01b81526001600160a01b0390911691829163a90ffc2791612e02913391309190356001600160e01b031916906004016155fc565b60206040518083038186803b158015612e1a57600080fd5b505afa158015612e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e5291908101906154da565b612e6e5760405162461bcd60e51b81526004016103b590615bd8565b653937baba32b960d11b831415612e9f57600180546001600160a01b0319166001600160a01b038416179055612f4d565b65636f6e66696760d01b831415612ed057600280546001600160a01b0319166001600160a01b038416179055612f4d565b68636f72655574696c7360b81b831415612f0457600480546001600160a01b0319166001600160a01b038416179055612f4d565b656f7261636c6560d01b831415612f3557600380546001600160a01b0319166001600160a01b038416179055612f4d565b60405162461bcd60e51b81526004016103b5906159c9565b505050565b6001546001600160a01b031681565b6000805460405163a90ffc2760e01b81526001600160a01b0390911691829163a90ffc2791612fa3913391309190356001600160e01b031916906004016155fc565b60206040518083038186803b158015612fbb57600080fd5b505afa158015612fcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ff391908101906154da565b61300f5760405162461bcd60e51b81526004016103b590615bd8565b600061301a84612055565b9050806001600160a01b031663ac4e75da600260009054906101000a90046001600160a01b03166001600160a01b031663524c37e9846001600160a01b031663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561308857600080fd5b505afa15801561309c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506130c091908101906153c2565b6040518263ffffffff1660e01b81526004016130dc91906155e8565b60206040518083038186803b1580156130f457600080fd5b505afa158015613108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061312c9190810190615541565b6040518263ffffffff1660e01b815260040161314891906156b3565b600060405180830381600087803b15801561316257600080fd5b505af1158015613176573d6000803e3d6000fd5b505060048054604051630b76adbf60e41b81526001600160a01b03909116935063b76adbf092506131a991889101615d67565b60206040518083038186803b1580156131c157600080fd5b505afa1580156131d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131f99190810190615541565b8310156132185760405162461bcd60e51b81526004016103b590615c94565b806001600160a01b0316631d7935456040518163ffffffff1660e01b815260040160206040518083038186803b15801561325157600080fd5b505afa158015613265573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061328991908101906154da565b156134c1576040516356273aed60e11b81526001600160a01b0382169063ac4e75da906132bb90600190600401615a8c565b600060405180830381600087803b1580156132d557600080fd5b505af11580156132e9573d6000803e3d6000fd5b50505050806001600160a01b03166363349d5e600260009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561334a57600080fd5b505afa15801561335e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061338291908101906153c2565b6040518263ffffffff1660e01b815260040161339e91906156d6565b600060405180830381600087803b1580156133b857600080fd5b505af11580156133cc573d6000803e3d6000fd5b505050506000600260009054906101000a90046001600160a01b03166001600160a01b031663563644996040518163ffffffff1660e01b815260040160206040518083038186803b15801561342057600080fd5b505afa158015613434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506134589190810190615541565b6040516356273aed60e11b81529091506001600160a01b0383169063ac4e75da906134899042850190600401615918565b600060405180830381600087803b1580156134a357600080fd5b505af11580156134b7573d6000803e3d6000fd5b50505050506137bb565b6040516356273aed60e11b81526001600160a01b0382169063ac4e75da906134ee90600390600401615a8c565b600060405180830381600087803b15801561350857600080fd5b505af115801561351c573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038416925063ac4e75da915061354c904290600401615918565b600060405180830381600087803b15801561356657600080fd5b505af115801561357a573d6000803e3d6000fd5b50505050806001600160a01b031663ac4e75da600260009054906101000a90046001600160a01b03166001600160a01b031663188efdb36040518163ffffffff1660e01b815260040160206040518083038186803b1580156135db57600080fd5b505afa1580156135ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136139190810190615541565b42016040518263ffffffff1660e01b81526004016136319190615d46565b600060405180830381600087803b15801561364b57600080fd5b505af115801561365f573d6000803e3d6000fd5b50505050806001600160a01b031663ac4e75da826001600160a01b031663204f83f96040518163ffffffff1660e01b815260040160206040518083038186803b1580156136ab57600080fd5b505afa1580156136bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136e39190810190615541565b600260009054906101000a90046001600160a01b03166001600160a01b031663188efdb36040518163ffffffff1660e01b815260040160206040518083038186803b15801561373157600080fd5b505afa158015613745573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506137699190810190615541565b4201016040518263ffffffff1660e01b81526004016137889190615a6d565b600060405180830381600087803b1580156137a257600080fd5b505af11580156137b6573d6000803e3d6000fd5b505050505b806001600160a01b031663ac4e75da600260009054906101000a90046001600160a01b03166001600160a01b031663a06db7dc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561381857600080fd5b505afa15801561382c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506138509190810190615541565b6040518263ffffffff1660e01b815260040161386c9190615724565b600060405180830381600087803b15801561388657600080fd5b505af115801561389a573d6000803e3d6000fd5b50505050806001600160a01b031663ac4e75da600260009054906101000a90046001600160a01b03166001600160a01b031663ce068980846001600160a01b031663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561390a57600080fd5b505afa15801561391e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061394291908101906153c2565b6040518263ffffffff1660e01b815260040161395e91906155e8565b60206040518083038186803b15801561397657600080fd5b505afa15801561398a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506139ae9190810190615541565b6040518263ffffffff1660e01b81526004016139ca9190615979565b600060405180830381600087803b1580156139e457600080fd5b505af11580156139f8573d6000803e3d6000fd5b50505050806001600160a01b031663ac4e75da600260009054906101000a90046001600160a01b03166001600160a01b0316630cb8ca72846001600160a01b031663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b158015613a6857600080fd5b505afa158015613a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613aa091908101906153c2565b6040518263ffffffff1660e01b8152600401613abc91906155e8565b60206040518083038186803b158015613ad457600080fd5b505afa158015613ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613b0c9190810190615541565b6040518263ffffffff1660e01b8152600401613b289190615865565b600060405180830381600087803b158015613b4257600080fd5b505af1158015613b56573d6000803e3d6000fd5b50505050806001600160a01b031663ac4e75da600260009054906101000a90046001600160a01b03166001600160a01b03166395e11c22846001600160a01b0316630757dc886040518163ffffffff1660e01b815260040160206040518083038186803b158015613bc657600080fd5b505afa158015613bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613bfe91908101906153c2565b6040518263ffffffff1660e01b8152600401613c1a91906155e8565b60206040518083038186803b158015613c3257600080fd5b505afa158015613c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613c6a9190810190615541565b6040518263ffffffff1660e01b8152600401613c869190615ae0565b600060405180830381600087803b158015613ca057600080fd5b505af1158015613cb4573d6000803e3d6000fd5b50505050806001600160a01b031663ac4e75da613d0485846001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561174857600080fd5b6040518263ffffffff1660e01b8152600401613d209190615886565b600060405180830381600087803b158015613d3a57600080fd5b505af1158015613d4e573d6000803e3d6000fd5b5050505050505050565b6000805460405163a90ffc2760e01b81526001600160a01b0390911690819063a90ffc2790613d9a90339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b158015613db257600080fd5b505afa158015613dc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613dea91908101906154da565b613e065760405162461bcd60e51b81526004016103b590615bd8565b6000613e1184612055565b90506000613e1e85611026565b6001600160a01b031614158015613f1f57506007816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b158015613e6b57600080fd5b505afa158015613e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613ea39190810190615541565b1480613f1f57506009816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b158015613ee557600080fd5b505afa158015613ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613f1d9190810190615541565b145b613f3b5760405162461bcd60e51b81526004016103b590615cf1565b6040516348a3ea4760e11b81526000906001600160a01b03831690639147d48e90613f6a9089906004016155e8565b60206040518083038186803b158015613f8257600080fd5b505afa158015613f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613fba9190810190615541565b90506000600460009054906101000a90046001600160a01b03166001600160a01b0316639382717384856001600160a01b0316630757dc886040518163ffffffff1660e01b815260040160206040518083038186803b15801561401c57600080fd5b505afa158015614030573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061405491908101906153c2565b856040518463ffffffff1660e01b815260040161407393929190615629565b60206040518083038186803b15801561408b57600080fd5b505afa15801561409f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506140c39190810190615541565b600480546040516330ed822360e21b81529293506000926001600160a01b039091169163c3b6088c916140fa918b918d9101615d70565b60206040518083038186803b15801561411257600080fd5b505afa158015614126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061414a9190810190615541565b6040516302295fb560e21b81529091506001600160a01b038516906308a57ed49061417b908b90869060040161564d565b600060405180830381600087803b15801561419557600080fd5b505af11580156141a9573d6000803e3d6000fd5b50929a9950505050505050505050565b60008060008060006141ca88612055565b9050886001600160a01b0316816001600160a01b0316631d1438486040518163ffffffff1660e01b815260040160206040518083038186803b15801561420f57600080fd5b505afa158015614223573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061424791908101906153c2565b6001600160a01b0316141561426e5760405162461bcd60e51b81526004016103b5906156f6565b806001600160a01b031663334b3e486040518163ffffffff1660e01b815260040160206040518083038186803b1580156142a757600080fd5b505afa1580156142bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506142df91908101906154da565b1561438b576004805460405163659ec04160e01b81526000926001600160a01b039092169163659ec04191614316918d9101615d67565b60206040518083038186803b15801561432e57600080fd5b505afa158015614342573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061436691908101906154da565b9050806143855760405162461bcd60e51b81526004016103b590615b0a565b50614486565b600480546040516302db77e560e31b81526001600160a01b03909116916316dbbf28916143ba918c9101615d67565b60206040518083038186803b1580156143d257600080fd5b505afa1580156143e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061440a91908101906154da565b6144265760405162461bcd60e51b81526004016103b590615c0f565b6040516364a7231560e01b81526001600160a01b038216906364a723159061445390600190600401615666565b600060405180830381600087803b15801561446d57600080fd5b505af1158015614481573d6000803e3d6000fd5b505050505b6000816001600160a01b0316630757dc886040518163ffffffff1660e01b815260040160206040518083038186803b1580156144c157600080fd5b505afa1580156144d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506144f991908101906153c2565b6001600160a01b03166370a082318b6040518263ffffffff1660e01b815260040161452491906155e8565b60206040518083038186803b15801561453c57600080fd5b505afa158015614550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506145749190810190615541565b6004805460405163a63f6e5f60e01b81529293506000926001600160a01b039091169163a63f6e5f916145a9918e9101615d67565b60206040518083038186803b1580156145c157600080fd5b505afa1580156145d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506145f99190810190615541565b6004805460405163337229d960e01b81529293506000926001600160a01b039091169163337229d99161462e918f9101615d67565b60206040518083038186803b15801561464657600080fd5b505afa15801561465a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061467e9190810190615541565b90508983101580156146905750818a11155b6146ac5760405162461bcd60e51b81526004016103b590615aa9565b836001600160a01b031663705727b56040518163ffffffff1660e01b815260040160206040518083038186803b1580156146e557600080fd5b505afa1580156146f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061471d9190810190615541565b8a14806147a4575060016147a18b866001600160a01b031663705727b56040518163ffffffff1660e01b815260040160206040518083038186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061479c9190810190615541565b615314565b11155b8061481e5750836001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156147e357600080fd5b505afa1580156147f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061481b9190810190615541565b89145b806148e35750600480546040516373c9cac760e01b81526001600160a01b03909116916373c9cac791614853918f9101615d67565b60206040518083038186803b15801561486b57600080fd5b505afa15801561487f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506148a39190810190615541565b6148e08a866001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561476457600080fd5b11155b156149a7576040516356273aed60e11b81526001600160a01b0385169063ac4e75da9061491590600990600401615a8c565b600060405180830381600087803b15801561492f57600080fd5b505af1158015614943573d6000803e3d6000fd5b50506040516364a7231560e01b81526001600160a01b03871692506364a72315915061497490600090600401615666565b600060405180830381600087803b15801561498e57600080fd5b505af11580156149a2573d6000803e3d6000fd5b505050505b836001600160a01b031663705727b56040518163ffffffff1660e01b815260040160206040518083038186803b1580156149e057600080fd5b505afa1580156149f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614a189190810190615541565b8a1480614a6257506001614a5f8b866001600160a01b031663705727b56040518163ffffffff1660e01b815260040160206040518083038186803b15801561476457600080fd5b11155b15614c0357836001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b158015614aa057600080fd5b505afa158015614ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614ad89190810190615541565b891480614b9f5750600480546040516373c9cac760e01b81526001600160a01b03909116916373c9cac791614b0f918f9101615d67565b60206040518083038186803b158015614b2757600080fd5b505afa158015614b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614b5f9190810190615541565b614b9c8a866001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561476457600080fd5b11155b614c03576040516356273aed60e11b81526001600160a01b0385169063ac4e75da90614bd090600390600401615937565b600060405180830381600087803b158015614bea57600080fd5b505af1158015614bfe573d6000803e3d6000fd5b505050505b6001614c428b866001600160a01b031663705727b56040518163ffffffff1660e01b815260040160206040518083038186803b15801561476457600080fd5b11614cab576040516356273aed60e11b81526001600160a01b0385169063ac4e75da90614c7490600090600401615995565b600060405180830381600087803b158015614c8e57600080fd5b505af1158015614ca2573d6000803e3d6000fd5b50505050614d8a565b836001600160a01b031663ac4e75da614d3b8c876001600160a01b031663705727b56040518163ffffffff1660e01b815260040160206040518083038186803b158015614cf757600080fd5b505afa158015614d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614d2f9190810190615541565b9063ffffffff6152d216565b6040518263ffffffff1660e01b8152600401614d579190615995565b600060405180830381600087803b158015614d7157600080fd5b505af1158015614d85573d6000803e3d6000fd5b505050505b600480546040516373c9cac760e01b81526001600160a01b03909116916373c9cac791614db9918f9101615d67565b60206040518083038186803b158015614dd157600080fd5b505afa158015614de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614e099190810190615541565b614e468a866001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561476457600080fd5b11614eaf576040516356273aed60e11b81526001600160a01b0385169063ac4e75da90614e7890600090600401615886565b600060405180830381600087803b158015614e9257600080fd5b505af1158015614ea6573d6000803e3d6000fd5b50505050614f4a565b836001600160a01b031663ac4e75da614efb8b876001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b158015614cf757600080fd5b6040518263ffffffff1660e01b8152600401614f179190615886565b600060405180830381600087803b158015614f3157600080fd5b505af1158015614f45573d6000803e3d6000fd5b505050505b6004805460405163659ec04160e01b81526001600160a01b039091169163659ec04191614f79918f9101615d67565b60206040518083038186803b158015614f9157600080fd5b505afa158015614fa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614fc991908101906154da565b61502d576040516364a7231560e01b81526001600160a01b038516906364a7231590614ffa90600090600401615666565b600060405180830381600087803b15801561501457600080fd5b505af1158015615028573d6000803e3d6000fd5b505050505b60048054604051631e438f1960e01b81526001600160a01b0390911691631e438f199161505c918f9101615d67565b60206040518083038186803b15801561507457600080fd5b505afa158015615088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506150ac91908101906154da565b1561521b57836001600160a01b031663ac4e75da61516d866001600160a01b031663ddca3f436040518163ffffffff1660e01b815260040160206040518083038186803b1580156150fc57600080fd5b505afa158015615110573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506151349190810190615541565b876001600160a01b0316637b01c4bf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561174857600080fd5b6040518263ffffffff1660e01b81526004016151899190615b41565b600060405180830381600087803b1580156151a357600080fd5b505af11580156151b7573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038716925063ac4e75da91506151e8906000906004016159b2565b600060405180830381600087803b15801561520257600080fd5b505af1158015615216573d6000803e3d6000fd5b505050505b989b979a509850505050505050565b60008282018381101561524f5760405162461bcd60e51b81526004016103b590615789565b9392505050565b600082615265575060006110a7565b8282028284828161527257fe5b041461524f5760405162461bcd60e51b81526004016103b590615a00565b600061524f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615343565b600061524f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061537a565b6000818310156153335761532e828463ffffffff6152d216565b61524f565b61524f838363ffffffff6152d216565b600081836153645760405162461bcd60e51b81526004016103b591906156a0565b50600083858161537057fe5b0495945050505050565b6000818484111561539e5760405162461bcd60e51b81526004016103b591906156a0565b505050900390565b6000602082840312156153b7578081fd5b813561524f81615db0565b6000602082840312156153d3578081fd5b815161524f81615db0565b6000806000806000608086880312156153f5578081fd5b853561540081615db0565b9450602086013561541081615db0565b935060408601359250606086013567ffffffffffffffff80821115615433578283fd5b81880189601f820112615444578384fd5b8035925081831115615454578384fd5b896020848301011115615465578384fd5b6020810194505050809150509295509295909350565b6000806040838503121561548d578182fd5b823561549881615db0565b946020939093013593505050565b6000806000606084860312156154ba578283fd5b83356154c581615db0565b95602085013595506040909401359392505050565b6000602082840312156154eb578081fd5b8151801515811461524f578182fd5b6000806040838503121561550c578182fd5b82359150602083013561551e81615db0565b809150509250929050565b60006020828403121561553a578081fd5b5035919050565b600060208284031215615552578081fd5b5051919050565b6000806040838503121561556b578182fd5b50508035926020909101359150565b6000806040838503121561558c578182fd5b505080516020909101519092909150565b60008151808452815b818110156155c2576020818501810151868301820152016155a6565b818111156155d35782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006020825282602083015282846040840137818301604090810191909152601f909201601f19160101919050565b60006020825261524f602083018461559d565b6e6465706f7369744d756c7469706c6560881b8152602081019190915260400190565b6233b7bb60e91b81526001600160a01b0391909116602082015260400190565b60208082526014908201527363616e27742073656c662d6c697175696461746560601b604082015260600190565b6a19dc9858d954195c9a5bd960aa1b8152602081019190915260400190565b60208082526026908201527f696e76616c6964206973737565722c2074786f7574207374617465206f72206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526019908201527f696e76616c69642061646472657373206f722069737375657200000000000000604082015260600190565b60208082526019908201527f6d7573742063726f776466756e64696e67206661696c75726500000000000000604082015260600190565b6020808252601a908201527f696e76616c6964206f7665726475652063616c6c207374617465000000000000604082015260600190565b6c6c69717569646174654c696e6560981b8152602081019190915260400190565b6f626f72726f77416d6f756e744769766560801b8152602081019190915260400190565b6020808252600d908201526c626f6e64206f766572666c6f7760981b604082015260600190565b60208082526027908201527f6f6e6c792074786f75742063726f7764206f6e6365206f7220726571756972656040820152661034b9b9bab2b960c91b606082015260800190565b6a1d9bdd19515e1c1a5c995960aa1b8152602081019190915260400190565b6a697373756572537461676560a81b8152602081019190915260400190565b6e6f726967696e4c696162696c69747960881b8152602081019190915260400190565b67191a5cd8dbdd5b9d60c21b8152602081019190915260400190565b686c696162696c69747960b81b8152602081019190915260400190565b6266656560e81b8152602081019190915260400190565b6020808252601e908201527f736574436f7265506172616d416464726573733a20696e76616c6964206b0000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601290820152711a5b9d985b1a5908189bdb99105b5bdd5b9d60721b604082015260600190565b6a189bdb99115e1c1a5c995960aa1b8152602081019190915260400190565b68626f6e64537461676560b81b8152602081019190915260400190565b6020808252601a908201527f696e73756666696369656e74207931206f722062616c616e6365000000000000604082015260600190565b751c185c9d1a585b131a5c5d5a59185d19505b5bdd5b9d60521b8152602081019190915260400190565b6020808252601d908201527f696e206465706f7369744d756c7469706c652073616665207374617465000000604082015260600190565b681cde5cd41c9bd99a5d60ba1b8152602081019190915260400190565b602080825260159082015274185b1c9958591e4818db1bdcd959081a5b9d995cdd605a1b604082015260600190565b6020808252602b908201527f666f7262696464656e2073656c6620696e766573742c206f7220696e7665737460408201526a081a5cc8195e1c1a5c995960aa1b606082015260800190565b60208082526019908201527f636f72653a2061636365737320756e617574686f72697a656400000000000000604082015260600190565b6020808252600d908201526c696e207361666520737461746560981b604082015260600190565b6020808252600d908201526c696e76616c696420737461746560981b604082015260600190565b60208082526019908201527f6e6f20776974686472617761626c652073797350726f66697400000000000000604082015260600190565b6020808252601690820152751a5b9d985b1a590819195c1bdcda5d08185b5bdd5b9d60521b604082015260600190565b6020808252601390820152721a5b9d985b1a590819da5d9948185b5bdd5b9d606a1b604082015260600190565b602080825260169082015275756e7265706179206f7220756e6c697175696461746560501b604082015260600190565b6020808252600b908201526a1c995c5d5a5c99481050d360aa1b604082015260600190565b6c1a5b9d995cdd115e1c1a5c9959609a1b8152602081019190915260400190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6001600160a01b0381168114615dc557600080fd5b5056fea2646970667358221220036b02c33eeb4da67f8527a74041640124bfd21891fd9893976422acf4f0801364736f6c63430006000033000000000000000000000000063ad95a0fdc69269960a257c7e9bfa3629ac4dd000000000000000000000000fcef47934bec27b78f8c061d9a78cdaf0b19600100000000000000000000000076f4a2add5c81a739727a2bcaa1343f046d44d310000000000000000000000001ca7d106a1b74ac428d3da913fd30ebb2ff94f2a00000000000000000000000053345f3b9fcb873783ffa5c8f043233afd4991a60000000000000000000000001721460a888e7a6698909e61bd65f07865064f01
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806387f1b455116100c3578063b55be8021161007c578063b55be802146102a0578063bf8ef0b2146102b3578063d891e08e146102c6578063f887ea40146102d9578063f8906b73146102e1578063fc848c65146102f45761014d565b806387f1b4551461022c5780638c472b1b1461024c5780638db26fb11461025f57806393b25fa3146102725780639eade48114610285578063ac719f9e146102985761014d565b806376aad6051161011557806376aad605146101c9578063794bcf8a146101de57806379502c55146102015780637af53532146102095780637dc0d1d0146102115780637f6b590c146102195761014d565b8063027748f31461015257806327b916971461017b578063336289141461018e5780635ef05056146101a1578063733abbe2146101b4575b600080fd5b61016561016036600461547b565b610307565b6040516101729190615d67565b60405180910390f35b61016561018936600461547b565b6104c9565b61016561019c36600461547b565b6107df565b6101656101af36600461547b565b610b3e565b6101bc610e45565b60405161017291906155e8565b6101dc6101d73660046153a6565b610e54565b005b6101f16101ec3660046154a6565b610ea0565b6040516101729493929190615d95565b6101bc610ff9565b6101bc611008565b6101bc611017565b6101bc610227366004615529565b611026565b61023f61023a3660046154a6565b6110ad565b6040516101729190615666565b6101dc61025a366004615529565b6115e0565b61016561026d36600461547b565b611961565b61023f6102803660046154a6565b611e2d565b6101bc610293366004615529565b612055565b6101bc612060565b6101dc6102ae3660046153de565b61206f565b6101dc6102c1366004615529565b612173565b6101dc6102d43660046154fa565b612dc0565b6101bc612f52565b6101dc6102ef366004615559565b612f61565b61016561030236600461547b565b613d58565b6000805460405163a90ffc2760e01b81526001600160a01b0390911690819063a90ffc279061034990339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b15801561036157600080fd5b505afa158015610375573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061039991908101906154da565b6103be5760405162461bcd60e51b81526004016103b590615bd8565b60405180910390fd5b60006103c984612055565b90506000816001600160a01b0316637b01c4bf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561040657600080fd5b505afa15801561041a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061043e9190810190615541565b9050600081116104605760405162461bcd60e51b81526004016103b590615c5d565b6040516356273aed60e11b81526001600160a01b0383169063ac4e75da9061048d90600090600401615b41565b600060405180830381600087803b1580156104a757600080fd5b505af11580156104bb573d6000803e3d6000fd5b509298975050505050505050565b6000805460405163a90ffc2760e01b81526001600160a01b0390911690819063a90ffc279061050b90339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b15801561052357600080fd5b505afa158015610537573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061055b91908101906154da565b6105775760405162461bcd60e51b81526004016103b590615bd8565b600061058284612055565b9050600061058f85611026565b6001600160a01b0316141580156106275750846001600160a01b0316816001600160a01b0316631d1438486040518163ffffffff1660e01b815260040160206040518083038186803b1580156105e457600080fd5b505afa1580156105f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061061c91908101906153c2565b6001600160a01b0316145b80156106a357506003816001600160a01b031663d7982e166040518163ffffffff1660e01b815260040160206040518083038186803b15801561066957600080fd5b505afa15801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106a19190810190615541565b145b6106bf5760405162461bcd60e51b81526004016103b590615743565b6040516356273aed60e11b81526001600160a01b0382169063ac4e75da906106eb906004908101615937565b600060405180830381600087803b15801561070557600080fd5b505af1158015610719573d6000803e3d6000fd5b505050506000816001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561075857600080fd5b505afa15801561076c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107909190810190615541565b9050600081116107b25760405162461bcd60e51b81526004016103b590615cc4565b6040516356273aed60e11b81526001600160a01b0383169063ac4e75da9061048d90600090600401615886565b6000805460405163a90ffc2760e01b81526001600160a01b0390911690819063a90ffc279061082190339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b15801561083957600080fd5b505afa15801561084d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061087191908101906154da565b61088d5760405162461bcd60e51b81526004016103b590615bd8565b600061089884612055565b905060006108a585611026565b6001600160a01b03161415801561092c57506005816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b1580156108f257600080fd5b505afa158015610906573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061092a9190810190615541565b145b6109485760405162461bcd60e51b81526004016103b5906157f7565b6040516348a3ea4760e11b81526000906001600160a01b03831690639147d48e906109779089906004016155e8565b60206040518083038186803b15801561098f57600080fd5b505afa1580156109a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109c79190810190615541565b90506000600460009054906101000a90046001600160a01b03166001600160a01b0316639382717384856001600160a01b0316630757dc886040518163ffffffff1660e01b815260040160206040518083038186803b158015610a2957600080fd5b505afa158015610a3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a6191908101906153c2565b856040518463ffffffff1660e01b8152600401610a8093929190615629565b60206040518083038186803b158015610a9857600080fd5b505afa158015610aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ad09190810190615541565b6040516302295fb560e21b81529091506001600160a01b038416906308a57ed490610b01908a90859060040161564d565b600060405180830381600087803b158015610b1b57600080fd5b505af1158015610b2f573d6000803e3d6000fd5b50939998505050505050505050565b6000805460405163a90ffc2760e01b81526001600160a01b0390911690819063a90ffc2790610b8090339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b158015610b9857600080fd5b505afa158015610bac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bd091908101906154da565b610bec5760405162461bcd60e51b81526004016103b590615bd8565b6000610bf784612055565b90506000610c0485611026565b6001600160a01b031614158015610c8b57506001816001600160a01b031663d7982e166040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5157600080fd5b505afa158015610c65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c899190810190615541565b145b8015610d185750846001600160a01b0316816001600160a01b0316631d1438486040518163ffffffff1660e01b815260040160206040518083038186803b158015610cd557600080fd5b505afa158015610ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d0d91908101906153c2565b6001600160a01b0316145b610d345760405162461bcd60e51b81526004016103b5906158d1565b60048054604051630278b29760e51b81526000926001600160a01b0390921691634f1652e091610d6691899101615d67565b60206040518083038186803b158015610d7e57600080fd5b505afa158015610d92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610db69190810190615541565b6040516356273aed60e11b81529091506001600160a01b0383169063ac4e75da90610de690600290600401615937565b600060405180830381600087803b158015610e0057600080fd5b505af1158015610e14573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038516925063ac4e75da915061048d90600690600401615a8c565b6004546001600160a01b031681565b6000546001600160a01b03163314610e7e5760405162461bcd60e51b81526004016103b590615d21565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000805460405163a90ffc2760e01b81528291829182916001600160a01b031690819063a90ffc2790610ee690339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b158015610efe57600080fd5b505afa158015610f12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f3691908101906154da565b610f525760405162461bcd60e51b81526004016103b590615bd8565b60048054604051633a595a5560e21b815260009283926001600160a01b03169163e965695491610f86918d918d9101615d87565b604080518083038186803b158015610f9d57600080fd5b505afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fd5919081019061557a565b91509150610fe58a8a84846141b9565b965096509650965050505093509350935093565b6002546001600160a01b031681565b6000546001600160a01b031681565b6003546001600160a01b031681565b600154604051633ed0aabf60e11b81526000916001600160a01b031690637da1557e90611057908590600401615d67565b60206040518083038186803b15801561106f57600080fd5b505afa158015611083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506110a791908101906153c2565b92915050565b6000805460405163a90ffc2760e01b81526001600160a01b0390911690819063a90ffc27906110ef90339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b15801561110757600080fd5b505afa15801561111b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061113f91908101906154da565b61115b5760405162461bcd60e51b81526004016103b590615bd8565b600061116685612055565b9050600061117386611026565b6001600160a01b03161415801561120c5750806001600160a01b0316631d1438486040518163ffffffff1660e01b815260040160206040518083038186803b1580156111be57600080fd5b505afa1580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111f691908101906153c2565b6001600160a01b0316866001600160a01b031614155b80156112885750806001600160a01b031663f79f298f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561124c57600080fd5b505afa158015611260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506112849190810190615541565b4211155b801561130457506003816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b1580156112ca57600080fd5b505afa1580156112de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113029190810190615541565b145b6113205760405162461bcd60e51b81526004016103b590615b8d565b6000600460009054906101000a90046001600160a01b03166001600160a01b0316639382717383846001600160a01b0316630757dc886040518163ffffffff1660e01b815260040160206040518083038186803b15801561138057600080fd5b505afa158015611394573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113b891908101906153c2565b886040518463ffffffff1660e01b81526004016113d793929190615629565b60206040518083038186803b1580156113ef57600080fd5b505afa158015611403573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114279190810190615541565b90506000811180156114b75750600480546040516366048dc360e11b81526001600160a01b039091169163cc091b8691611463918a9101615d67565b60206040518083038186803b15801561147b57600080fd5b505afa15801561148f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114b39190810190615541565b8111155b6114d35760405162461bcd60e51b81526004016103b590615a41565b6040516319b8f56b60e21b81526001600160a01b038316906366e3d5ac90611501908a90859060040161564d565b600060405180830381600087803b15801561151b57600080fd5b505af115801561152f573d6000803e3d6000fd5b5050600480546040516366048dc360e11b8152600094506001600160a01b03909116925063cc091b8691611565918b9101615d67565b60206040518083038186803b15801561157d57600080fd5b505afa158015611591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506115b59190810190615541565b10156115d35760405162461bcd60e51b81526004016103b5906158aa565b5060019695505050505050565b6000805460405163a90ffc2760e01b81526001600160a01b0390911691829163a90ffc2791611622913391309190356001600160e01b031916906004016155fc565b60206040518083038186803b15801561163a57600080fd5b505afa15801561164e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061167291908101906154da565b61168e5760405162461bcd60e51b81526004016103b590615bd8565b600061169983612055565b905061178c816001600160a01b031663a06db7dc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116d757600080fd5b505afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061170f9190810190615541565b826001600160a01b03166345958de16040518163ffffffff1660e01b815260040160206040518083038186803b15801561174857600080fd5b505afa15801561175c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506117809190810190615541565b9063ffffffff61522a16565b421015801561188557506006816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b1580156117d157600080fd5b505afa1580156117e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118099190810190615541565b148061188557506004816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b15801561184b57600080fd5b505afa15801561185f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118839190810190615541565b145b6118a15760405162461bcd60e51b81526004016103b59061582e565b6040516356273aed60e11b81526001600160a01b0382169063ac4e75da906118ce90600890600401615a8c565b600060405180830381600087803b1580156118e857600080fd5b505af11580156118fc573d6000803e3d6000fd5b505060408051600081526020810191829052666f76657264756560c81b93506001600160a01b038516925033917fa071f6ee20c14dbcbea2f49f2bb5099d5fe3331ad2a8a52693d2d2f391c9b23f91611954916156a0565b60405180910390a4505050565b6000805460405163a90ffc2760e01b81526001600160a01b0390911690819063a90ffc27906119a390339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b1580156119bb57600080fd5b505afa1580156119cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119f391908101906154da565b611a0f5760405162461bcd60e51b81526004016103b590615bd8565b6000611a1a84611026565b6001600160a01b031614158015611aba5750836001600160a01b0316611a3f84612055565b6001600160a01b0316631d1438486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7757600080fd5b505afa158015611a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611aaf91908101906153c2565b6001600160a01b0316145b611ad65760405162461bcd60e51b81526004016103b5906157c0565b6000611ae184612055565b90506006816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1e57600080fd5b505afa158015611b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611b569190810190615541565b1480611bd257506008816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b158015611b9857600080fd5b505afa158015611bac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611bd09190810190615541565b145b611bee5760405162461bcd60e51b81526004016103b590615c36565b6000816001600160a01b031663705727b56040518163ffffffff1660e01b815260040160206040518083038186803b158015611c2957600080fd5b505afa158015611c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c619190810190615541565b6040516356273aed60e11b81529091506001600160a01b0383169063ac4e75da90611c9190600090600401615995565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038516925063ac4e75da9150611cf090600790600401615a8c565b600060405180830381600087803b158015611d0a57600080fd5b505af1158015611d1e573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038516925063ac4e75da9150611d4f90600390600401615937565b600060405180830381600087803b158015611d6957600080fd5b505af1158015611d7d573d6000803e3d6000fd5b50505050816001600160a01b031663334b3e486040518163ffffffff1660e01b815260040160206040518083038186803b158015611dba57600080fd5b505afa158015611dce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611df291908101906154da565b15611e24576040516364a7231560e01b81526001600160a01b038316906364a723159061048d90600090600401615666565b95945050505050565b6000805460405163a90ffc2760e01b81526001600160a01b0390911690819063a90ffc2790611e6f90339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b158015611e8757600080fd5b505afa158015611e9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ebf91908101906154da565b611edb5760405162461bcd60e51b81526004016103b590615bd8565b6000611ee685611026565b6001600160a01b031614158015611f865750846001600160a01b0316611f0b85612055565b6001600160a01b0316631d1438486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f4357600080fd5b505afa158015611f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611f7b91908101906153c2565b6001600160a01b0316145b611fa25760405162461bcd60e51b81526004016103b5906157c0565b6000611fad85612055565b9050806001600160a01b031663ac4e75da611ffb86846001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561174857600080fd5b6040518263ffffffff1660e01b81526004016120179190615886565b600060405180830381600087803b15801561203157600080fd5b505af1158015612045573d6000803e3d6000fd5b5060019998505050505050505050565b60006110a782611026565b6005546001600160a01b031681565b6000805460405163a90ffc2760e01b81526001600160a01b0390911691829163a90ffc27916120b1913391309190356001600160e01b031916906004016155fc565b60206040518083038186803b1580156120c957600080fd5b505afa1580156120dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061210191908101906154da565b61211d5760405162461bcd60e51b81526004016103b590615bd8565b83856001600160a01b0316876001600160a01b03167fa071f6ee20c14dbcbea2f49f2bb5099d5fe3331ad2a8a52693d2d2f391c9b23f8686604051612163929190615671565b60405180910390a4505050505050565b600061217e82612055565b9050600061218b83611026565b6001600160a01b03161415801561221257506003816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b1580156121d857600080fd5b505afa1580156121ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122109190810190615541565b145b80156123135750806001600160a01b031663f79f298f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561225257600080fd5b505afa158015612266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061228a9190810190615541565b4211806123135750600480546040516366048dc360e11b81526001600160a01b039091169163cc091b86916122c191869101615d67565b60206040518083038186803b1580156122d957600080fd5b505afa1580156122ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123119190810190615541565b155b61232f5760405162461bcd60e51b81526004016103b590615b5e565b60048054604051639ac7333960e01b81526001600160a01b0390911691639ac733399161235e91869101615d67565b60206040518083038186803b15801561237657600080fd5b505afa15801561238a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506123ae91908101906154da565b15612c9357600480546040516347c37f3f60e01b81526000926001600160a01b03909216916347c37f3f916123e591879101615d67565b60206040518083038186803b1580156123fd57600080fd5b505afa158015612411573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124359190810190615541565b6040516356273aed60e11b81529091506001600160a01b0383169063ac4e75da90612464908490600401615995565b600060405180830381600087803b15801561247e57600080fd5b505af1158015612492573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038516925063ac4e75da91506124c2908490600401615956565b600060405180830381600087803b1580156124dc57600080fd5b505af11580156124f0573d6000803e3d6000fd5b505050506000670de0b6b3a7640000905060006126956ec097ce7bc90715b34b9f1000000000612689866001600160a01b031663e33b15616040518163ffffffff1660e01b815260040160206040518083038186803b15801561255257600080fd5b505afa158015612566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061258a9190810190615541565b61267d886001600160a01b031663ef7239cf6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125c657600080fd5b505afa1580156125da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506125fe9190810190615541565b60048054604051632ef5b44f60e11b81526001600160a01b0390911691635deb689e9161262d918f9101615d67565b60206040518083038186803b15801561264557600080fd5b505afa158015612659573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061267d9190810190615541565b9063ffffffff61525616565b9063ffffffff61529016565b60048054604051633dfd41c360e21b815292935060009284926001600160a01b039092169163f7f5070c916126cc918b9101615d67565b60206040518083038186803b1580156126e457600080fd5b505afa1580156126f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061271c9190810190615541565b10905080156127e8576040516356273aed60e11b81526001600160a01b0386169063ac4e75da9061275290600590600401615a8c565b600060405180830381600087803b15801561276c57600080fd5b505af1158015612780573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038816925063ac4e75da91506127b190600390600401615937565b600060405180830381600087803b1580156127cb57600080fd5b505af11580156127df573d6000803e3d6000fd5b50505050612c8a565b846001600160a01b031663ac4e75da866001600160a01b031663204f83f96040518163ffffffff1660e01b815260040160206040518083038186803b15801561283057600080fd5b505afa158015612844573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128689190810190615541565b42016040518263ffffffff1660e01b81526004016128869190615a6d565b600060405180830381600087803b1580156128a057600080fd5b505af11580156128b4573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038816925063ac4e75da91506128e4906004908101615a8c565b600060405180830381600087803b1580156128fe57600080fd5b505af1158015612912573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038816925063ac4e75da915061294390600190600401615937565b600060405180830381600087803b15801561295d57600080fd5b505af1158015612971573d6000803e3d6000fd5b505050506000856001600160a01b0316631df4ccfc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129b057600080fd5b505afa1580156129c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506129e89190810190615541565b90506000612a8685612689600260009054906101000a90046001600160a01b03166001600160a01b0316636702a3b06040518163ffffffff1660e01b815260040160206040518083038186803b158015612a4157600080fd5b505afa158015612a55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612a799190810190615541565b859063ffffffff61525616565b9050866001600160a01b0316631d7935456040518163ffffffff1660e01b815260040160206040518083038186803b158015612ac157600080fd5b505afa158015612ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612af991908101906154da565b15612bc9576040516356273aed60e11b81526001600160a01b0388169063ac4e75da90612b2a9084906004016159b2565b600060405180830381600087803b158015612b4457600080fd5b505af1158015612b58573d6000803e3d6000fd5b5050506001600160a01b038816905063ac4e75da612b7684846152d2565b6040518263ffffffff1660e01b8152600401612b929190615b41565b600060405180830381600087803b158015612bac57600080fd5b505af1158015612bc0573d6000803e3d6000fd5b50505050612c87565b6040516356273aed60e11b81526001600160a01b0388169063ac4e75da90612bf6906000906004016159b2565b600060405180830381600087803b158015612c1057600080fd5b505af1158015612c24573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038a16925063ac4e75da9150612c54908590600401615b41565b600060405180830381600087803b158015612c6e57600080fd5b505af1158015612c82573d6000803e3d6000fd5b505050505b50505b50505050612d52565b6040516356273aed60e11b81526001600160a01b0382169063ac4e75da90612cc090600590600401615a8c565b600060405180830381600087803b158015612cda57600080fd5b505af1158015612cee573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038416925063ac4e75da9150612d1f90600390600401615937565b600060405180830381600087803b158015612d3957600080fd5b505af1158015612d4d573d6000803e3d6000fd5b505050505b60408051600081526020810191829052741a5b9d195c995cdd1099585c9a5b99d4195c9a5bd9605a1b916001600160a01b0384169133917fa071f6ee20c14dbcbea2f49f2bb5099d5fe3331ad2a8a52693d2d2f391c9b23f91612db4916156a0565b60405180910390a45050565b6000805460405163a90ffc2760e01b81526001600160a01b0390911691829163a90ffc2791612e02913391309190356001600160e01b031916906004016155fc565b60206040518083038186803b158015612e1a57600080fd5b505afa158015612e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e5291908101906154da565b612e6e5760405162461bcd60e51b81526004016103b590615bd8565b653937baba32b960d11b831415612e9f57600180546001600160a01b0319166001600160a01b038416179055612f4d565b65636f6e66696760d01b831415612ed057600280546001600160a01b0319166001600160a01b038416179055612f4d565b68636f72655574696c7360b81b831415612f0457600480546001600160a01b0319166001600160a01b038416179055612f4d565b656f7261636c6560d01b831415612f3557600380546001600160a01b0319166001600160a01b038416179055612f4d565b60405162461bcd60e51b81526004016103b5906159c9565b505050565b6001546001600160a01b031681565b6000805460405163a90ffc2760e01b81526001600160a01b0390911691829163a90ffc2791612fa3913391309190356001600160e01b031916906004016155fc565b60206040518083038186803b158015612fbb57600080fd5b505afa158015612fcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612ff391908101906154da565b61300f5760405162461bcd60e51b81526004016103b590615bd8565b600061301a84612055565b9050806001600160a01b031663ac4e75da600260009054906101000a90046001600160a01b03166001600160a01b031663524c37e9846001600160a01b031663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561308857600080fd5b505afa15801561309c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506130c091908101906153c2565b6040518263ffffffff1660e01b81526004016130dc91906155e8565b60206040518083038186803b1580156130f457600080fd5b505afa158015613108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061312c9190810190615541565b6040518263ffffffff1660e01b815260040161314891906156b3565b600060405180830381600087803b15801561316257600080fd5b505af1158015613176573d6000803e3d6000fd5b505060048054604051630b76adbf60e41b81526001600160a01b03909116935063b76adbf092506131a991889101615d67565b60206040518083038186803b1580156131c157600080fd5b505afa1580156131d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506131f99190810190615541565b8310156132185760405162461bcd60e51b81526004016103b590615c94565b806001600160a01b0316631d7935456040518163ffffffff1660e01b815260040160206040518083038186803b15801561325157600080fd5b505afa158015613265573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061328991908101906154da565b156134c1576040516356273aed60e11b81526001600160a01b0382169063ac4e75da906132bb90600190600401615a8c565b600060405180830381600087803b1580156132d557600080fd5b505af11580156132e9573d6000803e3d6000fd5b50505050806001600160a01b03166363349d5e600260009054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561334a57600080fd5b505afa15801561335e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061338291908101906153c2565b6040518263ffffffff1660e01b815260040161339e91906156d6565b600060405180830381600087803b1580156133b857600080fd5b505af11580156133cc573d6000803e3d6000fd5b505050506000600260009054906101000a90046001600160a01b03166001600160a01b031663563644996040518163ffffffff1660e01b815260040160206040518083038186803b15801561342057600080fd5b505afa158015613434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506134589190810190615541565b6040516356273aed60e11b81529091506001600160a01b0383169063ac4e75da906134899042850190600401615918565b600060405180830381600087803b1580156134a357600080fd5b505af11580156134b7573d6000803e3d6000fd5b50505050506137bb565b6040516356273aed60e11b81526001600160a01b0382169063ac4e75da906134ee90600390600401615a8c565b600060405180830381600087803b15801561350857600080fd5b505af115801561351c573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038416925063ac4e75da915061354c904290600401615918565b600060405180830381600087803b15801561356657600080fd5b505af115801561357a573d6000803e3d6000fd5b50505050806001600160a01b031663ac4e75da600260009054906101000a90046001600160a01b03166001600160a01b031663188efdb36040518163ffffffff1660e01b815260040160206040518083038186803b1580156135db57600080fd5b505afa1580156135ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136139190810190615541565b42016040518263ffffffff1660e01b81526004016136319190615d46565b600060405180830381600087803b15801561364b57600080fd5b505af115801561365f573d6000803e3d6000fd5b50505050806001600160a01b031663ac4e75da826001600160a01b031663204f83f96040518163ffffffff1660e01b815260040160206040518083038186803b1580156136ab57600080fd5b505afa1580156136bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506136e39190810190615541565b600260009054906101000a90046001600160a01b03166001600160a01b031663188efdb36040518163ffffffff1660e01b815260040160206040518083038186803b15801561373157600080fd5b505afa158015613745573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506137699190810190615541565b4201016040518263ffffffff1660e01b81526004016137889190615a6d565b600060405180830381600087803b1580156137a257600080fd5b505af11580156137b6573d6000803e3d6000fd5b505050505b806001600160a01b031663ac4e75da600260009054906101000a90046001600160a01b03166001600160a01b031663a06db7dc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561381857600080fd5b505afa15801561382c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506138509190810190615541565b6040518263ffffffff1660e01b815260040161386c9190615724565b600060405180830381600087803b15801561388657600080fd5b505af115801561389a573d6000803e3d6000fd5b50505050806001600160a01b031663ac4e75da600260009054906101000a90046001600160a01b03166001600160a01b031663ce068980846001600160a01b031663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b15801561390a57600080fd5b505afa15801561391e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061394291908101906153c2565b6040518263ffffffff1660e01b815260040161395e91906155e8565b60206040518083038186803b15801561397657600080fd5b505afa15801561398a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506139ae9190810190615541565b6040518263ffffffff1660e01b81526004016139ca9190615979565b600060405180830381600087803b1580156139e457600080fd5b505af11580156139f8573d6000803e3d6000fd5b50505050806001600160a01b031663ac4e75da600260009054906101000a90046001600160a01b03166001600160a01b0316630cb8ca72846001600160a01b031663b2016bd46040518163ffffffff1660e01b815260040160206040518083038186803b158015613a6857600080fd5b505afa158015613a7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613aa091908101906153c2565b6040518263ffffffff1660e01b8152600401613abc91906155e8565b60206040518083038186803b158015613ad457600080fd5b505afa158015613ae8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613b0c9190810190615541565b6040518263ffffffff1660e01b8152600401613b289190615865565b600060405180830381600087803b158015613b4257600080fd5b505af1158015613b56573d6000803e3d6000fd5b50505050806001600160a01b031663ac4e75da600260009054906101000a90046001600160a01b03166001600160a01b03166395e11c22846001600160a01b0316630757dc886040518163ffffffff1660e01b815260040160206040518083038186803b158015613bc657600080fd5b505afa158015613bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613bfe91908101906153c2565b6040518263ffffffff1660e01b8152600401613c1a91906155e8565b60206040518083038186803b158015613c3257600080fd5b505afa158015613c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613c6a9190810190615541565b6040518263ffffffff1660e01b8152600401613c869190615ae0565b600060405180830381600087803b158015613ca057600080fd5b505af1158015613cb4573d6000803e3d6000fd5b50505050806001600160a01b031663ac4e75da613d0485846001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561174857600080fd5b6040518263ffffffff1660e01b8152600401613d209190615886565b600060405180830381600087803b158015613d3a57600080fd5b505af1158015613d4e573d6000803e3d6000fd5b5050505050505050565b6000805460405163a90ffc2760e01b81526001600160a01b0390911690819063a90ffc2790613d9a90339030906001600160e01b0319883516906004016155fc565b60206040518083038186803b158015613db257600080fd5b505afa158015613dc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613dea91908101906154da565b613e065760405162461bcd60e51b81526004016103b590615bd8565b6000613e1184612055565b90506000613e1e85611026565b6001600160a01b031614158015613f1f57506007816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b158015613e6b57600080fd5b505afa158015613e7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613ea39190810190615541565b1480613f1f57506009816001600160a01b031663d7058e296040518163ffffffff1660e01b815260040160206040518083038186803b158015613ee557600080fd5b505afa158015613ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613f1d9190810190615541565b145b613f3b5760405162461bcd60e51b81526004016103b590615cf1565b6040516348a3ea4760e11b81526000906001600160a01b03831690639147d48e90613f6a9089906004016155e8565b60206040518083038186803b158015613f8257600080fd5b505afa158015613f96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613fba9190810190615541565b90506000600460009054906101000a90046001600160a01b03166001600160a01b0316639382717384856001600160a01b0316630757dc886040518163ffffffff1660e01b815260040160206040518083038186803b15801561401c57600080fd5b505afa158015614030573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061405491908101906153c2565b856040518463ffffffff1660e01b815260040161407393929190615629565b60206040518083038186803b15801561408b57600080fd5b505afa15801561409f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506140c39190810190615541565b600480546040516330ed822360e21b81529293506000926001600160a01b039091169163c3b6088c916140fa918b918d9101615d70565b60206040518083038186803b15801561411257600080fd5b505afa158015614126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061414a9190810190615541565b6040516302295fb560e21b81529091506001600160a01b038516906308a57ed49061417b908b90869060040161564d565b600060405180830381600087803b15801561419557600080fd5b505af11580156141a9573d6000803e3d6000fd5b50929a9950505050505050505050565b60008060008060006141ca88612055565b9050886001600160a01b0316816001600160a01b0316631d1438486040518163ffffffff1660e01b815260040160206040518083038186803b15801561420f57600080fd5b505afa158015614223573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061424791908101906153c2565b6001600160a01b0316141561426e5760405162461bcd60e51b81526004016103b5906156f6565b806001600160a01b031663334b3e486040518163ffffffff1660e01b815260040160206040518083038186803b1580156142a757600080fd5b505afa1580156142bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506142df91908101906154da565b1561438b576004805460405163659ec04160e01b81526000926001600160a01b039092169163659ec04191614316918d9101615d67565b60206040518083038186803b15801561432e57600080fd5b505afa158015614342573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061436691908101906154da565b9050806143855760405162461bcd60e51b81526004016103b590615b0a565b50614486565b600480546040516302db77e560e31b81526001600160a01b03909116916316dbbf28916143ba918c9101615d67565b60206040518083038186803b1580156143d257600080fd5b505afa1580156143e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061440a91908101906154da565b6144265760405162461bcd60e51b81526004016103b590615c0f565b6040516364a7231560e01b81526001600160a01b038216906364a723159061445390600190600401615666565b600060405180830381600087803b15801561446d57600080fd5b505af1158015614481573d6000803e3d6000fd5b505050505b6000816001600160a01b0316630757dc886040518163ffffffff1660e01b815260040160206040518083038186803b1580156144c157600080fd5b505afa1580156144d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506144f991908101906153c2565b6001600160a01b03166370a082318b6040518263ffffffff1660e01b815260040161452491906155e8565b60206040518083038186803b15801561453c57600080fd5b505afa158015614550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506145749190810190615541565b6004805460405163a63f6e5f60e01b81529293506000926001600160a01b039091169163a63f6e5f916145a9918e9101615d67565b60206040518083038186803b1580156145c157600080fd5b505afa1580156145d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506145f99190810190615541565b6004805460405163337229d960e01b81529293506000926001600160a01b039091169163337229d99161462e918f9101615d67565b60206040518083038186803b15801561464657600080fd5b505afa15801561465a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061467e9190810190615541565b90508983101580156146905750818a11155b6146ac5760405162461bcd60e51b81526004016103b590615aa9565b836001600160a01b031663705727b56040518163ffffffff1660e01b815260040160206040518083038186803b1580156146e557600080fd5b505afa1580156146f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061471d9190810190615541565b8a14806147a4575060016147a18b866001600160a01b031663705727b56040518163ffffffff1660e01b815260040160206040518083038186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061479c9190810190615541565b615314565b11155b8061481e5750836001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156147e357600080fd5b505afa1580156147f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061481b9190810190615541565b89145b806148e35750600480546040516373c9cac760e01b81526001600160a01b03909116916373c9cac791614853918f9101615d67565b60206040518083038186803b15801561486b57600080fd5b505afa15801561487f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506148a39190810190615541565b6148e08a866001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561476457600080fd5b11155b156149a7576040516356273aed60e11b81526001600160a01b0385169063ac4e75da9061491590600990600401615a8c565b600060405180830381600087803b15801561492f57600080fd5b505af1158015614943573d6000803e3d6000fd5b50506040516364a7231560e01b81526001600160a01b03871692506364a72315915061497490600090600401615666565b600060405180830381600087803b15801561498e57600080fd5b505af11580156149a2573d6000803e3d6000fd5b505050505b836001600160a01b031663705727b56040518163ffffffff1660e01b815260040160206040518083038186803b1580156149e057600080fd5b505afa1580156149f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614a189190810190615541565b8a1480614a6257506001614a5f8b866001600160a01b031663705727b56040518163ffffffff1660e01b815260040160206040518083038186803b15801561476457600080fd5b11155b15614c0357836001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b158015614aa057600080fd5b505afa158015614ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614ad89190810190615541565b891480614b9f5750600480546040516373c9cac760e01b81526001600160a01b03909116916373c9cac791614b0f918f9101615d67565b60206040518083038186803b158015614b2757600080fd5b505afa158015614b3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614b5f9190810190615541565b614b9c8a866001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561476457600080fd5b11155b614c03576040516356273aed60e11b81526001600160a01b0385169063ac4e75da90614bd090600390600401615937565b600060405180830381600087803b158015614bea57600080fd5b505af1158015614bfe573d6000803e3d6000fd5b505050505b6001614c428b866001600160a01b031663705727b56040518163ffffffff1660e01b815260040160206040518083038186803b15801561476457600080fd5b11614cab576040516356273aed60e11b81526001600160a01b0385169063ac4e75da90614c7490600090600401615995565b600060405180830381600087803b158015614c8e57600080fd5b505af1158015614ca2573d6000803e3d6000fd5b50505050614d8a565b836001600160a01b031663ac4e75da614d3b8c876001600160a01b031663705727b56040518163ffffffff1660e01b815260040160206040518083038186803b158015614cf757600080fd5b505afa158015614d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614d2f9190810190615541565b9063ffffffff6152d216565b6040518263ffffffff1660e01b8152600401614d579190615995565b600060405180830381600087803b158015614d7157600080fd5b505af1158015614d85573d6000803e3d6000fd5b505050505b600480546040516373c9cac760e01b81526001600160a01b03909116916373c9cac791614db9918f9101615d67565b60206040518083038186803b158015614dd157600080fd5b505afa158015614de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614e099190810190615541565b614e468a866001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561476457600080fd5b11614eaf576040516356273aed60e11b81526001600160a01b0385169063ac4e75da90614e7890600090600401615886565b600060405180830381600087803b158015614e9257600080fd5b505af1158015614ea6573d6000803e3d6000fd5b50505050614f4a565b836001600160a01b031663ac4e75da614efb8b876001600160a01b0316630262146c6040518163ffffffff1660e01b815260040160206040518083038186803b158015614cf757600080fd5b6040518263ffffffff1660e01b8152600401614f179190615886565b600060405180830381600087803b158015614f3157600080fd5b505af1158015614f45573d6000803e3d6000fd5b505050505b6004805460405163659ec04160e01b81526001600160a01b039091169163659ec04191614f79918f9101615d67565b60206040518083038186803b158015614f9157600080fd5b505afa158015614fa5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250614fc991908101906154da565b61502d576040516364a7231560e01b81526001600160a01b038516906364a7231590614ffa90600090600401615666565b600060405180830381600087803b15801561501457600080fd5b505af1158015615028573d6000803e3d6000fd5b505050505b60048054604051631e438f1960e01b81526001600160a01b0390911691631e438f199161505c918f9101615d67565b60206040518083038186803b15801561507457600080fd5b505afa158015615088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506150ac91908101906154da565b1561521b57836001600160a01b031663ac4e75da61516d866001600160a01b031663ddca3f436040518163ffffffff1660e01b815260040160206040518083038186803b1580156150fc57600080fd5b505afa158015615110573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506151349190810190615541565b876001600160a01b0316637b01c4bf6040518163ffffffff1660e01b815260040160206040518083038186803b15801561174857600080fd5b6040518263ffffffff1660e01b81526004016151899190615b41565b600060405180830381600087803b1580156151a357600080fd5b505af11580156151b7573d6000803e3d6000fd5b50506040516356273aed60e11b81526001600160a01b038716925063ac4e75da91506151e8906000906004016159b2565b600060405180830381600087803b15801561520257600080fd5b505af1158015615216573d6000803e3d6000fd5b505050505b989b979a509850505050505050565b60008282018381101561524f5760405162461bcd60e51b81526004016103b590615789565b9392505050565b600082615265575060006110a7565b8282028284828161527257fe5b041461524f5760405162461bcd60e51b81526004016103b590615a00565b600061524f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615343565b600061524f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061537a565b6000818310156153335761532e828463ffffffff6152d216565b61524f565b61524f838363ffffffff6152d216565b600081836153645760405162461bcd60e51b81526004016103b591906156a0565b50600083858161537057fe5b0495945050505050565b6000818484111561539e5760405162461bcd60e51b81526004016103b591906156a0565b505050900390565b6000602082840312156153b7578081fd5b813561524f81615db0565b6000602082840312156153d3578081fd5b815161524f81615db0565b6000806000806000608086880312156153f5578081fd5b853561540081615db0565b9450602086013561541081615db0565b935060408601359250606086013567ffffffffffffffff80821115615433578283fd5b81880189601f820112615444578384fd5b8035925081831115615454578384fd5b896020848301011115615465578384fd5b6020810194505050809150509295509295909350565b6000806040838503121561548d578182fd5b823561549881615db0565b946020939093013593505050565b6000806000606084860312156154ba578283fd5b83356154c581615db0565b95602085013595506040909401359392505050565b6000602082840312156154eb578081fd5b8151801515811461524f578182fd5b6000806040838503121561550c578182fd5b82359150602083013561551e81615db0565b809150509250929050565b60006020828403121561553a578081fd5b5035919050565b600060208284031215615552578081fd5b5051919050565b6000806040838503121561556b578182fd5b50508035926020909101359150565b6000806040838503121561558c578182fd5b505080516020909101519092909150565b60008151808452815b818110156155c2576020818501810151868301820152016155a6565b818111156155d35782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b60006020825282602083015282846040840137818301604090810191909152601f909201601f19160101919050565b60006020825261524f602083018461559d565b6e6465706f7369744d756c7469706c6560881b8152602081019190915260400190565b6233b7bb60e91b81526001600160a01b0391909116602082015260400190565b60208082526014908201527363616e27742073656c662d6c697175696461746560601b604082015260600190565b6a19dc9858d954195c9a5bd960aa1b8152602081019190915260400190565b60208082526026908201527f696e76616c6964206973737565722c2074786f7574207374617465206f72206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526019908201527f696e76616c69642061646472657373206f722069737375657200000000000000604082015260600190565b60208082526019908201527f6d7573742063726f776466756e64696e67206661696c75726500000000000000604082015260600190565b6020808252601a908201527f696e76616c6964206f7665726475652063616c6c207374617465000000000000604082015260600190565b6c6c69717569646174654c696e6560981b8152602081019190915260400190565b6f626f72726f77416d6f756e744769766560801b8152602081019190915260400190565b6020808252600d908201526c626f6e64206f766572666c6f7760981b604082015260600190565b60208082526027908201527f6f6e6c792074786f75742063726f7764206f6e6365206f7220726571756972656040820152661034b9b9bab2b960c91b606082015260800190565b6a1d9bdd19515e1c1a5c995960aa1b8152602081019190915260400190565b6a697373756572537461676560a81b8152602081019190915260400190565b6e6f726967696e4c696162696c69747960881b8152602081019190915260400190565b67191a5cd8dbdd5b9d60c21b8152602081019190915260400190565b686c696162696c69747960b81b8152602081019190915260400190565b6266656560e81b8152602081019190915260400190565b6020808252601e908201527f736574436f7265506172616d416464726573733a20696e76616c6964206b0000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252601290820152711a5b9d985b1a5908189bdb99105b5bdd5b9d60721b604082015260600190565b6a189bdb99115e1c1a5c995960aa1b8152602081019190915260400190565b68626f6e64537461676560b81b8152602081019190915260400190565b6020808252601a908201527f696e73756666696369656e74207931206f722062616c616e6365000000000000604082015260600190565b751c185c9d1a585b131a5c5d5a59185d19505b5bdd5b9d60521b8152602081019190915260400190565b6020808252601d908201527f696e206465706f7369744d756c7469706c652073616665207374617465000000604082015260600190565b681cde5cd41c9bd99a5d60ba1b8152602081019190915260400190565b602080825260159082015274185b1c9958591e4818db1bdcd959081a5b9d995cdd605a1b604082015260600190565b6020808252602b908201527f666f7262696464656e2073656c6620696e766573742c206f7220696e7665737460408201526a081a5cc8195e1c1a5c995960aa1b606082015260800190565b60208082526019908201527f636f72653a2061636365737320756e617574686f72697a656400000000000000604082015260600190565b6020808252600d908201526c696e207361666520737461746560981b604082015260600190565b6020808252600d908201526c696e76616c696420737461746560981b604082015260600190565b60208082526019908201527f6e6f20776974686472617761626c652073797350726f66697400000000000000604082015260600190565b6020808252601690820152751a5b9d985b1a590819195c1bdcda5d08185b5bdd5b9d60521b604082015260600190565b6020808252601390820152721a5b9d985b1a590819da5d9948185b5bdd5b9d606a1b604082015260600190565b602080825260169082015275756e7265706179206f7220756e6c697175696461746560501b604082015260600190565b6020808252600b908201526a1c995c5d5a5c99481050d360aa1b604082015260600190565b6c1a5b9d995cdd115e1c1a5c9959609a1b8152602081019190915260400190565b90815260200190565b9182526001600160a01b0316602082015260400190565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b6001600160a01b0381168114615dc557600080fd5b5056fea2646970667358221220036b02c33eeb4da67f8527a74041640124bfd21891fd9893976422acf4f0801364736f6c63430006000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000063ad95a0fdc69269960a257c7e9bfa3629ac4dd000000000000000000000000fcef47934bec27b78f8c061d9a78cdaf0b19600100000000000000000000000076f4a2add5c81a739727a2bcaa1343f046d44d310000000000000000000000001ca7d106a1b74ac428d3da913fd30ebb2ff94f2a00000000000000000000000053345f3b9fcb873783ffa5c8f043233afd4991a60000000000000000000000001721460a888e7a6698909e61bd65f07865064f01
-----Decoded View---------------
Arg [0] : _ACL (address): 0x063Ad95a0fdc69269960a257c7E9BFa3629AC4dD
Arg [1] : _router (address): 0xfCef47934bec27B78f8c061d9a78CdAf0B196001
Arg [2] : _config (address): 0x76F4A2add5C81a739727A2bCaA1343F046d44D31
Arg [3] : _coreUtils (address): 0x1cA7D106A1B74Ac428D3dA913Fd30eBB2fF94f2A
Arg [4] : _oracle (address): 0x53345F3B9FCb873783FfA5C8F043233AfD4991a6
Arg [5] : _nameGen (address): 0x1721460A888e7a6698909e61bD65F07865064f01
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000063ad95a0fdc69269960a257c7e9bfa3629ac4dd
Arg [1] : 000000000000000000000000fcef47934bec27b78f8c061d9a78cdaf0b196001
Arg [2] : 00000000000000000000000076f4a2add5c81a739727a2bcaa1343f046d44d31
Arg [3] : 0000000000000000000000001ca7d106a1b74ac428d3da913fd30ebb2ff94f2a
Arg [4] : 00000000000000000000000053345f3b9fcb873783ffa5c8f043233afd4991a6
Arg [5] : 0000000000000000000000001721460a888e7a6698909e61bd65f07865064f01
Deployed Bytecode Sourcemap
36145:16026:0:-:0;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36145:16026:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51860:308;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;46592:743;;;;;;;;;:::i;47401:740::-;;;;;;;;;:::i;43982:622::-;;;;;;;;;:::i;36343:27::-;;;:::i;:::-;;;;;;;;37485:130;;;;;;;;;:::i;:::-;;51551:275;;;;;;;;;:::i;:::-;;;;;;;;;;;36287:21;;;:::i;36234:18::-;;;:::i;36315:21::-;;;:::i;37623:118::-;;;;;;;;;:::i;40416:978::-;;;;;;;;;:::i;:::-;;;;;;;;44612:460;;;;;;;;;:::i;45214:1160::-;;;;;;;;;:::i;39750:549::-;;;;;;;;;:::i;37749:104::-;;;;;;;;;:::i;36377:22::-;;;:::i;37964:179::-;;;;;;;;;:::i;41436:2466::-;;;;;;;;;:::i;36951:526::-;;;;;;;;;:::i;36259:21::-;;;:::i;38151:1528::-;;;;;;;;;:::i;48201:888::-;;;;;;;;;:::i;51860:308::-;51937:7;36450:3;;36473:51;;-1:-1:-1;;;36473:51:0;;-1:-1:-1;;;;;36450:3:0;;;;;;36473:15;;:51;;36489:10;;36509:4;;-1:-1:-1;;;;;;36516:7:0;;;;36473:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36473:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36473:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36473:51:0;;;;;;;;;36465:89;;;;-1:-1:-1;;;36465:89:0;;;;;;;;;;;;;;;;;51957:11:::1;51971:12;51980:2;51971:8;:12::i;:::-;51957:26;;51994:18;52015:1;-1:-1:-1::0;;;;;52015:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;52015:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;52015:13:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;52015:13:0;;;;;;;;;51994:34;;52060:1;52047:10;:14;52039:52;;;;-1:-1:-1::0;;;52039:52:0::1;;;;;;;;;52102:30;::::0;-1:-1:-1;;;52102:30:0;;-1:-1:-1;;;;;52102:14:0;::::1;::::0;::::1;::::0;:30:::1;::::0;52130:1:::1;::::0;52102:30:::1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;52102:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;52150:10:0;;51860:308;-1:-1:-1;;;;;;;;51860:308:0:o;46592:743::-;46664:4;36450:3;;36473:51;;-1:-1:-1;;;36473:51:0;;-1:-1:-1;;;;;36450:3:0;;;;;;36473:15;;:51;;36489:10;;36509:4;;-1:-1:-1;;;;;;36516:7:0;;;;36473:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36473:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36473:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36473:51:0;;;;;;;;;36465:89;;;;-1:-1:-1;;;36465:89:0;;;;;;;;;46681:11:::1;46695:12;46704:2;46695:8;:12::i;:::-;46681:26:::0;-1:-1:-1;46743:1:0::1;46726:5;46728:2:::0;46726:1:::1;:5::i;:::-;-1:-1:-1::0;;;;;46726:19:0::1;;;:54;;;;;46777:3;-1:-1:-1::0;;;;;46763:17:0::1;:1;-1:-1:-1::0;;;;;46763:8:0::1;;:10;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;46763:10:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;46763:10:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;46763:10:0;;;;;;;;;-1:-1:-1::0;;;;;46763:17:0::1;;46726:54;:125;;;;-1:-1:-1::0;46824:26:0::1;46797:1;-1:-1:-1::0;;;;;46797:13:0::1;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;46797:15:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;46797:15:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;46797:15:0;;;;;;;;;:54;46726:125;46718:176;;;;-1:-1:-1::0;;;46718:176:0::1;;;;;;;;;46907:71;::::0;-1:-1:-1;;;46907:71:0;;-1:-1:-1;;;;;46907:14:0;::::1;::::0;::::1;::::0;:71:::1;::::0;46945:31:::1;::::0;46907:71;::::1;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;46907:71:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;46907:71:0;;;;46989:18;47010:1;-1:-1:-1::0;;;;;47010:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;47010:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;47010:23:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;47010:23:0;;;;;;;;;46989:44;;47197:1;47184:10;:14;47176:46;;;;-1:-1:-1::0;;;47176:46:0::1;;;;;;;;;47233:37;::::0;-1:-1:-1;;;47233:37:0;;-1:-1:-1;;;;;47233:14:0;::::1;::::0;::::1;::::0;:37:::1;::::0;47268:1:::1;::::0;47233:37:::1;;;;47401:740:::0;47505:7;36450:3;;36473:51;;-1:-1:-1;;;36473:51:0;;-1:-1:-1;;;;;36450:3:0;;;;;;36473:15;;:51;;36489:10;;36509:4;;-1:-1:-1;;;;;;36516:7:0;;;;36473:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36473:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36473:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36473:51:0;;;;;;;;;36465:89;;;;-1:-1:-1;;;36465:89:0;;;;;;;;;47530:11:::1;47544:12;47553:2;47544:8;:12::i;:::-;47530:26:::0;-1:-1:-1;47642:1:0::1;47625:5;47627:2:::0;47625:1:::1;:5::i;:::-;-1:-1:-1::0;;;;;47625:19:0::1;;;:86;;;;-1:-1:-1::0;47684:26:0::1;47662:1;-1:-1:-1::0;;;;;47662:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;47662:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;47662:13:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;47662:13:0;;;;;;;;;:49;47625:86;47617:147;;;;-1:-1:-1::0;;;47617:147:0::1;;;;;;;;;47800:22;::::0;-1:-1:-1;;;47800:22:0;;47778:18:::1;::::0;-1:-1:-1;;;;;47800:17:0;::::1;::::0;::::1;::::0;:22:::1;::::0;47818:3;;47800:22:::1;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;47800:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;47800:22:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;47800:22:0;;;;;;;;;47777:45;;47924:18;47945:9;;;;;;;;;-1:-1:-1::0;;;;;47945:9:0::1;-1:-1:-1::0;;;;;47945:28:0::1;;47996:1;48013;-1:-1:-1::0;;;;;48013:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;48013:14:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;48013:14:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;48013:14:0;;;;;;;;;48042:10;47945:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;47945:118:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;47945:118:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;47945:118:0;;;;;;;;;48074:27;::::0;-1:-1:-1;;;48074:27:0;;47924:139;;-1:-1:-1;;;;;;48074:10:0;::::1;::::0;::::1;::::0;:27:::1;::::0;48085:3;;47924:139;;48074:27:::1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;48074:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;48123:10:0;;47401:740;-1:-1:-1;;;;;;;;;47401:740:0:o;43982:622::-;44052:4;36450:3;;36473:51;;-1:-1:-1;;;36473:51:0;;-1:-1:-1;;;;;36450:3:0;;;;;;36473:15;;:51;;36489:10;;36509:4;;-1:-1:-1;;;;;;36516:7:0;;;;36473:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36473:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36473:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36473:51:0;;;;;;;;;36465:89;;;;-1:-1:-1;;;36465:89:0;;;;;;;;;44069:11:::1;44093:12;44102:2;44093:8;:12::i;:::-;44069:37:::0;-1:-1:-1;44142:1:0::1;44125:5;44127:2:::0;44125:1:::1;:5::i;:::-;-1:-1:-1::0;;;;;44125:19:0::1;;;:75;;;;-1:-1:-1::0;44172:27:0::1;44148:1;-1:-1:-1::0;;;;;44148:13:0::1;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;44148:15:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;44148:15:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;44148:15:0;;;;;;;;;:52;44125:75;:96;;;;;44218:3;-1:-1:-1::0;;;;;44204:17:0::1;:1;-1:-1:-1::0;;;;;44204:8:0::1;;:10;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;44204:10:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;44204:10:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;44204:10:0;;;;;;;;;-1:-1:-1::0;;;;;44204:17:0::1;;44125:96;44117:148;;;;-1:-1:-1::0;;;44117:148:0::1;;;;;;;;;44298:9;::::0;;:32:::1;::::0;-1:-1:-1;;;44298:32:0;;44280:15:::1;::::0;-1:-1:-1;;;;;44298:9:0;;::::1;::::0;:28:::1;::::0;:32:::1;::::0;44327:2;;44298:32:::1;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;44298:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;44298:32:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;44298:32:0;;;;;;;;;44431:72;::::0;-1:-1:-1;;;44431:72:0;;44280:50;;-1:-1:-1;;;;;;44431:14:0;::::1;::::0;::::1;::::0;:72:::1;::::0;44469:32:::1;::::0;44431:72:::1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;44431:72:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;44514:55:0::1;::::0;-1:-1:-1;;;44514:55:0;;-1:-1:-1;;;;;44514:14:0;::::1;::::0;-1:-1:-1;44514:14:0::1;::::0;-1:-1:-1;44514:55:0::1;::::0;44550:17:::1;::::0;44514:55:::1;;;;36343:27:::0;;;-1:-1:-1;;;;;36343:27:0;;:::o;37485:130::-;37567:3;;-1:-1:-1;;;;;37567:3:0;37553:10;:17;37545:41;;;;-1:-1:-1;;;37545:41:0;;;;;;;;;37597:3;:10;;-1:-1:-1;;;;;;37597:10:0;-1:-1:-1;;;;;37597:10:0;;;;;;;;;;37485:130::o;51551:275::-;51659:7;36450:3;;36473:51;;-1:-1:-1;;;36473:51:0;;51659:7;;;;;;-1:-1:-1;;;;;36450:3:0;;;;36473:15;;:51;;36489:10;;36509:4;;-1:-1:-1;;;;;;36516:7:0;;;;36473:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36473:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36473:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36473:51:0;;;;;;;;;36465:89;;;;-1:-1:-1;;;36465:89:0;;;;;;;;;51730:9:::1;::::0;;:36:::1;::::0;-1:-1:-1;;;51730:36:0;;51712:6:::1;::::0;;;-1:-1:-1;;;;;51730:9:0::1;::::0;:28:::1;::::0;:36:::1;::::0;51759:2;;51763;;51730:36:::1;;;;;::::0;::::1;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;51730:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;51730:36:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;51730:36:0;;;;;;;;;51711:55;;;;51786:32;51804:3;51809:2;51813:1;51816;51786:17;:32::i;:::-;51779:39;;;;;;;;;;51551:275:::0;;;;;;;;:::o;36287:21::-;;;-1:-1:-1;;;;;36287:21:0;;:::o;36234:18::-;;;-1:-1:-1;;;;;36234:18:0;;:::o;36315:21::-;;;-1:-1:-1;;;;;36315:21:0;;:::o;37623:118::-;37702:6;;37694:39;;-1:-1:-1;;;37694:39:0;;37667:7;;-1:-1:-1;;;;;37702:6:0;;37694:35;;:39;;37730:2;;37694:39;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37694:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37694:39:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;37694:39:0;;;;;;;;;37687:46;37623:118;-1:-1:-1;;37623:118:0:o;40416:978::-;40525:4;36450:3;;36473:51;;-1:-1:-1;;;36473:51:0;;-1:-1:-1;;;;;36450:3:0;;;;;;36473:15;;:51;;36489:10;;36509:4;;-1:-1:-1;;;;;;36516:7:0;;;;36473:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36473:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36473:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36473:51:0;;;;;;;;;36465:89;;;;-1:-1:-1;;;36465:89:0;;;;;;;;;40547:11:::1;40561:12;40570:2;40561:8;:12::i;:::-;40547:26:::0;-1:-1:-1;40609:1:0::1;40592:5;40594:2:::0;40592:1:::1;:5::i;:::-;-1:-1:-1::0;;;;;40592:19:0::1;;;:54;;;;;40636:1;-1:-1:-1::0;;;;;40636:8:0::1;;:10;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;40636:10:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;40636:10:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;40636:10:0;;;;;;;;;-1:-1:-1::0;;;;;40629:17:0::1;:3;-1:-1:-1::0;;;;;40629:17:0::1;;;40592:54;:96;;;;;40671:1;-1:-1:-1::0;;;;;40671:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;40671:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;40671:17:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;40671:17:0;;;;;;;;;40664:3;:24;;40592:96;:158;;;;-1:-1:-1::0;40727:22:0::1;40705:1;-1:-1:-1::0;;;;;40705:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;40705:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;40705:13:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;40705:13:0;;;;;;;;;:45;40592:158;40584:214;;;;-1:-1:-1::0;;;40584:214:0::1;;;;;;;;;40809:18;40830:9;;;;;;;;;-1:-1:-1::0;;;;;40830:9:0::1;-1:-1:-1::0;;;;;40830:28:0::1;;40867:1;40871;-1:-1:-1::0;;;;;40871:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;40871:14:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;40871:14:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;40871:14:0;;;;;;;;;40887:6;40830:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;40830:64:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;40830:64:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;40830:64:0;;;;;;;;;40809:85;;40988:1;40975:10;:14;:64;;;;-1:-1:-1::0;41007:9:0::1;::::0;;:32:::1;::::0;-1:-1:-1;;;41007:32:0;;-1:-1:-1;;;;;41007:9:0;;::::1;::::0;:28:::1;::::0;:32:::1;::::0;41036:2;;41007:32:::1;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;41007:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;41007:32:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;41007:32:0;;;;;;;;;40993:10;:46;;40975:64;40953:132;;;;-1:-1:-1::0;;;40953:132:0::1;;;;;;;;;41096:27;::::0;-1:-1:-1;;;41096:27:0;;-1:-1:-1;;;;;41096:10:0;::::1;::::0;::::1;::::0;:27:::1;::::0;41107:3;;41112:10;;41096:27:::1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;41096:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;41305:9:0::1;::::0;;:32:::1;::::0;-1:-1:-1;;;41305:32:0;;41341:1:::1;::::0;-1:-1:-1;;;;;;41305:9:0;;::::1;::::0;-1:-1:-1;41305:28:0::1;::::0;:32:::1;::::0;41334:2;;41305:32:::1;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;41305:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;41305:32:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;41305:32:0;;;;;;;;;:37;;41297:63;;;;-1:-1:-1::0;;;41297:63:0::1;;;;;;;;;-1:-1:-1::0;41382:4:0::1;::::0;40416:978;-1:-1:-1;;;;;;40416:978:0:o;44612:460::-;36433:9;36450:3;;36473:51;;-1:-1:-1;;;36473:51:0;;-1:-1:-1;;;;;36450:3:0;;;;;;36473:15;;:51;;36489:10;;36509:4;;36516:7;;-1:-1:-1;;;;;;36516:7:0;;36473:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36473:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36473:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36473:51:0;;;;;;;;;36465:89;;;;-1:-1:-1;;;36465:89:0;;;;;;;;;44668:11:::1;44692:12;44701:2;44692:8;:12::i;:::-;44668:37;;44731:36;44751:1;-1:-1:-1::0;;;;;44751:13:0::1;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;44751:15:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;44751:15:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;44751:15:0;;;;;;;;;44731:1;-1:-1:-1::0;;;;;44731:13:0::1;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;44731:15:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;44731:15:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;44731:15:0;;;;;;;;;:19:::0;:36:::1;:19;:36;:::i;:::-;44724:3;:43;;:160;;;;-1:-1:-1::0;44808:17:0::1;44786:1;-1:-1:-1::0;;;;;44786:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;44786:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;44786:13:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;44786:13:0;;;;;;;;;:40;:96;;;-1:-1:-1::0;44852:29:0::1;44830:1;-1:-1:-1::0;;;;;44830:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;44830:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;44830:13:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;44830:13:0;;;;;;;;;:52;44786:96;44716:199;;;;-1:-1:-1::0;;;44716:199:0::1;;;;;;;;;44926:55;::::0;-1:-1:-1;;;44926:55:0;;-1:-1:-1;;;;;44926:14:0;::::1;::::0;::::1;::::0;:55:::1;::::0;44962:17:::1;::::0;44926:55:::1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;44926:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;45045:18:0::1;::::0;;26:21:-1;6:49;;45045:18:0::1;::::0;::::1;::::0;;;;-1:-1:-1;;;44997:67:0;-1:-1:-1;;;;;;44997:67:0;::::1;::::0;-1:-1:-1;45010:10:0::1;::::0;44997:67:::1;::::0;::::1;::::0;::::1;;;;;;;;;;36565:1;44612:460:::0;;:::o;45214:1160::-;45279:4;36450:3;;36473:51;;-1:-1:-1;;;36473:51:0;;-1:-1:-1;;;;;36450:3:0;;;;;;36473:15;;:51;;36489:10;;36509:4;;-1:-1:-1;;;;;;36516:7:0;;;;36473:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36473:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36473:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36473:51:0;;;;;;;;;36465:89;;;;-1:-1:-1;;;36465:89:0;;;;;;;;;45321:1:::1;45304:5;45306:2:::0;45304:1:::1;:5::i;:::-;-1:-1:-1::0;;;;;45304:19:0::1;;;:51;;;;;45352:3;-1:-1:-1::0;;;;;45327:28:0::1;:12;45336:2;45327:8;:12::i;:::-;-1:-1:-1::0;;;;;45327:19:0::1;;:21;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;45327:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;45327:21:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;45327:21:0;;;;;;;;;-1:-1:-1::0;;;;;45327:28:0::1;;45304:51;45296:89;;;;-1:-1:-1::0;;;45296:89:0::1;;;;;;;;;45396:11;45410:12;45419:2;45410:8;:12::i;:::-;45396:26:::0;-1:-1:-1;45628:17:0::1;45606:1;-1:-1:-1::0;;;;;45606:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;45606:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;45606:13:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;45606:13:0;;;;;;;;;:40;:84;;;-1:-1:-1::0;45672:17:0::1;45650:1;-1:-1:-1::0;;;;;45650:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;45650:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;45650:13:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;45650:13:0;;;;;;;;;:40;45606:84;45584:147;;;;-1:-1:-1::0;;;45584:147:0::1;;;;;;;;;45858:19;45880:1;-1:-1:-1::0;;;;;45880:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;45880:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;45880:13:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;45880:13:0;;;;;;;;;45904:30;::::0;-1:-1:-1;;;45904:30:0;;45858:35;;-1:-1:-1;;;;;;45904:14:0;::::1;::::0;::::1;::::0;:30:::1;::::0;45932:1:::1;::::0;45904:30:::1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;45904:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;46040:60:0::1;::::0;-1:-1:-1;;;46040:60:0;;-1:-1:-1;;;;;46040:14:0;::::1;::::0;-1:-1:-1;46040:14:0::1;::::0;-1:-1:-1;46040:60:0::1;::::0;46076:22:::1;::::0;46040:60:::1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;46040:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;46111:66:0::1;::::0;-1:-1:-1;;;46111:66:0;;-1:-1:-1;;;;;46111:14:0;::::1;::::0;-1:-1:-1;46111:14:0::1;::::0;-1:-1:-1;46111:66:0::1;::::0;46149:26:::1;::::0;46111:66:::1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;46111:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;46111:66:0;;;;46269:1;-1:-1:-1::0;;;;;46269:13:0::1;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;46269:15:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;46269:15:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;46269:15:0;;;;;;;;;46265:71;;;46301:23;::::0;-1:-1:-1;;;46301:23:0;;-1:-1:-1;;;;;46301:16:0;::::1;::::0;::::1;::::0;:23:::1;::::0;46318:5:::1;::::0;46301:23:::1;;;;46265:71;46355:11:::0;45214:1160;-1:-1:-1;;;;;45214:1160:0:o;39750:549::-;39860:4;36450:3;;36473:51;;-1:-1:-1;;;36473:51:0;;-1:-1:-1;;;;;36450:3:0;;;;;;36473:15;;:51;;36489:10;;36509:4;;-1:-1:-1;;;;;;36516:7:0;;;;36473:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36473:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36473:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36473:51:0;;;;;;;;;36465:89;;;;-1:-1:-1;;;36465:89:0;;;;;;;;;39907:1:::1;39890:5;39892:2:::0;39890:1:::1;:5::i;:::-;-1:-1:-1::0;;;;;39890:19:0::1;;;:51;;;;;39938:3;-1:-1:-1::0;;;;;39913:28:0::1;:12;39922:2;39913:8;:12::i;:::-;-1:-1:-1::0;;;;;39913:19:0::1;;:21;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39913:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39913:21:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;39913:21:0;;;;;;;;;-1:-1:-1::0;;;;;39913:28:0::1;;39890:51;39882:89;;;;-1:-1:-1::0;;;39882:89:0::1;;;;;;;;;39984:11;39998:12;40007:2;39998:8;:12::i;:::-;39984:26;;40197:1;-1:-1:-1::0;;;;;40197:14:0::1;;40231:35;40259:6;40231:1;-1:-1:-1::0;;;;;40231:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;40231:35:0;40197:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;40197:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;40287:4:0::1;::::0;39750:549;-1:-1:-1;;;;;;;;;39750:549:0:o;37749:104::-;37800:9;37839:5;37841:2;37839:1;:5::i;36377:22::-;;;-1:-1:-1;;;;;36377:22:0;;:::o;37964:179::-;36433:9;36450:3;;36473:51;;-1:-1:-1;;;36473:51:0;;-1:-1:-1;;;;;36450:3:0;;;;;;36473:15;;:51;;36489:10;;36509:4;;36516:7;;-1:-1:-1;;;;;;36516:7:0;;36473:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36473:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36473:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36473:51:0;;;;;;;;;36465:89;;;;-1:-1:-1;;;36465:89:0;;;;;;;;;38117:8:::1;38111:4;-1:-1:-1::0;;;;;38093:42:0::1;38106:3;-1:-1:-1::0;;;;;38093:42:0::1;;38127:7;;38093:42;;;;;;;;;;;;;;;;37964:179:::0;;;;;;:::o;41436:2466::-;41499:11;41513:12;41522:2;41513:8;:12::i;:::-;41499:26;-1:-1:-1;41706:1:0;41689:5;41691:2;41689:1;:5::i;:::-;-1:-1:-1;;;;;41689:19:0;;;:84;;;;-1:-1:-1;41750:22:0;41725:1;-1:-1:-1;;;;;41725:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41725:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41725:13:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;41725:13:0;;;;;;;;;:48;41689:84;:167;;;;;41797:1;-1:-1:-1;;;;;41797:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41797:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41797:17:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;41797:17:0;;;;;;;;;41791:3;:23;:64;;;-1:-1:-1;41818:9:0;;;:32;;-1:-1:-1;;;41818:32:0;;-1:-1:-1;;;;;41818:9:0;;;;:28;;:32;;41847:2;;41818:32;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41818:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41818:32:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;41818:32:0;;;;;;;;;:37;41791:64;41681:201;;;;-1:-1:-1;;;41681:201:0;;;;;;;;;41928:9;;;:34;;-1:-1:-1;;;41928:34:0;;-1:-1:-1;;;;;41928:9:0;;;;:30;;:34;;41959:2;;41928:34;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41928:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41928:34:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;41928:34:0;;;;;;;;;41924:1872;;;41994:9;;;:35;;-1:-1:-1;;;41994:35:0;;41979:12;;-1:-1:-1;;;;;41994:9:0;;;;:31;;:35;;42026:2;;41994:35;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;41994:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;41994:35:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;41994:35:0;;;;;;;;;42044:36;;-1:-1:-1;;;42044:36:0;;41979:50;;-1:-1:-1;;;;;;42044:14:0;;;;;:36;;41979:50;;42044:36;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;42044:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;42095:42:0;;-1:-1:-1;;;42095:42:0;;-1:-1:-1;;;;;42095:14:0;;;-1:-1:-1;42095:14:0;;-1:-1:-1;42095:42:0;;42129:7;;42095:42;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;42095:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;42095:42:0;;;;42154:10;42167:7;42154:20;;42189:25;42217:143;42355:4;42217:115;42314:1;-1:-1:-1;;;;;42314:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;42314:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;42314:17:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;42314:17:0;;;;;;;;;42217:74;42271:1;-1:-1:-1;;;;;42271:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;42271:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;42271:19:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;42271:19:0;;;;;;;;;42217:9;;;:31;;-1:-1:-1;;;42217:31:0;;-1:-1:-1;;;;;42217:9:0;;;;:27;;:31;;42245:2;;42217:31;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;42217:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;42217:31:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;42217:31:0;;;;;;;;;:53;:74;:53;:74;:::i;:115::-;:137;:143;:137;:143;:::i;:::-;42460:9;;;:30;;-1:-1:-1;;;42460:30:0;;42189:171;;-1:-1:-1;42446:11:0;;42189:171;;-1:-1:-1;;;;;42460:9:0;;;;:26;;:30;;42487:2;;42460:30;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;42460:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;42460:30:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;42460:30:0;;;;;;;;;:50;42446:64;;42529:6;42525:1082;;;42556:64;;-1:-1:-1;;;42556:64:0;;-1:-1:-1;;;;;42556:14:0;;;;;:64;;42592:26;;42556:64;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;42556:64:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;42639:66:0;;-1:-1:-1;;;42639:66:0;;-1:-1:-1;;;;;42639:14:0;;;-1:-1:-1;42639:14:0;;-1:-1:-1;42639:66:0;;42677:26;;42639:66;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;42639:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;42639:66:0;;;;42525:1082;;;42746:1;-1:-1:-1;;;;;42746:14:0;;42782:1;-1:-1:-1;;;;;42782:10:0;;:12;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;42782:12:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;42782:12:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;42782:12:0;;;;;;;;;42776:3;:18;42746:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;42746:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;42816:67:0;;-1:-1:-1;;;42816:67:0;;-1:-1:-1;;;;;42816:14:0;;;-1:-1:-1;42816:14:0;;-1:-1:-1;42816:67:0;;42852:29;;42816:67;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;42816:67:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;42902:67:0;;-1:-1:-1;;;42902:67:0;;-1:-1:-1;;;;;42902:14:0;;;-1:-1:-1;42902:14:0;;-1:-1:-1;42902:67:0;;42940:27;;42902:67;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;42902:67:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;42902:67:0;;;;43056:16;43075:1;-1:-1:-1;;;;;43075:10:0;;:12;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43075:12:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43075:12:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;43075:12:0;;;;;;;;;43056:31;;43106:15;43124:54;43175:2;43124:46;43145:6;;;;;;;;;-1:-1:-1;;;;;43145:6:0;-1:-1:-1;;;;;43137:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43137:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43137:32:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;43137:32:0;;;;;;;;;43124:8;;:46;:12;:46;:::i;:54::-;43106:72;;43235:1;-1:-1:-1;;;;;43235:15:0;;:17;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43235:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43235:17:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;43235:17:0;;;;;;;;;43231:361;;;43277:30;;-1:-1:-1;;;43277:30:0;;-1:-1:-1;;;;;43277:14:0;;;;;:30;;43299:7;;43277:30;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43277:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;;;43330:14:0;;;-1:-1:-1;43330:14:0;43358:21;:8;43371:7;43358:12;:21::i;:::-;43330:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43330:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43330:50:0;;;;43231:361;;;43429:24;;-1:-1:-1;;;43429:24:0;;-1:-1:-1;;;;;43429:14:0;;;;;:24;;43451:1;;43429:24;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43429:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;43496:37:0;;-1:-1:-1;;;43496:37:0;;-1:-1:-1;;;;;43496:14:0;;;-1:-1:-1;43496:14:0;;-1:-1:-1;43496:37:0;;43524:8;;43496:37;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43496:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43496:37:0;;;;43231:361;42525:1082;;;41924:1872;;;;;;;43639:64;;-1:-1:-1;;;43639:64:0;;-1:-1:-1;;;;;43639:14:0;;;;;:64;;43675:26;;43639:64;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43639:64:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;43718:66:0;;-1:-1:-1;;;43718:66:0;;-1:-1:-1;;;;;43718:14:0;;;-1:-1:-1;43718:14:0;;-1:-1:-1;43718:66:0;;43756:26;;43718:66;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;43718:66:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;43718:66:0;;;;41924:1872;43875:18;;;26:21:-1;6:49;;43875:18:0;;;;;;;-1:-1:-1;;;43813:81:0;-1:-1:-1;;;;;43813:81:0;;;43826:10;;43813:81;;;;;;;;;;;;;;41436:2466;;:::o;36951:526::-;36433:9;36450:3;;36473:51;;-1:-1:-1;;;36473:51:0;;-1:-1:-1;;;;;36450:3:0;;;;;;36473:15;;:51;;36489:10;;36509:4;;36516:7;;-1:-1:-1;;;;;;36516:7:0;;36473:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36473:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36473:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36473:51:0;;;;;;;;;36465:89;;;;-1:-1:-1;;;36465:89:0;;;;;;;;;-1:-1:-1;;;37031:1:0::1;:22;37027:86;;;37070:6;:10:::0;;-1:-1:-1;;;;;;37070:10:0::1;-1:-1:-1::0;;;;;37070:10:0;::::1;;::::0;;37095:7:::1;;37027:86;-1:-1:-1::0;;;37127:1:0::1;:22;37123:86;;;37166:6;:10:::0;;-1:-1:-1;;;;;;37166:10:0::1;-1:-1:-1::0;;;;;37166:10:0;::::1;;::::0;;37191:7:::1;;37123:86;-1:-1:-1::0;;;37223:1:0::1;:25;37219:104;;;37265:9;:25:::0;;-1:-1:-1;;;;;;37265:25:0::1;-1:-1:-1::0;;;;;37265:25:0;::::1;;::::0;;37305:7:::1;;37219:104;-1:-1:-1::0;;;37337:1:0::1;:22;37333:86;;;37376:6;:10:::0;;-1:-1:-1;;;;;;37376:10:0::1;-1:-1:-1::0;;;;;37376:10:0;::::1;;::::0;;37401:7:::1;;37333:86;37429:40;;-1:-1:-1::0;;;37429:40:0::1;;;;;;;;36565:1;36951:526:::0;;;:::o;36259:21::-;;;-1:-1:-1;;;;;36259:21:0;;:::o;38151:1528::-;36433:9;36450:3;;36473:51;;-1:-1:-1;;;36473:51:0;;-1:-1:-1;;;;;36450:3:0;;;;;;36473:15;;:51;;36489:10;;36509:4;;36516:7;;-1:-1:-1;;;;;;36516:7:0;;36473:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36473:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36473:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36473:51:0;;;;;;;;;36465:89;;;;-1:-1:-1;;;36465:89:0;;;;;;;;;38230:11:::1;38244:12;38253:2;38244:8;:12::i;:::-;38230:26;;38267:1;-1:-1:-1::0;;;;;38267:14:0::1;;38309:6;;;;;;;;;-1:-1:-1::0;;;;;38309:6:0::1;-1:-1:-1::0;;;;;38301:31:0::1;;38333:1;-1:-1:-1::0;;;;;38333:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;38333:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;38333:19:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;38333:19:0;;;;;;;;;38301:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;38301:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;38301:52:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;38301:52:0;;;;;;;;;38267:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;38267:87:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;38396:9:0::1;::::0;;38385:54:::1;::::0;-1:-1:-1;;;38385:54:0;;-1:-1:-1;;;;;38396:9:0;;::::1;::::0;-1:-1:-1;38385:50:0::1;::::0;-1:-1:-1;38385:54:0::1;::::0;38436:2;;38385:54:::1;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;38385:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;38385:54:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;38385:54:0;;;;;;;;;38375:6;:64;;38367:99;;;;-1:-1:-1::0;;;38367:99:0::1;;;;;;;;;38516:1;-1:-1:-1::0;;;;;38516:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;38516:17:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;38516:17:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;38516:17:0;;;;;;;;;38512:695;;;38550:58;::::0;-1:-1:-1;;;38550:58:0;;-1:-1:-1;;;;;38550:14:0;::::1;::::0;::::1;::::0;:58:::1;::::0;38586:20:::1;::::0;38550:58:::1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;38550:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;38550:58:0;;;;38623:1;-1:-1:-1::0;;;;;38623:21:0::1;;38660:6;;;;;;;;;-1:-1:-1::0;;;;;38660:6:0::1;-1:-1:-1::0;;;;;38652:19:0::1;;:21;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;38652:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;38652:21:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;38652:21:0;;;;;;;;;38623:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;38623:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;38623:51:0;;;;38691:20;38722:6;;;;;;;;;-1:-1:-1::0;;;;;38722:6:0::1;-1:-1:-1::0;;;;;38714:28:0::1;;:30;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;38714:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;38714:30:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;38714:30:0;;;;;;;;;38763:49;::::0;-1:-1:-1;;;38763:49:0;;38691:53;;-1:-1:-1;;;;;;38763:14:0;::::1;::::0;::::1;::::0;:49:::1;::::0;38793:3:::1;:18:::0;::::1;::::0;38763:49:::1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;38763:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;38763:49:0;;;;38512:695;;;;38845:60;::::0;-1:-1:-1;;;38845:60:0;;-1:-1:-1;;;;;38845:14:0;::::1;::::0;::::1;::::0;:60:::1;::::0;38881:22:::1;::::0;38845:60:::1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;38845:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;38920:34:0::1;::::0;-1:-1:-1;;;38920:34:0;;-1:-1:-1;;;;;38920:14:0;::::1;::::0;-1:-1:-1;38920:14:0::1;::::0;-1:-1:-1;38920:34:0::1;::::0;38950:3:::1;::::0;38920:34:::1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;38920:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;38920:34:0;;;;39025:1;-1:-1:-1::0;;;;;39025:14:0::1;;39071:6;;;;;;;;;-1:-1:-1::0;;;;;39071:6:0::1;-1:-1:-1::0;;;;;39063:30:0::1;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39063:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39063:32:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;39063:32:0;;;;;;;;;39057:3;:38;39025:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39025:71:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39025:71:0;;;;39111:1;-1:-1:-1::0;;;;;39111:14:0::1;;39182:1;-1:-1:-1::0;;;;;39182:10:0::1;;:12;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39182:12:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39182:12:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;39182:12:0;;;;;;;;;39155:6;;;;;;;;;-1:-1:-1::0;;;;;39155:6:0::1;-1:-1:-1::0;;;;;39147:30:0::1;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39147:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39147:32:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;39147:32:0;;;;;;;;;39141:3;:38;:53;39111:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39111:84:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39111:84:0;;;;38512:695;39219:1;-1:-1:-1::0;;;;;39219:14:0::1;;39257:6;;;;;;;;;-1:-1:-1::0;;;;;39257:6:0::1;-1:-1:-1::0;;;;;39249:27:0::1;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39249:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39249:29:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;39249:29:0;;;;;;;;;39219:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39219:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39219:60:0;;;;39292:1;-1:-1:-1::0;;;;;39292:14:0::1;;39327:6;;;;;;;;;-1:-1:-1::0;;;;;39327:6:0::1;-1:-1:-1::0;;;;;39319:24:0::1;;39344:1;-1:-1:-1::0;;;;;39344:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39344:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39344:19:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;39344:19:0;;;;;;;;;39319:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39319:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39319:45:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;39319:45:0;;;;;;;;;39292:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39292:73:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39292:73:0;;;;39376:1;-1:-1:-1::0;;;;;39376:14:0::1;;39416:6;;;;;;;;;-1:-1:-1::0;;;;;39416:6:0::1;-1:-1:-1::0;;;;;39408:29:0::1;;39438:1;-1:-1:-1::0;;;;;39438:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39438:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39438:19:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;39438:19:0;;;;;;;;;39408:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39408:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39408:50:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;39408:50:0;;;;;;;;;39376:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39376:83:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39376:83:0;;;;39470:1;-1:-1:-1::0;;;;;39470:14:0::1;;39519:6;;;;;;;;;-1:-1:-1::0;;;;;39519:6:0::1;-1:-1:-1::0;;;;;39511:38:0::1;;39550:1;-1:-1:-1::0;;;;;39550:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39550:14:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39550:14:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;39550:14:0;;;;;;;;;39511:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39511:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39511:54:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;39511:54:0;;;;;;;;;39470:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39470:96:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39470:96:0;;;;39581:1;-1:-1:-1::0;;;;;39581:14:0::1;;39616:35;39644:6;39616:1;-1:-1:-1::0;;;;;39616:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;39616:35:0;39581:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;39581:71:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;39581:71:0;;;;36565:1;38151:1528:::0;;;:::o;48201:888::-;48316:7;36450:3;;36473:51;;-1:-1:-1;;;36473:51:0;;-1:-1:-1;;;;;36450:3:0;;;;;;36473:15;;:51;;36489:10;;36509:4;;-1:-1:-1;;;;;;36516:7:0;;;;36473:51;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;36473:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;36473:51:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;36473:51:0;;;;;;;;;36465:89;;;;-1:-1:-1;;;36465:89:0;;;;;;;;;48341:11:::1;48355:12;48364:2;48355:8;:12::i;:::-;48341:26:::0;-1:-1:-1;48448:1:0::1;48431:5;48433:2:::0;48431:1:::1;:5::i;:::-;-1:-1:-1::0;;;;;48431:19:0::1;;;:144;;;;-1:-1:-1::0;48491:22:0::1;48469:1;-1:-1:-1::0;;;;;48469:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;48469:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;48469:13:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;48469:13:0;;;;;;;;;:45;:105;;;-1:-1:-1::0;48553:20:0::1;48531:1;-1:-1:-1::0;;;;;48531:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;48531:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;48531:13:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;48531:13:0;;;;;;;;;:43;48469:105;48423:202;;;;-1:-1:-1::0;;;48423:202:0::1;;;;;;;;;48663:22;::::0;-1:-1:-1;;;48663:22:0;;48641:18:::1;::::0;-1:-1:-1;;;;;48663:17:0;::::1;::::0;::::1;::::0;:22:::1;::::0;48681:3;;48663:22:::1;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;48663:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;48663:22:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;48663:22:0;;;;;;;;;48640:45;;48696:18;48717:9;;;;;;;;;-1:-1:-1::0;;;;;48717:9:0::1;-1:-1:-1::0;;;;;48717:28:0::1;;48768:1;48785;-1:-1:-1::0;;;;;48785:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;48785:14:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;48785:14:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;48785:14:0;;;;;;;;;48814:10;48717:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;48717:118:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;48717:118:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;48717:118:0;;;;;;;;;48870:9;::::0;;:46:::1;::::0;-1:-1:-1;;;48870:46:0;;48696:139;;-1:-1:-1;48848:19:0::1;::::0;-1:-1:-1;;;;;48870:9:0;;::::1;::::0;:37:::1;::::0;:46:::1;::::0;48908:2;;48912:3;;48870:46:::1;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;48870:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;48870:46:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;48870:46:0;;;;;;;;;49021:27;::::0;-1:-1:-1;;;49021:27:0;;48848:68;;-1:-1:-1;;;;;;49021:10:0;::::1;::::0;::::1;::::0;:27:::1;::::0;49032:3;;49037:10;;49021:27:::1;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27::::0;20:12:::1;5:2;49021:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;49070:11:0;;48201:888;-1:-1:-1;;;;;;;;;;48201:888:0:o;49222:2254::-;49310:7;49319;49328;49337;49357:11;49371:12;49380:2;49371:8;:12::i;:::-;49357:26;;49416:3;-1:-1:-1;;;;;49402:17:0;:1;-1:-1:-1;;;;;49402:8:0;;:10;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;49402:10:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;49402:10:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;49402:10:0;;;;;;;;;-1:-1:-1;;;;;49402:17:0;;;49394:50;;;;-1:-1:-1;;;49394:50:0;;;;;;;;;49506:1;-1:-1:-1;;;;;49506:13:0;;:15;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;49506:15:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;49506:15:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;49506:15:0;;;;;;;;;49502:352;;;49567:9;;;:37;;-1:-1:-1;;;49567:37:0;;49538:26;;-1:-1:-1;;;;;49567:9:0;;;;:33;;:37;;49601:2;;49567:37;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;49567:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;49567:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;49567:37:0;;;;;;;;;49538:66;;49627:21;49619:63;;;;-1:-1:-1;;;49619:63:0;;;;;;;;;49502:352;;;;49723:9;;;:22;;-1:-1:-1;;;49723:22:0;;-1:-1:-1;;;;;49723:9:0;;;;:18;;:22;;49742:2;;49723:22;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;49723:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;49723:22:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;49723:22:0;;;;;;;;;49715:48;;;;-1:-1:-1;;;49715:48:0;;;;;;;;;49820:22;;-1:-1:-1;;;49820:22:0;;-1:-1:-1;;;;;49820:16:0;;;;;:22;;49837:4;;49820:22;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;49820:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;49820:22:0;;;;49502:352;49866:15;49891:1;-1:-1:-1;;;;;49891:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;49891:14:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;49891:14:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;49891:14:0;;;;;;;;;-1:-1:-1;;;;;49884:32:0;;49917:3;49884:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;49884:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;49884:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;49884:37:0;;;;;;;;;49944:9;;;:15;;-1:-1:-1;;;49944:15:0;;49866:55;;-1:-1:-1;49932:9:0;;-1:-1:-1;;;;;49944:9:0;;;;:11;;:15;;49956:2;;49944:15;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;49944:15:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;49944:15:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;49944:15:0;;;;;;;;;49982:9;;;:15;;-1:-1:-1;;;49982:15:0;;49932:27;;-1:-1:-1;49970:9:0;;-1:-1:-1;;;;;49982:9:0;;;;:11;;:15;;49994:2;;49982:15;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;49982:15:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;49982:15:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;49982:15:0;;;;;;;;;49970:27;;50029:2;50018:7;:13;;:24;;;;;50041:1;50035:2;:7;;50018:24;50010:63;;;;-1:-1:-1;;;50010:63:0;;;;;;;;;50096:1;-1:-1:-1;;;;;50096:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50096:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50096:13:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;50096:13:0;;;;;;;;;50090:2;:19;:59;;;;50147:1;50113:22;50117:2;50121:1;-1:-1:-1;;;;;50121:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50121:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50121:13:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;50121:13:0;;;;;;;;;50113:3;:22::i;:::-;:36;;50090:59;:102;;;;50169:1;-1:-1:-1;;;;;50169:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50169:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50169:23:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;50169:23:0;;;;;;;;;50163:2;:29;50090:102;:175;;;-1:-1:-1;50242:9:0;;;:23;;-1:-1:-1;;;50242:23:0;;-1:-1:-1;;;;;50242:9:0;;;;:19;;:23;;50262:2;;50242:23;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50242:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50242:23:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;50242:23:0;;;;;;;;;50206:32;50210:2;50214:1;-1:-1:-1;;;;;50214:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;50206:32:0;:59;;50090:175;50086:301;;;50282:55;;-1:-1:-1;;;50282:55:0;;-1:-1:-1;;;;;50282:14:0;;;;;:55;;50315:20;;50282:55;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50282:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;50352:23:0;;-1:-1:-1;;;50352:23:0;;-1:-1:-1;;;;;50352:16:0;;;-1:-1:-1;50352:16:0;;-1:-1:-1;50352:23:0;;50369:5;;50352:23;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50352:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50352:23:0;;;;50086:301;50409:1;-1:-1:-1;;;;;50409:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50409:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50409:13:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;50409:13:0;;;;;;;;;50403:2;:19;:59;;;;50460:1;50426:22;50430:2;50434:1;-1:-1:-1;;;;;50434:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;50426:22:0;:36;;50403:59;50399:290;;;50491:1;-1:-1:-1;;;;;50491:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50491:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50491:23:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;50491:23:0;;;;;;;;;50485:2;:29;:92;;;-1:-1:-1;50554:9:0;;;:23;;-1:-1:-1;;;50554:23:0;;-1:-1:-1;;;;;50554:9:0;;;;:19;;:23;;50574:2;;50554:23;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50554:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50554:23:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;50554:23:0;;;;;;;;;50518:32;50522:2;50526:1;-1:-1:-1;;;;;50526:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;50518:32:0;:59;;50485:92;50479:199;;50599:63;;-1:-1:-1;;;50599:63:0;;-1:-1:-1;;;;;50599:14:0;;;;;:63;;50634:26;;50599:63;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50599:63:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50599:63:0;;;;50479:199;50779:1;50745:22;50749:2;50753:1;-1:-1:-1;;;;;50753:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;50745:22:0;:36;50741:182;;50798:30;;-1:-1:-1;;;50798:30:0;;-1:-1:-1;;;;;50798:14:0;;;;;:30;;50826:1;;50798:30;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50798:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50798:30:0;;;;50741:182;;;50861:1;-1:-1:-1;;;;;50861:14:0;;50889:21;50907:2;50889:1;-1:-1:-1;;;;;50889:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50889:13:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50889:13:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;50889:13:0;;;;;;;;;:17;:21;:17;:21;:::i;:::-;50861:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50861:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50861:50:0;;;;50741:182;50975:9;;;:23;;-1:-1:-1;;;50975:23:0;;-1:-1:-1;;;;;50975:9:0;;;;:19;;:23;;50995:2;;50975:23;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50975:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50975:23:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;50975:23:0;;;;;;;;;50939:32;50943:2;50947:1;-1:-1:-1;;;;;50947:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;50939:32:0;:59;50935:229;;51015:37;;-1:-1:-1;;;51015:37:0;;-1:-1:-1;;;;;51015:14:0;;;;;:37;;51050:1;;51015:37;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51015:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;51015:37:0;;;;50935:229;;;51085:1;-1:-1:-1;;;;;51085:14:0;;51120:31;51148:2;51120:1;-1:-1:-1;;;;;51120:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;51120:31:0;51085:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51085:67:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;51085:67:0;;;;50935:229;51183:9;;;:37;;-1:-1:-1;;;51183:37:0;;-1:-1:-1;;;;;51183:9:0;;;;:33;;:37;;51217:2;;51183:37;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51183:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;51183:37:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;51183:37:0;;;;;;;;;51178:94;;51237:23;;-1:-1:-1;;;51237:23:0;;-1:-1:-1;;;;;51237:16:0;;;;;:23;;51254:5;;51237:23;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51237:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;51237:23:0;;;;51178:94;51288:9;;;:24;;-1:-1:-1;;;51288:24:0;;-1:-1:-1;;;;;51288:9:0;;;;:20;;:24;;51309:2;;51288:24;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51288:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;51288:24:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;51288:24:0;;;;;;;;;51284:151;;;51329:1;-1:-1:-1;;;;;51329:14:0;;51357:26;51375:1;-1:-1:-1;;;;;51375:5:0;;:7;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51375:7:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;51375:7:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;51375:7:0;;;;;;;;;51357:1;-1:-1:-1;;;;;51357:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;51357:26:0;51329:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51329:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;51399:24:0;;-1:-1:-1;;;51399:24:0;;-1:-1:-1;;;;;51399:14:0;;;-1:-1:-1;51399:14:0;;-1:-1:-1;51399:24:0;;51421:1;;51399:24;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51399:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;51399:24:0;;;;51284:151;51455:2;;51459;;-1:-1:-1;51463:1:0;-1:-1:-1;;;;;;;49222:2254:0:o;5133:181::-;5191:7;5223:5;;;5247:6;;;;5239:46;;;;-1:-1:-1;;;5239:46:0;;;;;;;;;5305:1;5133:181;-1:-1:-1;;;5133:181:0:o;6505:471::-;6563:7;6808:6;6804:47;;-1:-1:-1;6838:1:0;6831:8;;6804:47;6875:5;;;6879:1;6875;:5;:1;6899:5;;;;;:10;6891:56;;;;-1:-1:-1;;;6891:56:0;;;;;;;;7444:132;7502:7;7529:39;7533:1;7536;7529:39;;;;;;;;;;;;;;;;;:3;:39::i;5589:136::-;5647:7;5674:43;5678:1;5681;5674:43;;;;;;;;;;;;;;;;;:3;:43::i;49097:117::-;49155:6;49183:1;49178;:6;;:28;;49198:8;:1;49204;49198:8;:5;:8;:::i;:::-;49178:28;;;49187:8;:1;49193;49187:8;:5;:8;:::i;8106:345::-;8192:7;8294:12;8287:5;8279:28;;;;-1:-1:-1;;;8279:28:0;;;;;;;;;;;8318:9;8334:1;8330;:5;;;;;;;8106:345;-1:-1:-1;;;;;8106:345:0:o;6062:192::-;6148:7;6184:12;6176:6;;;;6168:29;;;;-1:-1:-1;;;6168:29:0;;;;;;;;;;-1:-1:-1;;;6220:5:0;;;6062:192::o;1191:241:-1:-;;1295:2;1283:9;1274:7;1270:23;1266:32;1263:2;;;-1:-1;;1301:12;1263:2;85:6;72:20;97:33;124:5;97:33;;1439:263;;1554:2;1542:9;1533:7;1529:23;1525:32;1522:2;;;-1:-1;;1560:12;1522:2;226:6;220:13;238:33;265:5;238:33;;1709:741;;;;;;1883:3;1871:9;1862:7;1858:23;1854:33;1851:2;;;-1:-1;;1890:12;1851:2;85:6;72:20;97:33;124:5;97:33;;;1942:63;-1:-1;2042:2;2081:22;;72:20;97:33;72:20;97:33;;;2050:63;-1:-1;2150:2;2189:22;;485:20;;-1:-1;2286:2;2271:18;;2258:32;2310:18;2299:30;;;2296:2;;;-1:-1;;2332:12;2296:2;2417:6;2406:9;2402:22;683:3;676:4;668:6;664:17;660:27;650:2;;-1:-1;;691:12;650:2;734:6;721:20;711:30;;2310:18;753:6;750:30;747:2;;;-1:-1;;783:12;747:2;878:3;2042:2;858:17;819:6;844:32;;841:41;838:2;;;-1:-1;;885:12;838:2;2042;819:6;815:17;2360:74;;;;;;;;1845:605;;;;;;;;;2457:366;;;2578:2;2566:9;2557:7;2553:23;2549:32;2546:2;;;-1:-1;;2584:12;2546:2;85:6;72:20;97:33;124:5;97:33;;;2636:63;2736:2;2775:22;;;;980:20;;-1:-1;;;2540:283;2830:491;;;;2968:2;2956:9;2947:7;2943:23;2939:32;2936:2;;;-1:-1;;2974:12;2936:2;85:6;72:20;97:33;124:5;97:33;;;3026:63;3126:2;3165:22;;980:20;;-1:-1;3234:2;3273:22;;;980:20;;2930:391;-1:-1;;;2930:391;3328:257;;3440:2;3428:9;3419:7;3415:23;3411:32;3408:2;;;-1:-1;;3446:12;3408:2;364:6;358:13;44387:5;42084:13;42077:21;44365:5;44362:32;44352:2;;-1:-1;;44398:12;3592:366;;;3713:2;3701:9;3692:7;3688:23;3684:32;3681:2;;;-1:-1;;3719:12;3681:2;498:6;485:20;3771:63;;3871:2;3914:9;3910:22;72:20;97:33;124:5;97:33;;;3879:63;;;;3675:283;;;;;;3965:241;;4069:2;4057:9;4048:7;4044:23;4040:32;4037:2;;;-1:-1;;4075:12;4037:2;-1:-1;980:20;;4031:175;-1:-1;4031:175;4213:263;;4328:2;4316:9;4307:7;4303:23;4299:32;4296:2;;;-1:-1;;4334:12;4296:2;-1:-1;1128:13;;4290:186;-1:-1;4290:186;4483:366;;;4604:2;4592:9;4583:7;4579:23;4575:32;4572:2;;;-1:-1;;4610:12;4572:2;-1:-1;;980:20;;;4762:2;4801:22;;;980:20;;-1:-1;4566:283;4856:399;;;4988:2;4976:9;4967:7;4963:23;4959:32;4956:2;;;-1:-1;;4994:12;4956:2;-1:-1;;1128:13;;5157:2;5207:22;;;1128:13;;;;;-1:-1;4950:305;6087:343;;6229:5;41407:12;41692:6;41687:3;41680:19;-1:-1;43873:101;43887:6;43884:1;43881:13;43873:101;;;41729:4;43954:11;;;;;43948:18;43935:11;;;;;43928:39;43902:10;43873:101;;;43989:6;43986:1;43983:13;43980:2;;;-1:-1;41729:4;44045:6;41724:3;44036:16;;44029:27;43980:2;-1:-1;44161:7;44145:14;-1:-1;;44141:28;6386:39;;;;41729:4;6386:39;;6177:253;-1:-1;;6177:253;18053:213;-1:-1;;;;;42402:54;;;;5482:37;;18171:2;18156:18;;18142:124;18273:447;-1:-1;;;;;42402:54;;;5341:58;;42402:54;;;;18625:2;18610:18;;5482:37;-1:-1;;;;;;42250:78;;;18706:2;18691:18;;5711:36;18453:2;18438:18;;18424:296;18727:435;-1:-1;;;;;42402:54;;;5482:37;;42402:54;;;;19065:2;19050:18;;5482:37;19148:2;19133:18;;18004:37;;;;18901:2;18886:18;;18872:290;19169:324;-1:-1;;;;;42402:54;;;;5482:37;;19479:2;19464:18;;18004:37;19315:2;19300:18;;19286:207;19500:201;42084:13;;42077:21;5596:34;;19612:2;19597:18;;19583:118;19708:317;;19854:2;19875:17;19868:47;41692:6;19854:2;19843:9;19839:18;41680:19;43728:6;43723:3;41720:14;19843:9;41720:14;43705:30;43766:16;;;41720:14;43766:16;;;43759:27;;;;44161:7;44145:14;;;-1:-1;;44141:28;6034:39;;;19825:200;-1:-1;19825:200;20032:297;;20168:2;20189:17;20182:47;20243:76;20168:2;20157:9;20153:18;20305:6;20243:76;;21158:450;-1:-1;;;7417:30;;21594:2;21579:18;;18004:37;;;;21367:2;21352:18;;21338:270;21615:450;-1:-1;;;7598:18;;-1:-1;;;;;42402:54;;;;22051:2;22036:18;;5482:37;21824:2;21809:18;;21795:270;22072:407;22263:2;22277:47;;;7855:2;22248:18;;;41680:19;-1:-1;;;41720:14;;;7871:43;7933:12;;;22234:245;22486:450;-1:-1;;;8096:26;;22922:2;22907:18;;18004:37;;;;22695:2;22680:18;;22666:270;22943:407;23134:2;23148:47;;;8361:2;23119:18;;;41680:19;8397:34;41720:14;;;8377:55;-1:-1;;;8452:12;;;8445:30;8494:12;;;23105:245;23357:407;23548:2;23562:47;;;8745:2;23533:18;;;41680:19;8781:29;41720:14;;;8761:50;8830:12;;;23519:245;23771:407;23962:2;23976:47;;;9081:2;23947:18;;;41680:19;9117:27;41720:14;;;9097:48;9164:12;;;23933:245;24185:407;24376:2;24390:47;;;9415:2;24361:18;;;41680:19;9451:27;41720:14;;;9431:48;9498:12;;;24347:245;24599:407;24790:2;24804:47;;;9749:2;24775:18;;;41680:19;9785:28;41720:14;;;9765:49;9833:12;;;24761:245;25013:450;-1:-1;;;9996:28;;25449:2;25434:18;;18004:37;;;;25222:2;25207:18;;25193:270;25470:466;-1:-1;;;10175:31;;25922:2;25907:18;;6856:58;;;;25687:2;25672:18;;25658:278;26400:407;26591:2;26605:47;;;10445:2;26576:18;;;41680:19;-1:-1;;;41720:14;;;10461:36;10516:12;;;26562:245;26814:407;27005:2;27019:47;;;10767:2;26990:18;;;41680:19;10803:34;41720:14;;;10783:55;-1:-1;;;10858:12;;;10851:31;10901:12;;;26976:245;27228:450;-1:-1;;;11064:26;;27664:2;27649:18;;18004:37;;;;27437:2;27422:18;;27408:270;27685:450;-1:-1;;;11241:26;;28121:2;28106:18;;18004:37;;;;27894:2;27879:18;;27865:270;28142:450;-1:-1;;;11418:30;;28578:2;28563:18;;18004:37;;;;28351:2;28336:18;;28322:270;28599:450;-1:-1;;;11599:23;;29035:2;29020:18;;18004:37;;;;28808:2;28793:18;;28779:270;29056:466;-1:-1;;;11773:24;;29508:2;29493:18;;6856:58;;;;29273:2;29258:18;;29244:278;29986:466;-1:-1;;;11948:18;;30438:2;30423:18;;6856:58;;;;30203:2;30188:18;;30174:278;30916:407;31107:2;31121:47;;;12205:2;31092:18;;;41680:19;12241:32;41720:14;;;12221:53;12293:12;;;31078:245;31330:407;31521:2;31535:47;;;12544:2;31506:18;;;41680:19;12580:34;41720:14;;;12560:55;-1:-1;;;12635:12;;;12628:25;12672:12;;;31492:245;31744:407;31935:2;31949:47;;;12923:2;31920:18;;;41680:19;-1:-1;;;41720:14;;;12939:41;12999:12;;;31906:245;32158:450;-1:-1;;;13162:26;;32594:2;32579:18;;18004:37;;;;32367:2;32352:18;;32338:270;32615:450;-1:-1;;;13339:24;;33051:2;33036:18;;18004:37;;;;32824:2;32809:18;;32795:270;33072:407;33263:2;33277:47;;;13602:2;33248:18;;;41680:19;13638:28;41720:14;;;13618:49;13686:12;;;33234:245;33486:450;-1:-1;;;13849:37;;33922:2;33907:18;;18004:37;;;;33695:2;33680:18;;33666:270;33943:407;34134:2;34148:47;;;14125:2;34119:18;;;41680:19;14161:31;41720:14;;;14141:52;14212:12;;;34105:245;34357:466;-1:-1;;;14375:24;;34809:2;34794:18;;6856:58;;;;34574:2;34559:18;;34545:278;35287:407;35478:2;35492:47;;;14638:2;35463:18;;;41680:19;-1:-1;;;41720:14;;;14654:44;14717:12;;;35449:245;35701:407;35892:2;35906:47;;;14968:2;35877:18;;;41680:19;15004:34;41720:14;;;14984:55;-1:-1;;;15059:12;;;15052:35;15106:12;;;35863:245;36115:407;36306:2;36320:47;;;15357:2;36291:18;;;41680:19;15393:27;41720:14;;;15373:48;15440:12;;;36277:245;36529:407;36720:2;36734:47;;;15691:2;36705:18;;;41680:19;-1:-1;;;41720:14;;;15707:36;15762:12;;;36691:245;36943:407;37134:2;37148:47;;;16013:2;37119:18;;;41680:19;-1:-1;;;41720:14;;;16029:36;16084:12;;;37105:245;37357:407;37548:2;37562:47;;;16335:2;37533:18;;;41680:19;16371:27;41720:14;;;16351:48;16418:12;;;37519:245;37771:407;37962:2;37976:47;;;16669:2;37947:18;;;41680:19;-1:-1;;;41720:14;;;16685:45;16749:12;;;37933:245;38185:407;38376:2;38390:47;;;17000:2;38361:18;;;41680:19;-1:-1;;;41720:14;;;17016:42;17077:12;;;38347:245;38599:407;38790:2;38804:47;;;17328:2;38775:18;;;41680:19;-1:-1;;;41720:14;;;17344:45;17408:12;;;38761:245;39013:407;39204:2;39218:47;;;17659:2;39189:18;;;41680:19;-1:-1;;;41720:14;;;17675:34;17728:12;;;39175:245;39427:450;-1:-1;;;17891:28;;39863:2;39848:18;;18004:37;;;;39636:2;39621:18;;39607:270;39884:213;18004:37;;;40002:2;39987:18;;39973:124;40104:324;18004:37;;;-1:-1;;;;;42402:54;40414:2;40399:18;;5482:37;40250:2;40235:18;;40221:207;40435:324;18004:37;;;40745:2;40730:18;;18004:37;40581:2;40566:18;;40552:207;40766:547;18004:37;;;41133:2;41118:18;;18004:37;;;;41216:2;41201:18;;18004:37;41299:2;41284:18;;18004:37;40968:3;40953:19;;40939:374;44182:117;-1:-1;;;;;42402:54;;44241:35;;44231:2;;44290:1;;44280:12;44231:2;44225:74;
Swarm Source
ipfs://036b02c33eeb4da67f8527a74041640124bfd21891fd9893976422acf4f08013
Loading...
Loading
Loading...
Loading
OVERVIEW
The main logic of ForTube Bond.Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.