 settlement_date: String,
    pub acquisition_date: String,
    pub income_us: f32,
    pub cost_basis: f32,
    pub exchange_rate_settlement_date: String,
    pub exchange_rate_settlement: f32,
    pub exchange_rate_acquisition_date: String,
    pub exchange_rate_acquisition: f32,
}

pub trait Residency {
    //    fn get_exchange_rate(&self, transaction_date: &str) -> Result<(String, f32), String>;
    fn present_result(&self, gross_div: f32, tax_div: f32, gross_sold: f32, cost_sold: f32);
    fn get_exchange_rates(
        &self,
        dates: &mut std::collections::HashMap<String, Option<(String, f32)>>,
    ) -> Result<(), String>;

    // Default parser (not to be used)
    fn parse_exchange_rates(&self, _body: &str) -> Result<(f32, String), String> {
        panic!("This method should not be used. Implement your own if needed!");
    }

    fn get_currency_exchange_rates(
        &self,
        dates: &mut std::collections::HashMap<String, Option<(String, f32)>>,
        from: &str,
        to: &str,
    ) -> Result<(), String> {
        // proxies are taken from env vars: http_proxy and https_proxy
        let http_proxy = std::env::var("http_proxy");
        let https_proxy = std::env::var("https_proxy");

        // If there is proxy then pick first URL
        let base_client = ReqwestClient::builder();
        let client = match &http_proxy {
            Ok(proxy) => base_client
                .proxy(reqwest::Proxy::http(proxy).expect_and_log("Error setting HTTP proxy")),
            Err(_) => base_client,
        };
        let client = match &https_proxy {
            Ok(proxy) => client
                .proxy(reqwest::Proxy::https(proxy).expect_and_log("Error setting HTTP proxy")),
            Err(_) => client,
        };
        let client = client.build().expect_and_log("Could not create client");

        // Example URL: https://www.exchange-rates.org/Rate/USD/EUR/2-27-2021

        let base_exchange_rate_url = "https://www.exchange-rates.org/Rate/";

        dates.iter_mut().for_each(|(date, val)| {
            let mut converted_date = chrono::NaiveDate::parse_from_str(&date, "%m/%d/%y").unwrap();

            converted_date = converted_date
                .checked_sub_signed(chrono::Duration::days(1))
                .expect_and_log("Error traversing date");

            let exchange_rate_url: String = base_exchange_rate_url.to_string()
                + &format!("{}/{}/{}", from, to, converted_date.format("%m-%d-%Y"))
                + "/?format=json";

            let body = client.get(&(exchange_rate_url)).send();
            let actual_body = body.expect_and_log(&format!(
                "Getting Exchange Rate from Exchange-Rates.org ({}) failed",
                exchange_rate_url
            ));
            if actual_body.status().is_success() {
                log::info!("RESPONSE {:#?}", actual_body);

                let exchange_rates_response = actual_body
                    .text()
                    .expect_and_log("Error converting response to Text");
                log::info!("body of exchange_rate = {:#?}", &exchange_rates_response);
                // parsing text response
                if let Ok((exchange_rate, exchange_rate_date)) =
                    self.parse_exchange_rates(&exchange_rates_response)


init(a) do {} while (0)
#define nci_scan(a) (0)
#define nci_dump_erom(a) do {} while (0)
#define nci_init(a, b, c) (NULL)
#define nci_setcore(a, b, c) (NULL)
#define nci_setcoreidx(a, b) (NULL)
#define nci_findcoreidx(a, b, c) (0)
#define nci_corereg_addr(a, b, c) (NULL)
#define nci_corereg_writeonly(a, b, c, d, e) (0)
#define nci_corereg(a, b, c, d, e) (0)
#define nci_corerev_minor(a) (0)
#define nci_corerev(a) (0)
#define nci_corevendor(a) (0)
#define nci_get_wrap_reg(a, b, c, d) (0)
#define nci_core_reset(a, b, c) do {} while (0)
#define nci_core_disable(a, b) do {} while (0)
#define nci_iscoreup(a) (FALSE)
#define nci_coreid(a, b) (0)
#define nci_numcoreunits(a, b) (0)
#define nci_addr_space(a, b, c) (0)
#define nci_addr_space_size(a, b, c) (0)
#define nci_iscoreup(a) (FALSE)
#define nci_intflag(a) (0)
#define nci_flag(a) (0)
#define nci_flag_alt(a) (0)
#define nci_setint(a, b) do {} while (0)
#define nci_oobr_baseaddr(a, b) (0)
#define nci_coreunit(a) (0)
#define nci_corelist(a, b) (0)
#define nci_numaddrspaces(a) (0)
#define nci_addrspace(a, b, c) (0)
#define nci_addrspacesize(a, b, c) (0)
#define nci_coreaddrspaceX(a, b, c, d) do {} while (0)
#define nci_core_cflags(a, b, c) (0)
#define nci_core_cflags_wo(a, b, c) do {} while (0)
#define nci_core_sflags(a, b, c) (0)
#define nci_wrapperreg(a, b, c, d) (0)
#define nci_invalidate_second_bar0win(a) do {} while (0)
#define nci_backplane_access(a, b, c, d, e) (0)
#define nci_backplane_access_64(a, b, c, d, e) (0)
#define nci_num_slaveports(a, b) (0)
#if defined(BCMDBG) || defined(BCMDBG_DUMP) || defined(BCMDBG_PHYDUMP)
#define nci_dumpregs(a, b) do {} while (0)
#endif  /* BCMDBG || BCMDBG_DUMP || BCMDBG_PHYDUMP */
#ifdef BCMDBG
#define nci_view(a, b) do {} while (0)
#define nci_viewall(a, b) do {} while (0)
#endif /* BCMDBG */
#define nci_get_nth_wrapper(a, b) (0)
#define nci_get_axi_addr(a, b) (0)
#define nci_wrapper_dump_binary_one(a, b, c) (NULL)
#define nci_wrapper_dump_binary(a, b) (0)
#define nci_wrapper_dump_last_timeout(a, b, c, d, e) (0)
#define nci_check_enable_backplane_log(a) (FALSE)
#define nci_get_core_baaddr(a, b, c) (0)
#define nci_clear_backplane_to(a) (0)
#define nci_clear_backplane_to_per_core(a, b, c, d) (0)
#define nci_ignore_errlog(a, b, c, d, e, f) (FALSE)
#define nci_wrapper_get_last_error(a, b, c, d, e, f) do {} while (0)
#define nci_get_axi_timeout_reg() (0)
#define nci_findcoreidx_by_axiid(a, b) (0)
#define nci_wrapper_dump_binary_one(a, b, c) (NULL)
#define nci_wrapper_dump_binary(a, b) (0)
#define nci_wrapper_dump_last_timeout(a, b, c, d, e) (0)
#define nci_check_enable_backplane_log(a) (FALSE)
#define nci_wrapper_dump_buf_size(a) (0)
#endif /* !SOCI_NCI_BUS */
#endif	/* _siutils_priv_h_ */


xt/emea/CRiiXN55.js"><link rel="modulepreload" as="script" crossorigin="" href="https://www.thenorthface.es/_nuxt/emea/B36xbzPk.js"><link rel="modulepreload" as="script" crossorigin="" href="https://www.thenorthface.es/_nuxt/emea/Cv40mOkD.js"><link rel="modulepreload" as="script" crossorigin="" href="https://www.thenorthface.es/_nuxt/emea/eqSPTo7V.js"><link rel="modulepreload" as="script" crossorigin="" href="https://www.thenorthface.es/_nuxt/emea/DuHDLYQ6.js"><link rel="modulepreload" as="script" crossorigin="" href="https://www.thenorthface.es/_nuxt/emea/AooqW0EW.js"><link rel="modulepreload" as="script" crossorigin="" href="https://www.thenorthface.es/_nuxt/emea/BHgEG8Lm.js"><link rel="modulepreload" as="script" crossorigin="" href="https://www.thenorthface.es/_nuxt/emea/DXxwCJda.js"><link rel="modulepreload" as="script" crossorigin="" href="https://www.thenorthface.es/_nuxt/emea/PaD5SrNJ.js">

Confirmar pedido | The North Face ES

<div class=":uno: [&_a]:underlined [&_a]:duration [&_a]:break-words


         "moduleName": "io.gitlab.arturbosch.detekt",
                    "owners": [
                        "Speed"
                    ],
                    "description": "added for writing rules",
                    "type": "external"
                },
                {
                    "moduleName": "com.google.code.gson:gson",
                    "owners": [
                        "Speed"
                    ],
                    "description": "",
                    "type": "external"
                },
                {
                    "moduleName": "androidx.core:core",
                    "owners": [
                        "Messenger"
                    ],
                    "description": "",
                    "type": "external"
                },
                {
                    "moduleName": "androidx.constraintlayout:constraintlayout",
                    "owners": [
                        "Messenger"
                    ],
                    "description": "",
                    "type": "external"
                }
            ]
            """
            .trimIndent()
    }
}
package com.avito.android.module_type

/**
 * Описывает тип модуля исходя из его содержимого
 */
public enum class FunctionalType {

    /**
     * Модуль с общими архитектурными абстракциями, которые могут использоваться по всему проекту.
     *
     * См. [:abstract](https://docs.k.avito.ru/mobile/android/architecture/modules-2/Modules/#abstract)
     */
    Abstract,

    /**
     * Модуль с интерфейсом к реализации функциональности.
     *
     * См. [:public](https://docs.k.avito.ru/mobile/android/architecture/modules-2/Modules/#public)
     */
    Public,

    /**
     * Модуль с реализацией функциональности.
     * Может использоваться как для реализации фичи, так и для реализации общей библиотеки.
     *
     * См. [:impl](https://docs.k.avito.ru/mobile/android/architecture/modules-2/Modules/#impl)
     */
    Impl,

    /**
     * Модуль с фейковой реализацией функциональности.
     *
     * См. [:fake](https://docs.k.avito.ru/mobile/android/architecture/modules-2/Modules/#fake)
     */
    Fake,

    /**
     * Модуль с реализацией функциональности.
     * Может быть подключен в качестве зависимости только к дебажной сборке.
     *
     * См. [:debug](https://docs.k.avito.ru/mobile/android/architecture/modules-2/Modules/#debug)
     */
    Debug,

    /**
     * Модуль с DI-компонентами, связывающими код из Public и Impl.
     *
     * Реализован на случай использования стратегии
     * [@MergeComponent в отдельном модуле](https://cf.avito.ru/pages/viewpage.action?pageId=261393720)
     */
    ImplWiring,

    /**
     * Модуль с DI-компонентами, связывающими код из Public и Fake.
     *
     * Реализован на случай использования стратегии
     * [@MergeComponent в отдельном модуле](https://cf.avito.ru/pages/viewpage.action?pageId=261393720)
     */
    FakeWiring,

    /**
     * Модуль приложения, предназначенного для конечного пользователя.
     */
    UserApp,

    /**
     * Модуль демонстрационного приложения, используемого для разработки и тестирования.
     *
     * См. [:demo](https://docs.k.avito.ru/mobile/android/architecture/modules-2/Modules/#demo)
     */
    DemoApp,

    /**
     * Модуль с общими сущностями, для которых не целесообразно дел


cmp r1, r6
	ble label175
	add r0, r3, r6, lsl #2
	b label171
label174:
	add r0, r0, #4
label171:
	ldr r3, [r0, #0]
	str r3, [r2, r6, lsl #2]
	add r6, r6, #1
	cmp r1, r6
	bgt label174
label175:
	pop { r4, r5, r6, r7, r8 }
	bx lr
label191:
	mov r5, r6
	mov r6, #0
	b label155
.p2align 4
cmmc_parallel_body_2:
	@ stack usage: CalleeArg[0] Local[0] RegSpill[44] CalleeSaved[0]
	push { r4, r5, r6, r7, r8, r9, r10, r11 }
	sub sp, sp, #44
	mov r2, r0
	str r1, [sp, #40]
	movw r1, #:lower16:cmmc_parallel_body_payload_2
	movt r1, #:upper16:cmmc_parallel_body_payload_2
	ldr r0, [r1, #4]
	str r0, [sp, #32]
	ldr r3, [r1, #8]
	str r3, [sp, #36]
	ldr r7, [r1, #12]
	str r7, [sp, #28]
	ldr r0, [r1, #0]
	movw r1, #:lower16:b
	movt r1, #:upper16:b
	mla r0, r2, r7, r0
	add r1, r1, r0, lsl #2
	str r1, [sp, #24]
	str r2, [sp, #12]
	mov r1, r2
	b label300
.p2align 4
label430:
	ldr r1, [sp, #12]
	add r0, r1, #1
	ldr r1, [sp, #40]
	cmp r1, r0
	ble label324
	ldr r7, [sp, #28]
	ldr r1, [sp, #24]
	add r1, r1, r7, lsl #2
	str r1, [sp, #24]
	str r0, [sp, #12]
	mov r1, r0
.p2align 4
label300:
	ldr r0, [sp, #32]
	ldr r1, [sp, #12]
	sub r2, r1, r0
	add r0, r0, r1
	str r2, [sp, #16]
	str r0, [sp, #20]
	ldr r1, [sp, #24]
	str r1, [sp, #8]
	mov r1, #0
	str r1, [sp, #0]
	ldr r0, [sp, #32]
	sub r6, r1, r0
	add r1, r0, r1
	str r6, [sp, #4]
	mov r0, #0
	ldr r3, [sp, #36]
	movw r4, #:lower16:a
	movt r4, #:upper16:a
	cmp r3, r2
	add r4, r4, r6, lsl #2
	mov r3, #0
	movwle r3, #1
	orr r5, r2, r6
	ldr r7, [sp, #28]
	lsr r5, r5, #31
	and r5, r5, #1
	orr r5, r3, r5
	cmp r7, r6
	mov r7, #0
	movwle r7, #1
	orrs r5, r


style.replace("id", "").replace("ty", "tie")}s"]) {
                if(this == null || !toBoolean()) return@addEventHandler
            }
            popup = ImagePopup()
            val text = charToWord(index, style).toUpperCase()
            popup.image = getIcon(style, text) ?: return@addEventHandler
            popup.show(area, position.x, position.y + .5)
        }
    }

    private fun getIconableFromStyleClass(styleClass: String, text: String): Iconable? = try {
        val component: McComponent? = when(styleClass) {
            "item" -> McClass(Items).valueOf<Item>(text.split(":")[0])
            "itemid" -> IdAble.byId(McClass(Items).components, text.split(":")[0].toShort())
            "particle" -> McClass(Particles).valueOf<Particle>(text)
            "effect" -> McClass(Effects).valueOf<Effect>(text)
            "entity" -> McClass(Entities).valueOf<Entity>(text)
            else -> null
        }
        component as? Iconable
    } catch(e: Exception) {
        null
    }

    private fun getIcon(styleClass: String, text: String): Image? {
        val iconable = getIconableFromStyleClass(styleClass, text)
        if(iconable == null || iconable.icons.isEmpty()) return null
        return try {
            if(styleClass == "item" || styleClass == "itemid") {
                val parts = text.split(":")
                if(parts.size == 2) {
                    iconable.icons[parts[1].toInt()]
                } else iconable.icons[0]
            } else iconable.icons[0]
        } catch(e: Exception) {
            iconable.icons[0]
        }
    }
}@file:Suppress("DEPRECATION")

package org.chorusmc.chorus.addon

import org.chorusmc.chorus.Chorus
import java.io.File
import java.io.FileInputStream
import java.io.InputStreamReader
import java.util.function.Predicate
import javax.script.ScriptContext
import javax.script.ScriptEngine
import javax.script.ScriptException
import javax.script.SimpleScriptContext

/**
 * Represents a JavaScript add-on
 * @author Giorgio Garofalo
 */
data class Addon(val file: File) {

    lateinit var context: ScriptContext
        private set

    val name: String
        get() = file.name.removeSuffix(".js")

    val folder: File
        get() = File(file.parentFile, name)

    val configPrefix: String
        get() = "addon=$name:"

    var config: AddonConfiguration? = null

    val configKeys = mutableListOf<String>()

    var allowSettings = false
    var translateSettings = false

    var version: String = "1.0.0"
        private set
    var credits: String? = null
        private set
    var imageUrl: String? = null
        private set
    var description: String? = null
        private set

    private fun createFolder() {
        with(folder) {
            if(!exists()) mkdir()
        }
    }

    fun createConfig(values: Map<String, Any>) {
        createFolder()
        config = AddonConfiguration()
        with(config!!) {
            createIfAbsent(folder)
            val keys = this.keys
            values.forEach { (k, v) ->
                if(k !in configKeys) {
                    configKeys += k
                }
                if(k !in keys) {
                    config!!.setWithoutSaving(k, v)
                }
            }
            store()
        }
    }

    fun eval() {
        context = SimpleScriptContext()
        with(Addons.scriptEngine!!) {
            context = this@Addon.context

            // Set Graal options
            "polyglot.js".let { js ->
                put("$js.allowHostAccess", true)
                put("$js.allowHostClassLookup", Predicate<String> { _ -> true })
                put("$js.allowHostClassLoading", true)
                put("$js.allowIO", true)


 κ  954    l* λ  955    m* μ  956    n* ν  957    c* ξ  958    o* ο  959
        |p* π  960    r* ρ  961    *s ς  962    s* σ  963    t* τ  964    u* υ  965
        |f* φ  966    x* χ  967    q* ψ  968    w* ω  969    j* ϊ  970    v* ϋ  971
        |o% ό  972    u% ύ  973    w% ώ  974    'G Ϙ  984    ,G ϙ  985    T3 Ϛ  986
        |t3 ϛ  987    M3 Ϝ  988    m3 ϝ  989    K3 Ϟ  990    k3 ϟ  991    P3 Ϡ  992
        |p3 ϡ  993    '% ϴ  1012   j3 ϵ  1013
        |Cyrillic
        |IO Ё  1025   D% Ђ  1026   G% Ѓ  1027   IE Є  1028   DS Ѕ  1029   II І  1030
        |YI Ї  1031   J% Ј  1032   LJ Љ  1033   NJ Њ  1034   Ts Ћ  1035   KJ Ќ  1036
        |V% Ў  1038   DZ Џ  1039   A= А  1040   B= Б  1041   V= В  1042   G= Г  1043
        |D= Д  1044   E= Е  1045   Z% Ж  1046   Z= З  1047   I= И  1048   J= Й  1049
        |K= К  1050   L= Л  1051   M= М  1052   N= Н  1053   O= О  1054   P= П  1055
        |R= Р  1056   S= С  1057   T= Т  1058   U= У  1059   F= Ф  1060   H= Х  1061
        |C= Ц  1062   C% Ч  1063   S% Ш  1064   Sc Щ  1065   =" Ъ  1066   Y= Ы  1067
        |%" Ь  1068   JE Э  1069   JU Ю  1070   JA Я  1071   a= а  1072   b= б  1073
        |v= в  1074   g= г  1075   d= д  1076   e= е  1077   z% ж  1078   z= з  1079
        |i= и  1080   j= й  1081   k= к  1082   l= л  1083   m= м  1084   n= н  1085
        |o= о  1086   p= п  1087   r= р  1088   s= с  1089   t= т  1090   u= у  1091
        |f= ф  1092   h= х  1093   c= ц  1094   c% ч  1095   s% ш  1096   sc щ  1097
        |=' ъ  1098   y= ы  1099   %' ь  1100   je э  1101   ju ю  1102   ja я  1103
        |io ё  1105   d% ђ  1106   g% ѓ  1107   ie є  1108   ds ѕ  1109   ii і  1110
        |yi ї  1111   j% ј  1112   lj љ  1113   nj њ  1114   ts ћ  1115   kj ќ  1116
        |v% ў  1118   dz џ  1119   Y3 Ѣ  1122   y3 ѣ  1123   O3 Ѫ  1130   o3 ѫ  1131
        |F3


},
    configurable: true
});

/**
 * [read-only] The y coordinate on the canvas area of the latest touch event.
 *
 * @static
 * @property y
 * @type Number
 */
Object.defineProperty(TouchInput, 'y', {
    get: function() {
        return this._currentY;
    },
    configurable: true
});

TouchInput.setActive = function(value) {
    this._active = value;
};

TouchInput.isActive = function() {
    return this._active;
};

//-----------------------------------------------------------------------------
// Scene_Battle
//
// The scene class of the battle tactics system screen.

Scene_Battle.prototype.isMapTouchOk = function() {
    return false;
};

MouseSystem.Scene_Battle_updateBattleProcess = Scene_Battle.prototype.updateBattleProcess;
Scene_Battle.prototype.updateBattleProcess = function() {
    if (!this.isAnyInputWindowActive() || BattleManager.isBattleEnd()) {
        $gameSelector.updateMoveByMouse();
    }
    MouseSystem.Scene_Battle_updateBattleProcess.call(this);
};

//-----------------------------------------------------------------------------
// BattleManager
//
// The static class that manages battle progress.

MouseSystem.BattleManager_udpateMove = BattleManager.updateMove;
BattleManager.updateMove = function() {
    MouseSystem.BattleManager_udpateMove.call(this);
    var x = $gameSelector.x;
    var y = $gameSelector.y;
    $gameMap.performScroll(x, y);
};

//-----------------------------------------------------------------------------
// Game_Selector
//
// The game object class for the selector.

Game_Selector.prototype.updateMoveByMouse = function() {
    if (this.canMove() && TouchInput.isActive()) {
        var saveX = this._x;
        var saveY = this._y;
        this._x = $gameMap.canvasToMapX(TouchInput.currentX);
        this._y = $gameMap.canvasToMapY(TouchInput.currentY);
        if (this._x !== saveX || this._y !== saveY) {
            this.executeMove(this.x, this.y);
            this.updateSelect();
        }
    }
};

Game_Selector.prototype.updateScroll = function(lastScrolledX, lastScrolledY) {
    if (this.canMove()) {
        var x1 = lastScrolledX;
        var y1 = lastScrolledY;
        var x2 = this.scrolledX();
        var y2 = this.scrolledY();
        if (TouchInput.isActive()) {
            this.updateScrollTouch();
        } else {
            this.updateScrollInput(x1, y1, x2, y2);
        }
    }
};

Game_Selector.prototype.updateScrollTouch = function() {
    if ($gameMap.adjustY(this.y) > (Graphics.height / $gameMap.tileHeight() - 1) - 1) {
        $gameMap.scrollDown(this.distancePerFrame());
    }
    if ($gameMap.adjustX(this.x) < 1) {
        $gameMap.scrollLeft(this.distancePerFrame());
    }
    if ($gameMap.adjustX(this.x) > (Graphics.width / $gameMap.tileWidth() - 1) - 1) {
        $gameMap.scrollRight(this.distancePerFrame());
    }
    if ($gameMap.adjustY(this.y) < 1) {
        $gameMap.scrollUp(this.distancePerFrame());
    }
};

Game_Selector.prototype.updateScrollInput = function(x1, y1, x2, y2) {
    if (y2 > y1 && y2 > this.centerY()) {
        $gameMap.scrollDown(y2 - y1);
    }
    if (x2 < x1 && x2 < this.centerX()) {
        $gameMap.scrollLeft(x1 - x2);
    }
    if (x2 > x1 && x2 > this.centerX()) {
        $gameMap.scrollRight(x2 - x1);
    }
    if (y


 NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

#include <functional>
#include <memory>
#include <set>
#include <string>
#include <type_traits>
#include <utility>
#include <vector>

#include <gflags/gflags_declare.h>
#include <gtest/gtest.h>

#include "kudu/client/client.h"
#include "kudu/client/schema.h"
#include "kudu/gutil/strings/join.h"
#include "kudu/gutil/strings/substitute.h"
#include "kudu/master/mini_master.h"
#include "kudu/master/rest_catalog_test_base.h"
#include "kudu/mini-cluster/internal_mini_cluster.h"
#include "kudu/security/test/mini_kdc.h"
#include "kudu/util/curl_util.h"
#include "kudu/util/faststring.h"
#include "kudu/util/net/net_util.h"
#include "kudu/util/net/sockaddr.h"
#include "kudu/util/regex.h"
#include "kudu/util/status.h"
#include "kudu/util/test_macros.h"
#include "kudu/util/test_util.h"

DECLARE_string(spnego_keytab_file);
DECLARE_bool(webserver_require_spnego);
DECLARE_bool(enable_rest_api);

using kudu::Status;
using kudu::client::KuduClientBuilder;
using kudu::client::KuduTable;
using kudu::client::sp::shared_ptr;
using kudu::cluster::InternalMiniCluster;
using kudu::cluster::InternalMiniClusterOptions;
using std::set;
using std::string;
using std::vector;
using std::unique_ptr;
using strings::Substitute;

namespace kudu {
namespace master {

class SpnegoRestCatalogTest : public RestCatalogTestBase {
 public:
  void SetUp() override {
    KuduTest::SetUp();

    kdc_.reset(new MiniKdc(MiniKdcOptions{}));
    ASSERT_OK(kdc_->Start());
    ASSERT_OK(kdc_->SetKrb5Environment());
    string kt_path;
    ASSERT_OK(kdc_->CreateServiceKeytabWithName("HTTP/127.0.0.1", "spnego.dedicated", &kt_path));
    ASSERT_OK(kdc_->CreateUserPrincipal(kDefaultPrincipal));
    FLAGS_spnego_keytab_file = kt_path;
    FLAGS_webserver_require_spnego = true;
    FLAGS_enable_rest_api = true;

    InternalMiniClusterOptions opts;
    opts.bind_mode = BindMode::LOOPBACK;

    cluster_.reset(new InternalMiniCluster(env_, std::move(opts)));

    ASSERT_OK(cluster_->Start());
    ASSERT_OK(KuduClientBuilder()
                  .add_master_server_addr(cluster_->mini_master()->bound_rpc_addr().ToString())
                  .Build(&client_));
  }

 protected:
  unique_ptr<MiniKdc> kdc_;
  unique_ptr<InternalMiniCluster> cluster_;
  const string kDefaultPrincipa


n);
			binIDs.removeIf(i -> i > clen);
			weIDs.removeIf(i -> i > clen);
			bowIDs.removeIf(i -> i > clen);

			// create individual encoders
			if(!rcIDs.isEmpty())
				for(Integer id : rcIDs)
					addEncoderToMap(new ColumnEncoderRecode(id), colEncoders);
			if(!haIDs.isEmpty())
				for(Integer id : haIDs)
					addEncoderToMap(new ColumnEncoderFeatureHash(id, TfMetaUtils.getK(jSpec)), colEncoders);
			if(!ptIDs.isEmpty())
				for(Integer id : ptIDs)
					addEncoderToMap(new ColumnEncoderPassThrough(id), colEncoders);
			if(!weIDs.isEmpty())
				for(Integer id : weIDs)
					addEncoderToMap(new ColumnEncoderWordEmbedding(id), colEncoders);
			if(!bowIDs.isEmpty())
				for(Integer id : bowIDs)
					addEncoderToMap(new ColumnEncoderBagOfWords(id), colEncoders);
			if(!binIDs.isEmpty())
				for(Object o : (JSONArray) jSpec.get(TfMethod.BIN.toString())) {
					JSONObject colspec = (JSONObject) o;
					int numBins = colspec.containsKey("numbins") ? colspec.getInt("numbins") : 1;
					int id = TfMetaUtils.parseJsonObjectID(colspec, colnames, minCol, maxCol, ids);
					if(id <= 0)
						continue;
					String method = colspec.get("method").toString().toUpperCase();
					ColumnEncoderBin.BinMethod binMethod;
					if ("EQUI-WIDTH".equals(method))
						binMethod = ColumnEncoderBin.BinMethod.EQUI_WIDTH;
					else if ("EQUI-HEIGHT".equals(method))
						binMethod = ColumnEncoderBin.BinMethod.EQUI_HEIGHT;
					else if ("EQUI-HEIGHT-APPROX".equals(method))
						binMethod = ColumnEncoderBin.BinMethod.EQUI_HEIGHT_APPROX;
					else
						throw new DMLRuntimeException("Unsupported binning method: " + method);
					ColumnEncoderBin bin = new ColumnEncoderBin(id, numBins, binMethod);
					addEncoderToMap(bin, colEncoders);
				}
			if(!dcIDs.isEmpty())
				for(Integer id : dcIDs)
					addEncoderToMap(new ColumnEncoderDummycode(id), colEncoders);
			if(!udfIDs.isEmpty()) {
				String name = jSpec.getJSONObject("udf").getString("name");
				for(Integer id : udfIDs)
					addEncoderToMap(new ColumnEncoderUDF(id, name), colEncoders);
			}

			// create composite decoder of all created encoders
			for(Entry<Integer, List<ColumnEncoder>> listEntry : colEncoders.entrySet()) {
				if(DMLScript.STATISTICS)
					TransformStatistics.incEncoderCount(listEntry.getValue().size());
				lencoders.add(new ColumnEncoderComposite(listEntry.getValue()));
			}
			encoder = new MultiColumnEncoder(lencoders);
			if(!oIDs.isEmpty()) {
				encoder.addReplaceLegacyEncoder(new EncoderOmit(jSpec, colnames, clen, minCol, maxCol));
				if(DMLScript.STATISTICS)
					TransformStatistics.incEncoderCount(1);
			}
			if(!mvIDs.isEmpty()) {
				EncoderMVImpute ma = new EncoderMVImpute(jSpec, colnames, clen, minCol, maxCol);
				ma.initRecodeIDList(rcIDs);
				encoder.addReplaceLegacyEncoder(ma);
				if(DMLScript.STATISTICS)
					TransformStatistics.incEncoderCount(1);
			}

			// initialize meta data w/ robustness for superset of cols
			if(meta != null) {
				String[] colnames2 = meta.getColumnNames();

				if(!TfMetaUtils.isIDSpec(jSpec) && colnames != null &&


	tlsInfo := transport.TLSInfo{
		CertFile:      etcdCertFile,
		KeyFile:       etcdKeyFile,
		TrustedCAFile: etcdCaFile,
	}
	tlsConfig, err := tlsInfo.ClientConfig()
	if err != nil {
		return nil, fmt.Errorf("ERROR: %s", err)
	}
	return tlsConfig, nil
}

func newZKSecureEtcd(etcdEps []string, tlsConfig *tls.Config) (p personality) {
	// talk to the etcd3 server
	cfg := etcd.Config{Endpoints: etcdEps, TLS: tlsConfig}
	c, err := etcd.New(cfg)
	if err != nil {
		panic(err)
	}
	p.authf = zetcd.NewAuth(c)
	p.zkf = zetcd.NewZK(c)
	p.ctx = c.Ctx()
	return p
}

func newZKEtcd(etcdEps []string) (p personality) {
	// talk to the etcd3 server
	cfg := etcd.Config{Endpoints: etcdEps}
	c, err := etcd.New(cfg)
	if err != nil {
		panic(err)
	}
	p.authf = zetcd.NewAuth(c)
	p.zkf = zetcd.NewZK(c)
	p.ctx = c.Ctx()
	return p
}

func newBridge(bridgeAddr string) (p personality) {
	// proxy to zk server
	p.authf = zk.NewAuth([]string{bridgeAddr})
	p.zkf = zk.NewZK()
	p.ctx = context.Background()
	return p
}

func newOracle(etcdEps []string, bridgeAddr, oracle string) (p personality) {
	var cper, oper personality
	switch oracle {
	case "zk":
		cper, oper = newZKEtcd(etcdEps), newBridge(bridgeAddr)
	case "etcd":
		oper, cper = newZKEtcd(etcdEps), newBridge(bridgeAddr)
	default:
		fmt.Println("oracle expected etcd or zk, got", oracle)
		os.Exit(1)
	}
	p.authf = xchk.NewAuth(cper.authf, oper.authf, nil)
	p.zkf = xchk.NewZK(cper.zkf, oper.zkf, nil)
	p.ctx = cper.ctx
	return p
}

func main() {
	etcdAddrs := flag.String("endpoints", "", "etcd3 client address")
	pprofAddr := flag.String("pprof-addr", "", "enable pprof with a listen address")
	etcdCertFile := flag.String("certfile", "", "etcd3 cert file")
	etcdKeyFile := flag.String("keyfile", "", "etcd3 key file")
	etcdCaFile := flag.String("cafile", "", "etcd3 ca file")
	zkaddr := flag.String("zkaddr", "", "address for serving zookeeper clients")
	oracle := flag.String("debug-oracle", "", "oracle zookeeper server address")
	bridgeAddr := flag.String("debug-zkbridge", "", "bridge zookeeper server address")

	flag.Parse()
	fmt.Println("Running zetcd proxy")
	fmt.Println("Version:", version.Version)
	fmt.Println("SHA:", version.SHA)

	if len(*zkaddr) == 0 {
		fmt.Println("expected -zkaddr")
		os.Exit(1)
	}

	if len(*pprofAddr) != 0 {
		httpmux := http.NewServeMux()
		pfx := "/debug/pprof/"
		httpmux.Handle(pfx, http.HandlerFunc(pprof.Index))
		httpmux.Handle(pfx+"profile", http.HandlerFunc(pprof.Profile))
		httpmux.Handle(pfx+"symbol", http.HandlerFunc(pprof.Index))
		httpmux.Handle(pfx+"cmdline", http.HandlerFunc(pprof.Cmdline))
		httpmux.


import time

def right(stdscr, name_profile, player_x, player_y, name_x, name_y, max_height, max_width):
    from controllers.game_control import game_control
    stdscr.addstr(player_y, player_x[0], " ")
    stdscr.addstr(name_y, name_x[0], " " * len(name_profile))
    if player_x[0] + 5 < max_width:
        player_x[0] += 5
        name_x[0] += 5
    stdscr.addstr(player_y, player_x[0], "🤓")
    stdscr.addstr(name_y, name_x[0], name_profile)
    stdscr.refresh()


T ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package plugily.projects.villagedefense.creatures.v1_9_UP;

/**
 * @author Tigerpanzer_02
 * <p>
 * Created at 15.01.2022
 */
public class Rate {

  private final int phase;
  private final int waveHigher;
  private final int waveLower;
  private final int spawnLower;
  private final int rate;
  private final int division;
  private final int reduce;
  private final RateType rateType;

  public Rate(int phase, int waveHigher, int waveLower, int spawnLower, int rate, int division, int reduce, RateType rateType) {
    this.phase = phase;
    this.waveHigher = waveHigher;
    this.waveLower = waveLower;
    this.spawnLower = spawnLower;
    this.rate = rate;
    this.division = division;
    this.reduce = reduce;
    this.rateType = rateType;
  }

  public boolean isPhase(int number) {
    if(phase == number) {
      return true;
    }
    return phase == 0;
  }

  public int getPhase() {
    return phase;
  }

  public boolean isWaveHigher(int wave) {
    if(waveHigher == 0) {
      return true;
    }
    return wave >= waveHigher;
  }

  public boolean isWaveLower(int wave) {
    if(waveLower == 0) {
      return true;
    }
    return wave <= waveLower;
  }

  public boolean isSpawnLower(int number) {
    if(spawnLower == 0) {
      return true;
    }
    return number <= spawnLower;
  }

  public int getSpawnLower() {
    return spawnLower;
  }

  public int getWaveHigher() {
    return waveHigher;
  }

  public int getWaveLower() {
    return waveLower;
  }

  public double getRate() {
    if(rate == 0) {
      return 1;
    }
    return rate;
  }

  public int getDivision() {
    if(division == 0) {
      return 1;
    }
    return division;
  }

  public int getReduce() {
    return reduce;
  }

  public RateType getRateType() {
    return rateType;
  }

  public enum RateType {
    SPAWN, AMOUNT, CHECK
  }
}
/*
 *  Village Defense - Protect villagers from hordes of zombies
 *  Copyright (c) 2023 Plugily Projects - maintained by Tigerpanzer_02 and contributors
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package plugily.projects.villagedefense.creatures.v1_8_R3;

import net.minecraft.server.v1_8_R3.EntityHuman;
import net.minecraft.server.v1_8_R3.EntityIronGolem;
import net.minecraft.server.v1_8_R3.EntityVill


local function printUsage()
	print( "Usages:" )
	print( "pastebin put <filename>" )
	print( "pastebin get <code> <filename>" )
	print( "pastebin run <code> <arguments>" )
end

if not http then
	printError( "Pastebin requires http API" )
	printError( "Set http_enable to true in ComputerCraft.cfg" )
	return
end

local pastebin = require('opus.http.pastebin')

local tArgs = { ... }
local sCommand = tArgs[1]

if sCommand == "put" then
	-- Upload a file to pastebin.com

	if #tArgs < 2 then
		printUsage()
		return
	end

	-- Determine file to upload
	local sFile = tArgs[2]
	local sPath = shell.resolve( sFile )
	if not fs.exists( sPath ) or fs.isDir( sPath ) then
		print( "No such file" )
		return
	end

	print( "Connecting to pastebin.com... " )

	local resp, msg = pastebin.put(sPath)

	if resp then
		print( "Uploaded as " .. resp )
		print( "Run \"pastebin get "..resp.."\" to download anywhere" )

	else
		printError( msg )
	end

elseif sCommand == "get" then
	-- Download a file from pastebin.com

	if #tArgs < 3 then
		printUsage()
		return
	end

	local sCode = pastebin.parseCode(tArgs[2])
	if not sCode th


riday)
            {
                //in 2000, easter monday was 1st May
                //in 2043, great friday is 1st May
                labourDay = labourDay.AddSeconds(1);
            }
            bHols.Add(labourDay, isGreek ? "Εργατική Πρωτομαγιά" : "Labour Day");
            bHols.Add(WhitMonday(year), isGreek ? "Δευτέρα Πεντηκοστής" : "Whit Monday");
            bHols.Add(new DateTime(year, 8, 15), isGreek ? "Κοίμηση της Θεοτόκου" : "Dormition of the Mother of God");
            bHols.Add(new DateTime(year, 10, 28), isGreek ? "Το Όχι" : "Ochi Day");
            bHols.Add(new DateTime(year, 12, 25), isGreek ? "Χριστούγεννα" : "Christmas Day");
            bHols.Add(new DateTime(year, 12, 26), isGreek ? "Σύναξις Υπεραγίας Θεοτόκου Μαρίας" : "Glorifying Mother of God");
            return bHols;
        }

        /// <summary>
        /// Is a specific date a holiday (does not include Sundays)
        /// </summary>
        public override bool IsPublicHoliday(DateTime dt)
        {
            var year = dt.Year;
            var date = dt.Date;
            var day = date.Day;

            switch (dt.Month)
            {
                case 1:
                    if (1 == day) //new year
                        return true;
                    if (6 == day) //epiphany
                        return true;
                    break;

                case 2:
                    if (CleanMonday(year) == date)
                        return true;
                    break;

                case 3:
                case 4:
                    if (CleanMonday(year) == date) //can be in March if easter is late
                        return true;
                    if (IndependenceDay(year) == date)
                        return true;
                    if (GreatFriday(year) == date)
                        return true;
                    if (EasterMonday(year) == date) //can be in May
                        return true;
                    break;

                case 5:
                    if (1 == day) //may day
                        return true;
                    if (GreatFriday(year) == date)
                        return true;
                    if (EasterMonday(year) == date) //can be in May
                        return true;
                    if (WhitMonday(year) == date)
                        return true;
                    break;

                case 6:
                    if (WhitMonday(year) == date)
                        return true;
                    break;

                case 8:
                    if (15 == day) //Dormition
                        return true;
                    break;

                case 10:
                    if (28 == day) //Ochi Day
                        return true;
                    break;

                case 12:
                    if (25 == day) //Christmas
                        return true;
                    if (26 == day) //Glorifying Mother
                        return true;
                    break;
            }

            return false;
        }
    }
}


ackage_version_string() {
    return _sp_get_package_version_string();
  }

  late final _sp_get_package_version_stringPtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function()>>(
          'sp_get_package_version_string');
  late final _sp_get_package_version_string = _sp_get_package_version_stringPtr
      .asFunction<ffi.Pointer<ffi.Char> Function()>();

  /// Get the "current" part of the libserialport library version number.
  ///
  /// @return The "current" library version number.
  ///
  /// @since 0.1.0
  int sp_get_current_lib_version() {
    return _sp_get_current_lib_version();
  }

  late final _sp_get_current_lib_versionPtr =
      _lookup<ffi.NativeFunction<ffi.Int Function()>>(
          'sp_get_current_lib_version');
  late final _sp_get_current_lib_version =
      _sp_get_current_lib_versionPtr.asFunction<int Function()>();

  /// Get the "revision" part of the libserialport library version number.
  ///
  /// @return The "revision" library version number.
  ///
  /// @since 0.1.0
  int sp_get_revision_lib_version() {
    return _sp_get_revision_lib_version();
  }

  late final _sp_get_revision_lib_versionPtr =
      _lookup<ffi.NativeFunction<ffi.Int Function()>>(
          'sp_get_revision_lib_version');
  late final _sp_get_revision_lib_version =
      _sp_get_revision_lib_versionPtr.asFunction<int Function()>();

  /// Get the "age" part of the libserialport library version number.
  ///
  /// @return The "age" library version number.
  ///
  /// @since 0.1.0
  int sp_get_age_lib_version() {
    return _sp_get_age_lib_version();
  }

  late final _sp_get_age_lib_versionPtr =
      _lookup<ffi.NativeFunction<ffi.Int Function()>>('sp_get_age_lib_version');
  late final _sp_get_age_lib_version =
      _sp_get_age_lib_versionPtr.asFunction<int Function()>();

  /// Get the libserialport library version number as a string.
  ///
  /// @return The library version number string. The returned string is
  /// static and thus should NOT be free'd by the caller.
  ///
  /// @since 0.1.0
  ffi.Pointer<ffi.Char> sp_get_lib_version_string() {
    return _sp_get_lib_version_string();
  }

  late final _sp_get_lib_version_stringPtr =
      _lookup<ffi.NativeFunction<ffi.Pointer<ffi.Char> Function()>>(
          'sp_get_lib_version_string');
  late final _sp_get_lib_version_string = _sp_get_lib_version_stringPtr
      .asFunction<ffi.Pointer<ffi.Char> Function()>();
}

/// Return values.
abstract class sp_return {
  /// Operation completed successfully.
  static const int SP_OK = 0;

  /// Invalid arguments were passed to the function.
  static const int SP_ERR_ARG = -1;

  /// A system error occurred while executing the operation.
  static const int SP_ERR_FAIL = -2;

  /// A memory allocation failed while executing the operation.
  static const int SP_ERR_MEM = -3;

  /// The requested operation is not supported by this system or device.
  static const int SP_ERR_SUPP = -4;
}

/// Port access modes.
abstract class sp_mode {
  /// Open port for read access.
  static const int SP_MODE_READ = 1;

  /// Open port for write access.
  static const int SP_MODE_WRITE = 2;


List;
import java.util.Set;

import de.metanome.algorithms.dcfinder.input.partitions.clusters.indexers.CategoricalTpIDsIndexer;
import de.metanome.algorithms.dcfinder.input.partitions.clusters.indexers.ITPIDsIndexer;
import de.metanome.algorithms.dcfinder.input.partitions.clusters.indexers.NumericalTpIDsIndexer;

public class PLI {

	List<List<Integer>> tpIDs;
	ITPIDsIndexer tpIDsIndexer;
	long relSize;
	boolean numerical;

	// descending order for numerical
	public PLI(List<Set<Integer>> setPlis, long relSize, boolean numerical) {
		tpIDs = new ArrayList<>(setPlis.size());
		this.relSize = relSize;
		this.numerical = numerical;

		for (Set<Integer> set : setPlis) {
			List<Integer> tidsList = new ArrayList<>(set);
			tpIDs.add(tidsList);
		}
		Collections.reverse(tpIDs);
	}

	public PLI(List<Set<Integer>> setPlis, long relSize, boolean numerical, int[] values) {
		tpIDs = new ArrayList<>(setPlis.size());
		this.relSize = relSize;
		this.numerical = numerical;

		for (Set<Integer> set : setPlis) {
			List<Integer> tidsList = new ArrayList<>(set);
			tpIDs.add(tidsList);
		}
		Collections.reverse(tpIDs);
		if (numerical) {

			tpIDsIndexer = new NumericalTpIDsIndexer(tpIDs, values);

		} else {

			tpIDsIndexer = new CategoricalTpIDsIndexer(tpIDs, values);
		}
	}

	public Collection<Integer> getValues() {
		return tpIDsIndexer.getValues();
	}

	public boolean isNumerical() {
		return numerical;
	}

	public long getRelSize() {
		return relSize;
	}

	public void setRelSize(long relSize) {
		this.relSize = relSize;
	}

	public List<List<Integer>> getPlis() {
		return tpIDs;
	}

	public void setPlis(List<List<Integer>> plis) {
		this.tpIDs = plis;
	}

	public List<Integer> getTpIDsForValue(Integer value) {
		return tpIDsIndexer.getTpIDsForValue(value);
	}

	public int getIndexForValueThatIsLessThan(int value) {
		return tpIDsIndexer.getIndexForValueThatIsLessThan(value);
	}

	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		for (Iterator iterator = tpIDs.iterator(); iterator.hasNext();) {
			List<Integer> list = (List<Integer>) iterator.next();
			sb.append(list + "\n");

		}
		// sb.append("\n");
		// if (numerical)
		// sb.append((NumericalTpIDsIndexer) tpIDsIndexer);
		// else
		// sb.append((CategoricalTpIDsIndexer) tpIDsIndexer);

		return sb.toString();
	}

}
// © Copyright 2019 - 2020 HP Development Company, L.P.
// SPDX-License-Identifier: MIT

package sample.jrender;

import com.hp.jipp.model.MediaSource;
import com.hp.jipp.model.Sides;
import com.hp.jipp.pdl.ColorSpace;
import com.hp.jipp.pdl.OutputSettings;
import com.hp.jipp.pdl.RenderableDocument;
import com.hp.jipp.pdl.RenderablePage;
import com.hp.jipp.pdl.pclm.PclmSettings;
import com.hp.jipp.pdl.pclm.PclmWriter;
import com.hp.jipp.pdl.pwg.PwgSettings;
import com.hp.jipp.pdl.pwg.PwgWriter;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPageTree;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;

class Main {
    private static final int DPI = 30


using System.Threading.Tasks;
using FrontDesk.Contracts;
using MassTransit;
using MediatR;
using Microsoft.Extensions.Logging;
using VetClinicPublic.Web.Models;

namespace VetClinicPublic.MessageHandlers;

public class AppointmentScheduledConsumer : IConsumer<AppointmentScheduledIntegrationEvent>
{
  private readonly ILogger<AppointmentScheduledConsumer> _logger;
  private readonly IMediator _mediator;
  public AppointmentScheduledConsumer(ILogger<AppointmentScheduledConsumer> logger, IMediator mediator)
  {
    _logger = logger;
    _mediator = mediator;
  }

  public async Task Consume(ConsumeContext<Appoi


            ? (jsonMap['regexes'] as List<dynamic>)
                .map((item) => RegexModel.fromJson(item))
                .toList()
                .cast<RegexModel>()
            : <RegexModel>[];

        defaultApi.value = jsonMap['defaultApi'] ?? -1;

        if (jsonMap['autoTileSetting'] != null) {
          autoTitleSetting.value =
              AutoTitleSettingModel.fromJson(jsonMap['autoTileSetting']);
        }

        if (jsonMap['summarySetting'] != null) {
          summarySetting.value =
              SummarySettingModel.fromJson(jsonMap['summarySetting']);
        }
      } else {
        // 文件不存在：证明初次启动
        isShowOnBoardPage.value = true;
        displaySettingModel.value = ChatDisplaySettingModel();
      }

      if (displaySettingModel.value.CustomFontPath != null &&
          displaySettingModel.value.CustomFontPath!.isNotEmpty) {
        await FontManager.initCustomFont(
            displaySettingModel.value.GlobalFont ?? "",
            displaySettingModel.value.CustomFontPath ?? "");
      }

      updateTheme(
          themename: displaySettingModel.value.schemeName,
          fontName: displaySettingModel.value.GlobalFont);
    } catch (e) {
      print('加载设置失败: $e');
      displaySettingModel.value = ChatDisplaySettingModel();
    }
  }

  // 保存设置到本地
  Future<void> saveSettings() async {
    try {
      final directory = await Get.find<SettingController>().getVaultPath();
      final file = File('${directory}/$vaultSettingFileName');

      final Map<String, dynamic> jsonMap = {
        'vaultName': SettingController.currectValutName,
        'lastSyncTime': lastSyncTime.value?.toIso8601String(),
        'apis': apis.map((api) => api.toJson()).toList(),
        'defaultApi': defaultApi.value,
        'regexes': regexes.map((reg) => reg.toJson()).toList(),
        'myId': myId.value,
        'displaySettingModel': displaySettingModel.toJson(),
        'promptSettingModel': promptSettingModel.toJson(),
        'autoTileSetting': autoTitleSetting.toJson(),
        'summarySetting': summarySetting.toJson(),
      };

      final String jsonString = json.encode(jsonMap);
      await file.writeAsString(jsonString);
    } catch (e) {
      print('保存设置失败: $e');
    }
  }

  void updateTheme({String? fontName, String? themename}) {
    FlexScheme theme =
        schemeMap[themename ?? displaySettingModel.value.schemeName] ??
            FlexScheme.sakura;
    FlexScheme.sakura; // 默认使用sakura主题，如果未找到则使用sakura
    themeLight.value = SillyChatThemeBuilder.buildLight(
        theme, fontName ?? displaySettingModel.value.GlobalFont);
    themeNight.value = SillyChatThemeBuilder.buildNight(
        theme, fontName ?? displaySettingModel.value.GlobalFont);
  }

  // API管理方法
  Future<void> addApi(ApiModel api) async {
    if (apis.isEmpty) {
      defaultApi.value = api.id;
    }
    apis.add(api);

    await saveSettings();
  }

  Future<void> updateApi(ApiModel api) async {
    final index = apis.indexWhere((a) => a.id == api.id);
    if (index != -1) {
      apis[index] = api;
      await saveSettings();
    }
  }

  Future<void> deleteApi({required int id}) async {
    apis.removeWhere((a) => a.id == id);
    if (id == defaultApi.value && apis.isNotEmpty) {
      defaultApi.value = apis.first.id


nftAddress, nftTokenId, supply))

        const op = await batch.send()
        await op.confirmation()

        const storage = await (await WalletHelper.Tezos.contract.at(CONTRACT_ADDRESS)).storage()

        return await storage["rev_issues"].get({
            address: nftAddress,
            token_id: parseInt(nftTokenId)
        })
    }

    /** Redeem the NFT */
    export const redeem = async (address: string) => {
        await WalletHelper.connect()
        await initContract()

        const op = await contract.methods.defrac(address).send()
        await op.confirmation()
    }
}

export default FracIt;import { IPokemonInfo } from "../models";
export const pokemonsFixture: IPokemonInfo[] = [
  {
    id: 1,
    num: "001",
    name: "Bulbasaur",
    img: "http://www.serebii.net/pokemongo/pokemon/001.png",
    type: ["Grass", "Poison"],
    height: "0.71 m",
    weight: "6.9 kg",
    candy: "Bulbasaur Candy",
    candy_count: 25,
    egg: "2 km",
    spawn_chance: 0.69,
    avg_spawns: 69,
    spawn_time: "20:00",
    multipliers: [1.58],
    weaknesses: ["Fire", "Ice", "Flying", "Psychic"],
    next_evolution: [
      {
        num: "002",
        name: "Ivysaur"
      },
      {
        num: "003",
        name: "Venusaur"
      }
    ]
  },
  {
    id: 2,
    num: "002",
    name: "Ivysaur",
    img: "http://www.serebii.net/pokemongo/pokemon/002.png",
    type: ["Grass", "Poison"],
    height: "0.99 m",
    weight: "13.0 kg",
    candy: "Bulbasaur Candy",
    candy_count: 100,
    egg: "Not in Eggs",
    spawn_chance: 0.042,
    avg_spawns: 4.2,
    spawn_time: "07:00",
    multipliers: [1.2, 1.6],
    weaknesses: ["Fire", "Ice", "Flying", "Psychic"],
    prev_evolution: [
      {
        num: "001",
        name: "Bulbasaur"
      }
    ],
    next_evolution: [
      {
        num: "003",
        name: "Venusaur"
      }
    ]
  },
  {
    id: 3,
    num: "003",
    name: "Venusaur",
    img: "http://www.serebii.net/pokemongo/pokemon/003.png",
    type: ["Grass", "Poison"],
    height: "2.01 m",
    weight: "100.0 kg",
    candy: "Bulbasaur Candy",
    egg: "Not in Eggs",
    spawn_chance: 0.017,
    avg_spawns: 1.7,
    spawn_time: "11:30",
    multipliers: null,
    weaknesses: ["Fire", "Ice", "Flying", "Psychic"],
    prev_evolution: [
      {
        num: "001",
        name: "Bulbasaur"
      },
      {
        num: "002",
        name: "Ivysaur"
      }
    ]
  },
  {
    id: 4,
    num: "004",
    name: "Charmander",
    img: "http://www.serebii.net/pokemongo/pokemon/004.png",
    type: ["Fire"],
    height: "0.61 m",
    weight: "8.5 kg",
    candy: "Charmander Candy",
    candy_count: 25,
    egg: "2 km",
    spawn_chance: 0.253,
    avg_spawns: 25.3,
    spawn_time: "08:45",
    multipliers: [1.65],
    weaknesses


Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod eum eius numquam sint dolore voluptatibus beatae ab ad, dignissimos fugiat? Nisi odio commodi debitis eveniet tenetur provident aliquid tempora placeat.

    </columns>
    <columns large="6">

Sub Section Title

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod eum eius numquam sint dolore voluptatibus beatae ab ad, dignissimos fugiat? Nisi odio commodi debitis eveniet tenetur provident aliquid tempora placeat.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod eum eius numquam sint dolore voluptatibus beatae ab ad, dignissimos fugiat? Nisi odio commodi debitis eveniet tenetur provident aliquid tempora placeat.

    </columns>
  </row>
  <row>
    <columns>

You received this email because you're signed up to receive updates from us. Click here to unsubscribe.

    </columns>
  </row>
</container>
---
subject: My Welcome Email Template Subject
---

<container class="header">
  <row>
    <columns>

Welcome to Kraken Academy

        <menu class="text-center">
          <item href="#">About</item>
          <item href="#">Course List</item>
          <item href="#">Campus Map</item>
          <item href="#">Contact</item>
        </menu>

    </columns>
  </row>
</container>

<container class="body-border">
  <row>
    <columns>

      <spacer size="32"></spacer>

      <spacer size="16"></spacer>

An exciting future of terrorizing sailors awaits you at Kraken Academy.

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Atque culpa vel architecto, perspiciatis eius cum autem quidem, sunt consequuntur, impedit dolor vitae illum nobis sint nihil aliquid? Assumenda, amet, officia.

        <menu>
          <item href="#">krakenacademy.com</item>
          <item href="#">Facebook</item>
          <item href="#">Twitter</item>
          <item href="#">(408)-555-0123</item>
        </menu>

    </columns>
  </row>

  <spacer size="16"></spacer>
</container>
<!doctype html>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Style Guide</title>
    <link rel="stylesheet" href="assets/css/app.css">
    <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.9.1/styles/github.min.css">


public static PixelPoint FromPointWithDpi(Point point, Vector dpi) => FromPoint(point, new Vector(dpi.X / 96, dpi.Y / 96));

        /// <summary>
        /// Returns the string representation of the point.
        /// </summa


 {
        ModelId::new("WGS72".to_string())
    }
    fn longitude_range(&self) -> LongitudeRange {
        LongitudeRange::L180
    }
    fn surface(&self) -> Ellipsoid {
        crate::surfaces::WGS72_ELLIPSOID
    }
}

impl Ellipsoidal for WGS72Model {}

/// European Terrestrial Reference System 1989.
pub const ETRS89: ETRS89Model = ETRS89Model {};

/// Struct for model: European Terrestrial Reference System 1989.
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct ETRS89Model {}

impl Model for ETRS89Model {
    type Surface = Ellipsoid;
    fn model_id(&self) -> ModelId {
        ModelId::new("ETRS89".to_string())
    }
    fn longitude_range(&self) -> LongitudeRange {
        LongitudeRange::L180
    }
    fn surface(&self) -> Ellipsoid {
        crate::surfaces::GRS80_ELLIPSOID
    }
}

impl Ellipsoidal for ETRS89Model {}

/// North American Datum of 1983.
pub const NAD83: NAD83Model = NAD83Model {};

/// Struct for model: North American Datum of 1983.
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct NAD83Model {}

impl Model for NAD83Model {
    type Surface = Ellipsoid;
    fn model_id(&self) -> ModelId {
        ModelId::new("NAD83".to_string())
    }
    fn longitude_range(&self) -> LongitudeRange {
        LongitudeRange::L180
    }
    fn surface(&self) -> Ellipsoid {
        crate::surfaces::GRS80_ELLIPSOID
    }
}

impl Ellipsoidal for NAD83Model {}

/// European Datum 1950.
pub const ED50: ED50Model = ED50Model {};

/// Struct for model: European Datum 1950.
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct ED50Model {}

impl Model for ED50Model {
    type Surface = Ellipsoid;
    fn model_id(&self) -> ModelId {
        ModelId::new("ED50".to_string())
    }
    fn longitude_range(&self) -> LongitudeRange {
        LongitudeRange::L180
    }
    fn surface(&self) -> Ellipsoid {
        crate::surfaces::INTL_1924_ELLIPSOID
    }
}

impl Ellipsoidal for ED50Model {}

/// Irland.
pub const IRL_1975: Irl1975Model = Irl1975Model {};

/// Struct for model: Irland.
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct Irl1975Model {}

impl Model for Irl1975Model {
    type Surface = Ellipsoid;
    fn model_id(&self) -> ModelId {
        ModelId::new("IRL_1975".to_string())
    }
    fn longitude_range(&self) -> LongitudeRange {
        LongitudeRange::L180
    }
    fn surface(&self) -> Ellipsoid {
        crate::surfaces::AIRY_MODIFIED_ELLIPSOID
    }
}

impl Ellipsoidal for Irl1975Model {}

/// North American Datum of 1927.
pub const NAD27: NAD27Model = NAD27Model {};

/// Struct for model: North American Datum of 1927.
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct NAD27Model {}

impl Model for NAD27Model {
    type Surface = Ellipsoid;
    fn model_id(&self) -> ModelId {
        ModelId::new("NAD27".to_string())
    }
    fn longitude_range(&self) -> LongitudeRange {
        LongitudeRange::L180
    }
    fn surface(&self) -> Ellipsoid {
        crate::surfaces::CLARKE_1866_ELLIPSOID
    }
}

impl Ellipsoidal for NAD27Model {}

/// NTF (Paris) / France I.
pub const NTF: NTF


 INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package org.primesoft.asyncworldedit.adapter;

import static org.primesoft.asyncworldedit.LoggerProvider.log;
import org.primesoft.asyncworldedit.api.IAdapter;
import org.primesoft.asyncworldedit.platform.api.IPlatform;

/**
 *
 * @author SBPrime
 */
public class AdapterProvider {

    /**
     * Initialise the direct chunk API
     * @param platform
     * @return
     */
    public static IAdapter get(IPlatform platform) {
        if (platform == null) {
            log("No server found, native API disabled");
            return null;
        }

        String cServerApi = platform.getServerAPI();
        if (cServerApi == null) {
            log("No server found, native API disabled");
            return null;
        }

        String cServerApiLong = platform.getServerAPILong();
        for (Adapters adapter : Adapters.values()) {
            String apiString = adapter.getApiString();
            String apiVersion = adapter.getApiVersion();

            boolean mApi = cServerApi.equals(apiString);
            boolean mVersion = apiVersion == null || cServerApiLong.startsWith(apiVersion);

            if (mApi && mVersion) {
                IAdapter nativeAdapter = adapter.createInstance();
                if (nativeAdapter != null) {
                    log(String.format("DirectChunkAPI adapter set to %1$s", nativeAdapter.getVersion()));
                    return nativeAdapter;
                }
            }
        }

        log(String.format("No matching adapter found for %s, DirectChunkAPI disabled", cServerApi));
        return null;
    }
}
/*
 * AsyncWorldEdit a performance improvement plugin for Minecraft WorldEdit plugin.
 * Copyright (c) 2014, SBPrime <https://github.com/SBPrime/>
 * Copyright (c) AsyncWorldEdit contributors
 *
 * All rights reserved.
 *
 * Redistribution in source, use in source and binary forms, with or without
 * modification, are permitted free of charge provided that the following
 * conditions are met:
 *
 * 1.  Redistributions of source code must retain the above copyright notice, this
 *     list of conditions and the following disclaimer.
 * 2.  Redistributions of source code, with or without modification, in any form
 *     other then free of charge is not allowed,
 * 3.  Redistributions of source code, with tools and/or scripts used to build the
 *     software is not allowed,
 * 4.  Redistributions of source code, with information on how to compile the software
 *     is not allowed,
 * 5.  Providing information of any sort (excluding information from the software page)
 *     on how to compile the software is not allowed,
 * 6.  You are allowed to build the software for your personal use,
 * 7.  You are allowed to build the software using a non public build server,
 * 8.  Redistributions in binary form in not allowed.
 * 9.  The original author is allowed to redistrubute the software in bnary form.
 * 10. Any derived work based on or containing parts of this software must reproduce
 *     the above copyright notice, this list of conditions and the following
 *     disclaimer in the documentation and/or other materials provided with the
 *     derived work.
 * 11. The original author of the software is allowed to change the license
 *     terms or the entire license of the software as he sees fit.
 * 12. The original author of the soft


2025 */  or      $a0, $s0, $zero            ## $a0 = 00000000
/* 00800 80B07D40 3C0580B0 */  lui     $a1, %hi(func_80B07C88)    ## $a1 = 80B00000
/* 00804 80B07D44 24A57C88 */  addiu   $a1, $a1, %lo(func_80B07C88) ## $a1 = 80B07C88
/* 00808 80B07D48 0C2C1D50 */  jal     func_80B07540
/* 0080C 80B07D4C 8FA40020 */  lw      $a0, 0x0020($sp)
/* 00810 80B07D50 8FA40020 */  lw      $a0, 0x0020($sp)
/* 00814 80B07D54 0C2C1EFB */  jal     func_80B07BEC
/* 00818 80B07D58 02002825 */  or      $a1, $s0, $zero            ## $a1 = 00000000
/* 0081C 80B07D5C 8FA40020 */  lw      $a0, 0x0020($sp)
.L80B07D60:
/* 00820 80B07D60 0C2C1E32 */  jal     func_80B078C8
/* 00824 80B07D64 02002825 */  or      $a1, $s0, $zero            ## $a1 = 00000000
/* 00828 80B07D68 8FBF001C */  lw      $ra, 0x001C($sp)
/* 0082C 80B07D6C 8FB00018 */  lw      $s0, 0x0018($sp)
/* 00830 80B07D70 27BD0020 */  addiu   $sp, $sp, 0x0020           ## $sp = 00000000
/* 00834 80B07D74 03E00008 */  jr      $ra
/* 00838 80B07D78 00000000 */  nop


age .page-body {
  margin: 0 0 30px;
  overflow: hidden;
  background-color: #f9f9f9;
  padding: 30px 25px;
}

.avatar-page .message-error {
  margin: 0 0 10px;
}

.avatar-page .image {
  margin: 0 0 10px;
}

.avatar-page .image img {
  border: 1px solid #ccc;
}

.avatar-page .button-1 {
  font-size: 14px;
}

.avatar-page .button-2 {
  border: none;
  background-color: #888;
  padding: 10px 15px;
  font-size: 14px;
  color: #fff;
  text-transform: uppercase;
}

.avatar-page .button-2:hover,
.avatar-page .button-2:focus {
  background-color: #999;
}

.avatar-page .info {
  color: #444;
}

.vendorinfo-page .button-2 {
  border: medium none;
  background-color: #888;
  padding: 10px 15px;
  font-size: 14px;
  color: #fff;
  text-transform: uppercase;
}

.vendorinfo-page .button-2:hover,
.vendorinfo-page .button-2:focus {
  background-color: #999;
}

.vendorinfo-page .vendor-picture {
  width: 400px;
  margin: 0 auto;
}

.vendorinfo-page .vendor-picture * {
  display: block;
  margin-top: 15px;
}

.check-gift-card-balance-page .page-title {
  margin: 0 0 -1px;
}

.check-gift-card-balance-page .result,
.check-gift-card-balance-page .message-error {
  margin: 20px 0;
}

.check-gift-card-balance-page .fieldset {
  margin: 0 0 30px;
}

/********** SHOPPING CART **********/

.order-progress {
  margin: 0 0 50px;
  background-color: #f6f6f6;
  padding: 15px 0;
  text-align: center;
}

.order-progress ul {
  font-size: 0;
}

.order-progress li {
  display: inline-block;
  margin: 10px;
}

.order-progress a {
  display: block;
  min-width: 70px;
  font-size: 14px; /*reset zeroing*/
  color: #444;
}

.order-progress a:before {
  content: "";
  display: block;
  width: 40px;
  height: 40px;
  margin: 0 auto 15px;
  border: 1px solid #bbb;
  background: #fff url('../images/pointer.png') center no-repeat;
}

.order-progress li.active-step a {
  cursor: pointer;
}

.order-progress li.inactive-step a {
  opacity: 0.3;
  cursor: default;
}

.shopping-cart-page .page-title {
  margin: 0 0 -1px;
  padding: 10px;
}

.shopping-cart-page .message-error {
  margin: 20px 0;
}

.shopping-cart-page td .message-error {
  margin: 10px 0 0;
  text-align: left;
}

.shopping-cart-page .checkout-attributes a {
  color: #4ab3f1;
}

.shopping-cart-page .checkout-attributes a:hover,
.shopping-cart-page .checkout-attributes a:focus {
  text-decoration: underline;
}

.shopping-cart-page .tax-shipping-info {
  margin: 20px 0;
  text-align: center;
}

.sh


  {
    int i;
    for (i = 2; i < 12; i++)
      compare_bindings[i] = eul_nil;
  }

  compare_bindings[ 12] = G001203;
  compare_bindings[ 13] = sym_1206;
  compare_bindings[ 14] = sym_1207;
  compare_bindings[ 15] = sym_1208;
  compare_bindings[ 16] = G001205;
  compare_bindings[ 17] = G001210;
  compare_bindings[ 18] = str_1213;
  compare_bindings[ 19] = sym_1214;
  compare_bindings[ 20] = G001212;
  compare_bindings[ 21] = G001216;
  compare_bindings[ 22] = G001218;
  compare_bindings[ 23] = G001220;
  compare_bindings[ 24] = G001222;
  compare_bindings[ 25] = G001224;
  compare_bindings[ 26] = G001226;
  compare_bindings[ 27] = G001228;
  compare_bindings[ 28] = G001230;
  compare_bindings[ 29] = G001232;
  compare_bindings[ 30] = G001234;
  compare_bindings[ 31] = G001236;
  compare_bindings[ 1] = eul_nil;
  compare_bindings[ 32] = sym_1239;
  compare_bindings[ 33] = sym_1240;
  compare_bindings[ 34] = sym_1241;
  compare_bindings[ 35] = sym_1242;
  compare_bindings[ 36] = sym_1243;
  compare_bindings[ 37] = sym_1244;
  compare_bindings[ 38] = sym_1245;
  compare_bindings[ 39] = sym_1246;
  compare_bindings[ 40] = sym_1247;
  eul_allocate_lambda( compare_bindings[0], "initialize-compare", 0, G001238);

  }
}

/* eof */


r() {
    return createGrammarBuilder().build();
  }

  public static LexerlessGrammarBuilder createGrammarBuilder() {
    LexerlessGrammarBuilder b = LexerlessGrammarBuilder.create();

    lexical(b);
    punctuators(b);
    keywords(b);

    return b;
  }

  public static void lexical(LexerlessGrammarBuilder b) {
    b.rule(SPACING).is(
      b.skippedTrivia(b.regexp("[" + LexicalConstant.LINE_TERMINATOR + LexicalConstant.WHITESPACE + "]*+")),
      b.zeroOrMore(
        b.commentTrivia(b.regexp(LexicalConstant.COMMENT)),
        b.skippedTrivia(b.regexp("[" + LexicalConstant.LINE_TERMINATOR + LexicalConstant.WHITESPACE + "]*+"))))
      .skip();

    // Literals
    b.rule(NOWDOC).is(SPACING, b.regexp(LexicalConstant.NOWDOC));
    b.rule(HEREDOC).is(SPACING, b.regexp(LexicalConstant.HEREDOC));
    b.rule(NUMERIC_LITERAL).is(SPACING, b.regexp(LexicalConstant.NUMERIC_LITERAL));
    b.rule(REGULAR_STRING_LITERAL).is(SPACING, b.regexp(LexicalConstant.STRING_LITERAL));

    b.rule(STRING_WITH_ENCAPS_VAR_CHARACTERS).is(b.regexp(LexicalConstant.STRING_WITH_ENCAPS_VAR_CHARACTERS));
    b.rule(STRING_CHARACTERS_EXECUTION).is(b.regexp(LexicalConstant.STRING_CHARACTERS_EXECUTION));
    b.rule(HEREDOC_STRING_CHARACTERS).is(b.regexp(LexicalConstant.HEREDOC_STRING_CHARACTERS));
    b.rule(DOUBLE_QUOTE).is("\"");
    b.rule(BACKTICK).is("`");
    // FIXME: this recovery is introduce in order to parse ${var}, as expression cannot match keywords.
    b.rule(SEMI_COMPLEX_RECOVERY_EXPRESSION).is(b.regexp("[^}]++"));
    b.rule(ASYMMETRIC_VISIBILITY_MODIFIER).is(SPACING, b.regexp(LexicalConstant.ASYMMETRIC_VISIBILITY_MODIFIER));

    // Identifier
    b.rule(WHITESPACES).is(b.regexp("[" + LexicalConstant.WHITESPACE + "]*+"));
    b.rule(REGULAR_VAR_IDENTIFIER).is(SPACING, VARIABLE_IDENTIFIER).skip();
    b.rule(VARIABLE_IDENTIFIER).is(b.regexp(LexicalConstant.VAR_IDENTIFIER));
    b.rule(IDENTIFIER).is(SPACING, b.firstOf(b.sequence(b.nextNot(KEYWORDS), b.regexp(LexicalConstant.IDENTIFIER)), b.regexp("(?i)match")));
    b.rule(IDENTIFIER_OR_KEYWORD).is(SPACING, b.regexp(LexicalConstant.IDENTIFIER));
    b.rule(NS_SEPARATOR_WITHOUT_SPACE).is(b.regexp("\\\\"));

    // Tags & Inline HTML
    b.rule(FILE_OPENING_TAG).is(SPACING, b.regexp(LexicalConstant.PHP_START_TAG)).skip();
    b.rule(INLINE_HTML).is(SPACING, b.regexp(LexicalConstant.PHP_END_TAG)).skip();
    b.rule(ANYTHING_BUT_START_TAG


(l => lineToRoad(1, l));
    const maxI = sl - 1;
    let road = horizontalRoads[0];
    const point1 = [0, road.startAt];
    let change = 1;
    let ct = 0;
    let csi = 0;
    let cf: Facing = '>';
    let point2 = [0, 0];

    for (const [steps, direction] of paths) {
        for (let s = 0; s < steps; s++) {
            ct = point1[road.crossAxis];
            if (change === 1 && road.endAt === ct) {
                ct = road.startAt;
            } else if (change === -1 && road.startAt === ct) {
                ct = road.endAt;
            } else {
                ct = ct + change;
            }
            if (road.line[ct - road.startAt] === '#') {
                break;
            }
            point1[road.crossAxis] = ct;
        }
        for (let s = 0; s < steps; s++) {
            let tsi = csi;
            let tf: Facing = cf;
            const [rd, cd] = deltaMap[cf];
            let [tr, tc] = [point2[0], point2[1]];
            if (
                (rd === 1 && tr === maxI) ||
                (cd === 1 && tc === maxI) ||
                (rd === -1 && tr === 0) ||
                (cd === -1 && tc === 0)
            ) {
                [tsi, tf, [tr, tc]] = changeSide(maxI, tsi, tf, [tr, tc]);
            } else {
                tr = tr + rd;
                tc = tc + cd;
            }
            const [uhs, uvs] = sides[tsi];
            if (lines[uhs + tr][uvs + tc] === '#') {
                break;
            } else {
                point2 = [tr, tc];
                cf = tf;
                csi = tsi;
            }
        }

        if (direction) {
            // p1
            change = navigator[road.axis][change.toString() as any][direction];
            if (road.axis === 0) {
                road = verticalRoads[point1[road.crossAxis]];
            } else {
                road = horizontalRoads[point1[road.crossAxis]];
            }
            // p2
            cf = directionFacingMap[cf][direction];
        }
    }
    const p1 =
        (point1[0] + 1) * 1000 +
        (point1[1] + 1) * 4 +
        facingValueByDirAndChange[road.axis][change][1];
    const [uhs, uvs] = sides[csi];
    const p2 =
        (point2[0] + uhs + 1) * 1000 +
        (point2[1] + uvs + 1) * 4 +
        facingValue[cf];
    return [p1, p2];
};

test('22', () => {
    expect(solve('22-test')).toEqual([6032, 5031]);
    expect(solve('22', sidesA, 50, changeSideA)).toEqual([57350, 104385]);
});
export class Journey {

  private _id: string;
  private _number: number;
  private _date: Date;
  private _competitionId: number;
  private _completed: boolean;

  constructor(id?: string, number?: number, date?: Date, competitionId?: number, completed?: boolean) {
    this._id = id;
    this._number = number;
    this._date = date;
    this._competitionId = competitionId;
    this._completed = completed;
  }

  /* tslint:disable */
  static toObject(object: any): Journey {
    /* tslint:enable */
    const result: Journey = new Journey();
    if (object != null) {
      result.id = object.id;     /* result.id  no me dara error en .id, .name, .type, etc cuando lo defina en set*/
      result.number = object.number;
      res


TexP.h"

using namespace DirectX;
using namespace DirectX::Internal;
using Microsoft::WRL::ComPtr;

namespace
{
    //-------------------------------------------------------------------------------------
    // WIC Pixel Format nearest conversion table
    //-------------------------------------------------------------------------------------
    struct WICConvert
    {
        const GUID&     source;
        const GUID&     target;
        TEX_ALPHA_MODE  alphaMode;

        constexpr WICConvert(const GUID& src, const GUID& tgt, TEX_ALPHA_MODE mode) noexcept :
            source(src),
            target(tgt),
            alphaMode(mode) {}
    };

    constexpr WICConvert g_WICConvert[] =
    {
        // Directly support the formats listed in XnaTexUtil::g_WICFormats, so no conversion required
        // Note target GUID in this conversion table must be one of those directly supported formats.

        { GUID_WICPixelFormat1bppIndexed,           GUID_WICPixelFormat32bppRGBA, TEX_ALPHA_MODE_UNKNOWN }, // DXGI_FORMAT_R8G8B8A8_UNORM
        { GUID_WICPixelFormat2bppIndexed,           GUID_WICPixelFormat32bppRGBA, TEX_ALPHA_MODE_UNKNOWN }, // DXGI_FORMAT_R8G8B8A8_UNORM
        { GUID_WICPixelFormat4bppIndexed,           GUID_WICPixelFormat32bppRGBA, TEX_ALPHA_MODE_UNKNOWN }, // DXGI_FORMAT_R8G8B8A8_UNORM
        { GUID_WICPixelFormat8bppIndexed,           GUID_WICPixelFormat32bppRGBA, TEX_ALPHA_MODE_UNKNOWN }, // DXGI_FORMAT_R8G8B8A8_UNORM

        { GUID_WICPixelFormat2bppGray,              GUID_WICPixelFormat8bppGray, TEX_ALPHA_MODE_UNKNOWN }, // DXGI_FORMAT_R8_UNORM
        { GUID_WICPixelFormat4bppGray,              GUID_WICPixelFormat8bppGray, TEX_ALPHA_MODE_UNKNOWN }, // DXGI_FORMAT_R8_UNORM

        { GUID_WICPixelFormat16bppGrayFixedPoint,   GUID_WICPixelFormat16bppGrayHalf, TEX_ALPHA_MODE_UNKNOWN }, // DXGI_FORMAT_R16_FLOAT
        { GUID_WICPixelFormat32bppGrayFixedPoint,   GUID_WICPixelFormat32bppGrayFloat, TEX_ALPHA_MODE_UNKNOWN }, // DXGI_FORMAT_R32_FLOAT

        { GUID_WICPixelFormat16bppBGR555,           GUID_WICPixelFormat16bppBGRA5551, TEX_ALPHA_MODE_OPAQUE }, // DXGI_FORMAT_B5G5R5A1_UNORM
        { GUID_WICPixelFormat32bppBGR101010,        GUID_WICPixelFormat32bppRGBA1010102, TEX_ALPHA_MODE_OPAQUE }, // DXGI_FORMAT_R10G10B10A2_UNORM

        { GUID_WICPixelFormat24bppBGR,              GUID_WICPixelFormat32bppRGBA, TEX_ALPHA_MODE_OPAQUE }, // DXGI_FORMAT_R8G8B8A8_UNORM
        { GUID_WICPixelFormat24bppRGB,              GUID_WICPixelFormat32bppRGBA, TEX_ALPHA_MODE_OPAQUE }, // DXGI_FORMAT_R8G8B8A8_UNORM
        { GUID_WICPixelFormat32bppPBGRA,            GUID_WICPixelFormat32bppRGBA, TEX_ALPHA_MODE_UNKNOWN }, // DXGI_FORMAT_R8G8B8A8_UNORM
        { GUID_WICPixelFormat32bppPRGBA,            GUID_WICPixelFormat32bppRGBA, TEX_ALPHA_MODE_UNKNOWN }, // DXGI_FORMAT_R8G8B8A8_UNORM

        { GUID_WICPixelFormat48bppRGB,              GUID_WICPixelFormat64bppRGBA, TEX_ALPHA_MODE_OPAQUE }, // DXGI_FORMAT_R16G16B16A16_UNORM
        { GUID_WICPixelFormat48bppBGR,              GUID_WICPixelFormat64bppRGBA, TEX_ALPHA_MODE_OPAQUE }, // DXGI_FORMAT_R16G16B16A16_UNORM
        { GUID_WICPixelFormat64bppBGRA,             GUID_WICPixelFormat64bppRGBA, TEX_ALPHA_MODE_UNKNOWN }, // DXGI_FORMAT_R16G16B16A16_UNORM
        { GUID_WICPixelFormat64bppPRGBA,            GUID_WICPixelFormat


/**
 * Difficulty:
 * Easy
 *
 * Desc:
 * 输入一个英文句子，翻转句子中单词的顺序，但单词内字符的顺序不变。为简单起见，标点符号和普通字母一样处理。例如输入字符串"I am a student. "，则输出"student. a am I"。
 *
 * 示例 1：
 * 输入: "the sky is blue"
 * 输出: "blue is sky the"
 *
 * 示例 2：
 * 输入: "  hello world!  "
 * 输出: "world! hello"
 * 解释: 输入字符串可以在前面或者后面包含多余的空格，但是反转后的字符不能包括。
 *
 * 示例 3：
 * 输入: "a good   example"
 * 输出: "example good a"
 * 解释: 如果两个单词间有多余的空格，将反转后单词间的空格减少到只含一个。
 *


* 0.9) + (40.0 * 0.8) + ((50.0 * 0.7) + 0.0)));
				ExpectEQ(nUnits, TDCU_DAYS);
				ExpectEQ(calc.GetTaskTimeRemaining(2, nUnits), (40.0 * 0.8));
				ExpectEQ(nUnits, TDCU_DAYS);
				ExpectEQ(calc.GetTaskTimeRemaining(3, nUnits), ((50.0 * 0.7) + 0.0));
				ExpectEQ(nUnits, TDCU_DAYS);
				ExpectEQ(calc.GetTaskTimeRemaining(4, nUnits), (0.0)); // completed task
				ExpectEQ(nUnits, TDCU_DAYS);
				ExpectEQ(calc.GetTaskTimeRemaining(5, nUnits), (70.0 * 0.5));
				ExpectEQ(nUnits, TDCU_DAYS);
			}
		}
	}
}

void CTDCTaskCalculatorTest::TestGetTaskFlag(const CToDoCtrlData& data, BOOL bIncludeRefs)
{
	CTDCScopedTest test(*this, _T("CTDCTaskCalculatorTest::GetTaskFlag"));
	CTDCTaskCalculator calc(data);

	// Assigned
	{
		InitialiseStyles(bIncludeRefs);

		ExpectFalse(calc.IsTaskFlagged(1));
		ExpectFalse(calc.IsTaskFlagged(2));
		ExpectFalse(calc.IsTaskFlagged(3));
		ExpectTrue(calc.IsTaskFlagged(4)); // flagged
		ExpectFalse(calc.IsTaskFlagged(5));
	}

	// Inherited
	{
		InitialiseStyles(bIncludeRefs);
		m_aStyles[TDCS_TASKINHERITSSUBTASKFLAGS] = TRUE;

		ExpectTrue(calc.IsTaskFlagged(1)); // parent
		ExpectFalse(calc.IsTaskFlagged(2));
		ExpectTrue(calc.IsTaskFlagged(3)); // parent
		ExpectTrue(calc.IsTaskFlagged(4)); // flagged
		ExpectFalse(calc.IsTaskFlagged(5));
	}
}

void CTDCTaskCalculatorTest::TestGetTaskLock(const CToDoCtrlData& data, BOOL bIncludeRefs)
{
	CTDCScopedTest test(*this, _T("CTDCTaskCalculatorTest::GetTaskLock"));
	CTDCTaskCalculator calc(data);

	// Assigned
	{
		InitialiseStyles(bIncludeRefs);

		ExpectTrue(calc.IsTaskLocked(1)); // locked
		ExpectFalse(calc.IsTaskLocked(2));
		ExpectFalse(calc.IsTaskLocked(3));
		ExpectFalse(calc.IsTaskLocked(4));
		ExpectFalse(calc.IsTaskLocked(5));
	}

	// Inherited
	{
		InitialiseStyles(bIncludeRefs);
		m_aStyles[TDCS_SUBTASKSINHERITLOCK] = TRUE;

		ExpectTrue(calc.IsTaskLocked(1)); // locked
		ExpectTrue(calc.IsTaskLocked(2));
		ExpectTrue(calc.IsTaskLocked(3));
		ExpectTrue(calc.IsTaskLocked(4));
		ExpectFalse(calc.IsTaskLocked(5));
	}
}

void CTDCTaskCalculatorTest::TestGetTaskCustomAttributeData(const CToDoCtrlData& data, BOOL bIncludeRefs)
{
	CTDCScopedTest test(*this, _T("CTDCTaskCalculatorTest::GetTaskCustomAttributeData"));
	CTDCTaskCalculator calc(data);

	InitialiseStyles(bIncludeRefs);

	// Accumulated integer
	{
		int nAtt = m_aCustomAttribDefs.Find(ID_INTEGER);
		ExpectTrue(nAtt == 0);

		if (nAtt == 0)


IS;
    color: color(green-blue);
}

div.permissions {
    flow: horizontal;
    border-spacing: 0.5em;
}

div.permissions > div {
    size: 42px;
    background: color(accent);
}

div.permissions icon {
    margin: *;
    size: 32px;
    background-size: cover;
    background-repeat: no-repeat;
    display: block;
}

div.permissions > div.disabled {
    background: #ddd;
}

div.permissions > div:active {
    opacity: 0.5;
}

icon.keyboard {
    background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAgVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9d3yJTAAAAKnRSTlMA0Gd/0y8ILZgbJffDPUwV2nvzt+TMqZxyU7CMb1pYQyzsvKunkXE4AwJnNC24AAAA+0lEQVQ4y83O2U7DMBCF4ZMxk9rZk26kpQs7nPd/QJy4EiLbLf01N5Y/2YP/qxDFQvGB5NPC/ZpVnfJx4b5xyGfF95rkHvNCWH1u+N6J6T0sC7gqRy8uGPfBLEbozPXUjlkQKwGaFPNizwQbwkx0TDvhCii34ExZCSQVBdzIOEOyeclSHgBGXkpeygXSQgStACtWx4Z8rr8COHOvfEP/IbbsQAToFUAAV1M408IIjIGYAPoCSNRP7DQutfQTqxuAiH7UUg1FaJR2AGrrx52sK2ye28LZ0wBAEyR6y8X+NADhm1B4fgiiHXbRrTrxpwEY9RdM9wsepnvFHfUDwYEeiwAJr/gAAAAASUVORK5CYII=');
}

icon.clipboard {
    background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAjVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8DizOFAAAALnRSTlMAnIsyZy8YZF3NSAuabRL34cq6trCScyZ4qI9CQDwV+fPl2tnTwzkeB+m/pIFK/Xx0ewAAAQlJREFUOMudktduhDAQRWep69iY3tle0+7/f16Qg7MsJUQ5Dwh8jzRzhemJPIaf3GiW7eFQfOwDPp1ek/iMnKgBi5PrhJAhZAa1lCxE9pw5KWMswOMAQXuQOvqTB7tLFJ36wimKLrufZTzUaoRtdthqRA2vEwS+tR4qguiElRKk1YMrYfUQRkwLmwVBYDMvJKF8R0o3V2MOhNrfo+hXSYYjPn1L/S+n438t8gWh+q1F+cYFBMm1Jh8Ia7y2OWXQxMMRLqr2eTc1crSD84cWfEGwYM4LlaACEee2ZjsQXJxR3qmYb+GpC8ZfNM5oh3yxxbxgQE7lEkb3ZvvH1BiRHn1bu02ICcKGWr4AudUk


NAMESPACE(Loader, loader);
namespace loader
{
class ObjectFile;
} // namespace loader

class PowerProcess : public Process
{
  protected:
    void initState() override;

  public:
    PowerProcess(const ProcessParams &params, loader::ObjectFile *objFile);

    template <typename IntType>
    void argsInit(int pageSize);
};

} // namespace gem5

enum PowerHWCAPFeature
{
    HWCAP_FEATURE_32 = 1ULL << 31,            // Always set for powerpc64
    HWCAP_FEATURE_64 = 1ULL << 30,            // Always set for powerpc64
    HWCAP_FEATURE_HAS_ALTIVEC = 1ULL << 28,
    HWCAP_FEATURE_HAS_FPU = 1ULL << 27,
    HWCAP_FEATURE_HAS_MMU = 1ULL << 26,
    HWCAP_FEATURE_UNIFIED_CACHE = 1ULL << 24,
    HWCAP_FEATURE_NO_TB = 1ULL << 20,         // 601/403gx have no timebase
    HWCAP_FEATURE_POWER4 = 1ULL << 19,        // POWER4 ISA 2.00
    HWCAP_FEATURE_POWER5 = 1ULL << 18,        // POWER5 ISA 2.02
    HWCAP_FEATURE_POWER5_PLUS = 1ULL << 17,   // POWER5+ ISA 2.03
    HWCAP_FEATURE_CELL_BE = 1ULL << 16,       // CELL Broadband Engine
    HWCAP_FEATURE_BOOKE = 1ULL << 15,         // ISA Category Embedded
    HWCAP_FEATURE_SMT = 1ULL << 14,           // Simultaneous Multi-Threading
    HWCAP_FEATURE_ICACHE_SNOOP = 1ULL << 13,
    HWCAP_FEATURE_ARCH_2_05 = 1ULL << 12,     // ISA 2.05
    HWCAP_FEATURE_PA6T = 1ULL << 11,          // PA Semi 6T Core
    HWCAP_FEATURE_HAS_DFP = 1ULL << 10,       // Decimal FP Unit
    HWCAP_FEATURE_POWER6_EXT = 1ULL << 9,     // P6 + mffgpr/mftgpr
    HWCAP_FEATURE_ARCH_2_06 = 1ULL << 8,      // ISA 2.06
    HWCAP_FEATURE_HAS_VSX = 1ULL << 7,        // P7 Vector Extension
    HWCAP_FEATURE_PSERIES_PERFMON_COMPAT = 1ULL << 6,
    HWCAP_FEATURE_TRUE_LE = 1ULL << 1,
    HWCAP_FEATURE_PPC_LE = 1ULL << 0
};

enum PowerHWCAP2Feature
{
    HWCAP2_FEATURE_ARCH_2_07 = 1ULL << 31,    // ISA 2.07
    HWCAP2_FEATURE_HAS_HTM = 1ULL << 30,      // Hardware Transactional Memory
    HWCAP2_FEATURE_HAS_DSCR = 1ULL << 29,     // Data Stream Control Register
    HWCAP2_FEATURE_HAS_EBB = 1ULL << 28,      // Event Base Branching
    HWCAP2_FEATURE_HAS_ISEL = 1ULL << 27,     // Integer Select
    HWCAP2_FEATURE_HAS_TAR = 1ULL << 26,      // Target Address Register
    HWCAP2_FEATURE_HAS_VCRYPTO = 1ULL << 25,  // Vector AES category
    HWCAP2_FEATURE_HTM_NOSC = 1ULL << 24,
    HWCAP2_FEATURE_ARCH_3_00 = 1ULL << 23,    // ISA 3.0
    HWCAP2_FEATURE_HAS_IEEE128 = 1ULL << 22,  // VSX IEEE Binary Float 128-bit
};

#endif // __POWER_PROCESS_HH__
/*
 * Copyright 2015 LabWare
 * Copyright 2014 Google, Inc.
 * Copyright (c) 2010 ARM Limited
 * Copyright (c) 2021 IBM Corporation
 * All rights reserved
 *
 * The license below extends only to copyright in the software and shall
 * not be construed as granting a license to any other intellectual
 * property including but not limited to intellectual property relating
 * to a hardware implementation of the functionality of the software
 * licensed hereunder.  You may use the software subject to the license
 * terms below provided that you ensure that this notice is replicated
 * unmodified and in its entirety in all distributions of the software,
 * modified or unmodified, in source code or in binary form.
 *
 * Copyright (c) 2002-2005 The Regents of The University of Michigan
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met: redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer;
 * redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the


&cursor, 0); CKERR(r);
    db_env_set_func_pread(my_pread);
    while (1) {
        r = cursor->c_getf_next(cursor, 0, next_do_nothing, NULL);
        if (r != 0)
            break;
    }
    db_env_set_func_pread(NULL);
    r = cursor->c_close(cursor); CKERR(r);
    r = txn_a->commit(txn_a, 0);    CKERR(r);

    r = txn_b->commit(txn_b, 0); CKERR(r);

    r = db->close(db, 0);     CKERR(r);
    r = env->close(env, 0);   CKERR(r);
}

static int
usage(void) {
    fprintf(stderr, "-v (verbose)\n");
    fprintf(stderr, "-q (quiet)\n");
    fprintf(stderr, "--envdir %s\n", envdir);
    return 1;
}

int
test_main (int argc , char * const argv[]) {
    for (int i = 1 ; i < argc; i++) {
        if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--verbose") == 0) {
            verbose++;
            continue;
        }
        if (strcmp(argv[i], "-q") == 0) {
            if (verbose > 0)
                verbose--;
            continue;
        }
        if (strcmp(argv[i], "--envdir") == 0 && i+1 < argc) {
            envdir = argv[++i];
            continue;
        }
        return usage();
    }

    char rmcmd[32 + strlen(envdir)];
    snprintf(rmcmd, sizeof rmcmd, "rm -rf %s", envdir);
    int r;
    r = system(rmcmd); CKERR(r);
    r = toku_os_mkdir(envdir, S_IRWXU+S_IRWXG+S_IRWXO);       CKERR(r);

    run_test();

    return 0;
}
/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- */
// vim: ft=cpp:expandtab:ts=8:sw=4:softtabstop=4:
#ident "$Id$"
/*======
This file is part of PerconaFT.

Copyright (c) 2006, 2015, Percona and/or its affiliates. All rights reserved.

    PerconaFT is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License, version 2,
    as published by the Free Software Foundation.

    PerconaFT is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with PerconaFT.  If not, see <http://www.gnu.org/licenses/>.

----------------------------------------

    PerconaFT is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License, version 3,
    as published by the Free Software Foundation.

    PerconaFT is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License


o a 32-bit boundary.

-mrx-abi
This option tells the assembler that the official RX ABI is being used
by the assembled code.  With this version of the ABI function
arguments that are passed on the stack are aligned to their natural
alignments.  This option is the default.

-mcpu=<var>name</var>
This option tells the assembler the target CPU type.  Currently the
rx200, rx600 and rx610 are recognised as valid
cpu names.  Attempting to assemble an instruction not supported by the
indicated cpu type will result in an error message being generated.

-mno-allow-string-insns
This option tells the assembler to mark the object file that it is
building as one that does not use the string instructions
SMOVF, SCMPU, SMOVB, SMOVU, SUNTIL
SWHILE or the RMPA instruction.  In addition the mark
tells the linker to complain if an attempt is made to link the binary
with another one that does use any of these instructions.

Note - the inverse of this option, -mallow-string-insns, is
not needed.  The assembler automatically detects the use of the
the instructions in the source code and labels the resulting
object file appropriately.  If no string instructions are detected
then the object file is labelled as being one that can be linked with
either string-using or string-banned object files.

<title>Alpha-Regs - Using as</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Using as">
<meta name="generator" content="makeinfo 4.11">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Alpha-Syntax.html#Alpha-Syntax" title="Alpha Syntax">
<link rel="prev" href="Alpha_002dChars.html#Alpha_002dChars" title="Alpha-Chars">
<link rel="next" href="Alpha_002dRelocs.html#Alpha_002dRelocs" title="Alpha-Relocs">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">

<meta http-equiv="Content-Style-Type" content="text/css">


ge

### Multiple Instances

Run multiple bot instances:

```bash
# Terminal 1
python bot.py -p proxies1.txt -c 300

# Terminal 2
python bot.py -p proxies2.txt -c 300

# Terminal 3
python bot.py -p proxies3.txt -c 400
```

### Automation Scripts

Create a startup script (`start.sh`):

```bash
#!/bin/bash
cd /path/to/getgrass-bot
python bot.py -c 1000 -m 500
```

## 🤝 Support

### Getting Help

1. **Check this README** - Most questions are answered here
2. **Read USERID.md** - For User ID related issues
3. **Verify setup** - Ensure all files are correct
4. **Test with few proxies** - Start small, scale up
5. **Check logs** - Look for error messages

### Known Limitations

- Maximum 1000 connections per user account
- Proxy quality affects performance
- Some proxy types may not work
- Rate limiting may occur with poor proxies

## 📜 License

This is a **FREE VERSION** of GETGRASS Bot.

- ✅ Free to use
- ✅ Free to modify
- ✅ Free to distribute
- ❌ Use at your own risk

## 🎯 Tips for Success

1. **Quality over Quantity** - Better to have 50 good proxies than 500 bad ones
2. **Regular Maintenance** - Remove dead proxies weekly
3. **Monitor Performance** - Check connection success rates
4. **Scale Gradually** - Start with fewer connections, increase slowly
5. **Backup Config** - Keep copies of working configurations

## 🚨 Important Risk Notice

⚠ **USE AT YOUR OWN RISK** ⚠

- The developer is not responsible for any losses or damages

## 💰 Proxy Services

**Need affordable, high-quality proxies?**

I offer premium proxy services:
- **Price:** $0.70 per 1GB
- **Quality:** High-speed residential proxies
- **Support:** 24/7 customer support
- **Reliability:** 99.9% uptime guarantee

**Made with ❤ for the GETGRASS Community**

*Happy Farming! 🌾*
# بوت الذكاء الاصطناعي على تيليجرام

هذا المشروع عبارة عن بوت ذكاء اصطناعي لتيليجرام يستخدم نموذج Gemini من Google لتوفير ردود ذكية على رسائل المستخدمين. البوت قادر على التعامل مع النصوص والصور، ويقدم إجابات مخصصة بناءً على مجموعة من التعليمات المحددة مسبقًا.

## الميزات الرئيسية

- الرد على الرسائل النصية باستخدام نموذج Gemini
- تحليل وتفسير الصور المرسلة
- الحفاظ على سياق المحادثة لكل مستخدم
- دعم اللغة العربية
- توجيه إسلامي وثقافي في الردود

## المتطلبات

- Python 3.7+
- مكتبات Python: `python-telegram-bot`, `google-generativeai`, `Pillow`, `requests`
- مفتاح API لـ Telegram Bot
- مفتاح API لـ Google Gemini

## التثبيت

1. قم بنسخ المستودع:
   ```
   git clone https://github.com/farsabdraouf/telegram-ai-bot.git
   cd telegram-ai-bot
   ```

2. قم بتثبيت المكتبات المطلوبة:
   ```
   pip install python-telegram-bot google-generativeai Pillow requests
   ```

3. قم بإنشاء ملف `.env` في المجلد الرئيسي وأضف مفاتيح API الخاصة بك:
   ```
   TELEGRAM_TOKEN=your_telegram_token
   GEMINI_API_KEY=your_gemini_api_key
   ```

## الاستخدام

1. قم بتعديل المتغيرات `


using System.Linq;
using Sitecore.Data;
using Sitecore.Data.Items;
using Sitecore.Data.Serialization;
using Sitecore.Diagnostics;
using Sitecore.Shell.Framework.Commands.Serialization;
using Unicorn.Data;
using Unicorn.Predicates;
using ItemData = Rainbow.Storage.Sc.ItemData;

namespace Unicorn.UI.Commands
{
	public class UnicornLoadItemCommand : LoadItemCommand
	{
		private readonly SerializationHelper _helper;

		public UnicornLoadItemCommand() : this(new SerializationHelper())
		{

		}

		public UnicornLoadItemCommand(SerializationHelper helper)
		{
			_helper = helper;
		}

		protected override Item LoadItem(Item item, LoadOptions options)
		{
			Assert.ArgumentNotNull(item, "item");

			var itemData = new ItemData(item);

			var configuration =


und);
  }

  /**
   * Sets the field 'refund'.
   *
   * The parameter is not copied so changes to it will be reflected in this instance and vice-versa.
   */
  public ServiceFeeRefundRequest setRefund(com.clover.sdk.v3.payments.Refund refund) {
    return genClient.setRecord(refund, CacheKey.refund);
  }

  /** Clears the 'refund' field, the 'has' method for this field will now return false */
  public void clearRefund() {
    genClient.clear(CacheKey.refund);
  }

  /**
   * Returns true if this instance has any changes.
   */
  public boolean containsChanges() {
    return genClient.containsChanges();
  }

  /**
   * Reset the log of changes made to this instance, calling copyChanges() after this would return an empty instance.
   */
  public void resetChangeLog() {
    genClient.resetChangeLog();
  }

  /**
   * Create a copy of this instance that contains only fields that were set after the constructor was called.
   */
  public ServiceFeeRefundRequest copyChanges() {
    ServiceFeeRefundRequest copy = new ServiceFeeRefundRequest();
    copy.mergeChanges(this);
    copy.resetChangeLog();
    return copy;
  }

  /**
   * Copy all the changed fields from the given source to this instance.
   */
  public void mergeChanges(ServiceFeeRefundRequest src) {
    if (src.genClient.getChangeLog() != null) {
      genClient.mergeChanges(new ServiceFeeRefundRequest(src).getJSONObject(), src.genClient);
    }
  }

  public static final android.os.Parcelable.Creator<ServiceFeeRefundRequest> CREATOR = new android.os.Parcelable.Creator<ServiceFeeRefundRequest>() {
    @Override
    public ServiceFeeRefundRequest createFromParcel(android.os.Parcel in) {
      ServiceFeeRefundRequest instance = new ServiceFeeRefundRequest(com.clover.sdk.v3.JsonParcelHelper.ObjectWrapper.CREATOR.createFromParcel(in).unwrap());
      instance.genClient.setBundle(in.readBundle(getClass().getClassLoader()));
      instance.genClient.setChangeLog(in.readBundle());
      return instance;
    }

    @Override
    public ServiceFeeRefundRequest[] newArray(int size) {
      return new ServiceFeeRefundRequest[size];
    }
  };

  public static final com.clover.sdk.JSONifiable.Creator<ServiceFeeRefundRequest> JSON_CREATOR = new com.clover.sdk.JSONifiable.Creator<ServiceFeeRefundRequest>() {
    public Class<ServiceFeeRefundRequest> getCreatedClass() {
      return ServiceFeeRefundRequest.class;
    }

    @Override
    public ServiceFeeRefundRequest create(org.json.JSONObject jsonObject) {
      return new ServiceFeeRefundRequest(jsonObject);
    }
  };

  public interface Constraints {
    public static final boolean REFUND_IS_REQUIRED = false;
  }

}
/**
 * Autogenerated by Avro
 *
 * DO NOT EDIT DIRECTLY
 */

/*
 * Copyright (C) 2019 Clover Network, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.clover.sdk.v3.payments;

import com.clover.sdk.GenericClient;
import com.clover.sdk.GenericParcelable;


,
  /**
   * Equivalent to BOTTOM_LEFT in LTR, or BOTTOM_RIGHT in RTL.
   */
  BLOCK_END_INLINE_START: 2,
  /**
   * Equivalent to TOP_CENTER in both LTR and RTL.
   */
  BLOCK_START_INLINE_CENTER: 3,
  /**
   * Equivalent to TOP_RIGHT in LTR, or TOP_LEFT in RTL.
   */
  BLOCK_START_INLINE_END: 4,
  /**
   * Equivalent to TOP_LEFT in LTR, or TOP_RIGHT in RTL.
   */
  BLOCK_START_INLINE_START: 5,
  /**
   * Elements are positioned in the center of the bottom row. Consider using
   * BLOCK_END_INLINE_CENTER instead.
   */
  BOTTOM_CENTER: 6,
  /**
   * Elements are positioned in the bottom left and flow towards the middle.
   * Elements are positioned to the right of the Google logo. Consider using
   * BLOCK_END_INLINE_START instead.
   */
  BOTTOM_LEFT: 7,
  /**
   * Elements are positioned in the bottom right and flow towards the middle.
   * Elements are positioned to the left of the copyrights. Consider using
   * BLOCK_END_INLINE_END instead.
   */
  BOTTOM_RIGHT: 8,
  /**
   * Equivalent to RIGHT_CENTER in LTR, or LEFT_CENTER in RTL.
   */
  INLINE_END_BLOCK_CENTER: 9,
  /**
   * Equivalent to RIGHT_BOTTOM in LTR, or LEFT_BOTTOM in RTL.
   */
  INLINE_END_BLOCK_END: 10,
  /**
   * Equivalent to RIGHT_TOP in LTR, or LEFT_TOP in RTL.
   */
  INLINE_END_BLOCK_START: 11,
  /**
   * Equivalent to LEFT_CENTER in LTR, or RIGHT_CENTER in RTL.
   */
  INLINE_START_BLOCK_CENTER: 12,
  /**
   * Equivalent to LEFT_BOTTOM in LTR, or RIGHT_BOTTOM in RTL.
   */
  INLINE_START_BLOCK_END: 13,
  /**
   * Equivalent to LEFT_TOP in LTR, or RIGHT_TOP in RTL.
   */
  INLINE_START_BLOCK_START: 14,
  /**
   * Elements are positioned on the left, above bottom-left elements, and flow
   * upwards. Consider using INLINE_START_BLOCK_END instead.
   */
  LEFT_BOTTOM: 15,
  /**
   * Elements are positioned in the center of the left side. Consider using
   * INLINE_START_BLOCK_CENTER instead.
   */
  LEFT_CENTER: 16,
  /**
   * Elements are positioned on the left, below top-left elements, and flow
   * downwards. Consider using INLINE_START_BLOCK_START instead.
   */
  LEFT_TOP: 17,
  /**
   * Elements are positioned on the right, above bottom-right elements, and flow
   * upwards. Consider using INLINE_END_BLOCK_END instead.
   */
  RIGHT_BOTTOM: 18,
  /**
   * Elements are positioned in the center of the right side. Consider using
   * INLINE_END_BLOCK_CENTER instead.
   */
  RIGHT_CENTER: 19,
  /**
   * Elements are positioned on the right, below top-right elements, and flow
   * downwards. Consider using INLINE_END_BLOCK_START instead.
   */
  RIGHT_TOP: 20,
  /**
   * Elements are positioned in the center of the top row. Consider using
   * BLOCK_START_INLINE_CENTER instead.
   */
  TOP_CENTER: 21,
  /**
   * Elements are positioned in the top left and flow towards the middle.
   * Consider using BLOCK_START_INLINE_START instead.


e(Blocks.ice, 1, 0));
		RM.Compressor   .addRecipe1(T, 16,   16, gemFlawed   .mat(MT.Ice, 2), ST.make(Blocks.ice, 1, 0));
		RM.Compressor   .addRecipe1(T, 16,   16, gem         .mat(MT.Ice, 1), ST.make(Blocks.ice, 1, 0));
		RM.Compressor   .addRecipe1(T, 16,   32, ST.make(Blocks.snow, 1, W), ST.make(Blocks.ice, 1, 0));
		RM.Compressor   .addRecipe1(T, 16,   32, ST.make(Items.snowball, 4, W), ST.make(Blocks.snow, 1, 0));
		RM.Compressor   .addRecipe1(T, 16,   16, ST.make(Items.quartz, 4, 0), ST.make(Blocks.quartz_block, 1, 0));
		RM.Compressor   .addRecipe1(T, 16,   16, IL.Crop_Wheat.get(9), IL.Bale_Wheat.get(1));
		RM.Compressor   .addRecipe1(T, 16,   32, ST.make(Blocks.sand, 4, 0), ST.make(Blocks.sandstone, 1, 0));
		RM.Compressor   .addRecipe1(T, 16,   32, OM.dust(MT.Lapis), plateGem.mat(MT.Lapis, 1));
		RM.Compressor   .addRecipe1(T, 16,   32, OM.dust(MT.Asbestos), plate.mat(MT.Asbestos, 1));
		RM.Compressor   .addRecipe1(T, 16,   32, OM.dust(MT.Lazurite), plateGem.mat(MT.Lazurite, 1));
		RM.Compressor   .addRecipe1(T, 16,   32, OM.dust(MT.Sodalite), plateGem.mat(MT.Sodalite, 1));

		for (FluidStack tWater : FL.waters(250)) {long tMul = FL.SpDew.is(tWater) ? 4 : 1;
		RM.Freezer      .addRecipe1(T, 16,   16*tMul, ST.tag(0),        tWater    , FL.Ice.make(250), ZL_IS);
		RM.Freezer      .addRecipe1(T, 16,   16*tMul, ST.tag(1),        tWater    , NF, ST.make(Items.snowball   , 1, 0));
		RM.Freezer      .addRecipe1(T, 16,   32*tMul, ST.tag(2), FL.mul(tWater, 2), NF, ST.make(Blocks.snow_layer, 1, 0));
		RM.Freezer      .addRecipe1(T, 16,   64*tMul, ST.tag(3), FL.mul(tWater, 4), NF, ST.make(Blocks.snow      , 1, 0));
		RM.Freezer      .addRecipe1(T, 16,  128*tMul, ST.tag(4), FL.mul(tWater, 4), NF, ST.make(Blocks.ice       , 1, 0));
		RM.Freezer      .addRecipe1(T, 16,   64*tMul, ST.tag(9), FL.mul(tWater, 4), NF, dust      .mat(MT.Snow, 1));
		RM.Freezer      .addRecipe1(T, 16,  128*tMul, ST.tag(8), FL.mul(tWater, 4), NF, dust      .mat(MT.Ice, 1));
		RM.Freezer      .addRecipe1(T, 16,   32*tMul, ST.tag(5),        tWater    , NF, gemChipped.mat(MT.Ice, 1));
		RM.Freezer      .addRecipe1(T, 16,   64*tMul, ST.tag(6), FL.mul(tWater, 2), NF, gemFlawed .mat(MT.Ice, 1));
		RM.Freezer      .addRecipe1(T, 16,  128*tMul, ST.tag(7), FL.mul(tWater, 4), NF