if(inputListView.size()!=0){
                   final WXTextView inputTypeView = (WXTextView)inputListView.get(0);
                   Log.e(TAG, "inputTypeView text == " +inputTypeView.getText().toString());

                   mInstrumentation.runOnMainSync(new Runnable() {
                       @Override
                       public void run() {
                           inputTypeView.requestFocus();
                           inputTypeView.performClick();
                           Log.e(TAG, "TC_Image_Update_03_changeSrc clcik!");

                       }
                   });

                   sleep(2000);
                   Log.e(TAG, "TC_Image_Update_03_changeSrc snap!");
                   screenShot("TC_Image_Update_03_changeSrc");
//                   ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False");

                   sleep(2000);

               }

               inputListView = new ArrayList<View>();
               inputListView = ViewUtil.findViewWithText(myGroup, "origin src");
//               myGroup.findViewsWithText(inputListView, "点击我，图片正常显示", View.FIND_VIEWS_WITH_TEXT);
               if(inputListView.size()!=0){
                   final WXTextView inputTypeView = (WXTextView)inputListView.get(0);

                   mInstrumentation.runOnMainSync(new Runnable() {
                       @Override
                       public void run() {
                           inputTypeView.requestFocus();
                           inputTypeView.performClick();
                           Log.e(TAG, "TC_Image_Update_04_normalSrc clcik!");

                       }
                   });

                   sleep(2000);
                   Log.e(TAG, "TC_Image_Update_04_normalSrc snap!");
                   screenShot("TC_Image_Update_04_normalSrc");
//                   ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False");

                   sleep(2000);

               }

               inputListView = new ArrayList<View>();
               inputListView = ViewUtil.findViewWithText(myGroup, "pic opacity");

//               myGroup.findViewsWithText(inputListView, "点击我，图片设置不透明", View.FIND_VIEWS_WITH_TEXT);
               if(inputListView.size()!=0){
                   final WXTextView inputTypeView = (WXTextView)inputListView.get(0);

                   mInstrumentation.runOnMainSync(new Runnable() {
                       @Override
                       public void run() {
                           inputTypeView.requestFocus();
                           inputTypeView.performClick();
                           Log.e(TAG, "TC_Image_Update_05_notTransparent clcik!");

                       }
                   });

                   sleep(2000);
                   Log.e(TAG, "TC_Image_Update_05_notTransparent snap!");
                   screenShot("TC_Image_Update_05_notTransparent");
//                   ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC_Downgrade_osV_False");

                   sleep(2000);

               }

               inputListView = new ArrayList<View>();
               inputListView = ViewUtil.findViewWithText(myGroup, "pic transparency");

//               myGroup.findViewsWithText(inputListView, "点击我，图片设置透明", View.FIND_VIEWS_WITH_TEXT);
               if(inputListView.size()!=0){
                   final WXTextView inputTypeView = (WXTextView)inputListView.get(0);

                   mInstrumentation.runOnMainSync(new Runnable() {
                       @Override
                       public void run() {
                           inputTypeView.requestFocus();
                           inputTypeView.performClick();
                           Log.e(TAG, "TC_Image_Update_06_transparent clcik!");

                       }
                   });

                   sleep(2000);
                   Log.e(TAG, "TC_Image_Update_06_transparent snap!");
                   screenShot("TC_Image_Update_06_transparent");
//                   ScreenShot.takeScreenShotIncludeDialog(getActivity(), "TC


_standard_derivatives",!0],[r.GLSL_TEXTURE_LOD]:["EXT_shader_texture_lod",!0]}},48546:(t,e,n)=>{"use strict";n.d(e,{lR:()=>s});var i=n(28007),o=n(92138),r=n(11515);const a="8.5.21";const s=new class{constructor(){this.stats=new Map}get(t){return this.stats.has(t)||this.stats.set(t,new o.Z({id:t})),this.stats.get(t)}};if(globalThis.luma&&globalThis.luma.VERSION!==a)throw new Error("luma.gl - multiple VERSIONs detected: ".concat(globalThis.luma.VERSION," vs ").concat(a));globalThis.luma||((0,r.Z)()&&i.cM.log(1,"luma.gl ".concat(a," - ").concat("set luma.log.level=1 (or higher) to trace rendering"))(),globalThis.luma=globalThis.luma||{VERSION:a,version:a,log:i.cM,stats:s,globals:{modules:{},nodeIO:{}}});globalThis.luma},81301:(t,e,n)=>{"use strict";function i(t,e){if(!t)throw new Error(e||"luma.gl: assertion failed.")}n.d(e,{h:()=>i})},80182:(t,e,n)=>{"use strict";n.d(e,{k:()=>o});var i=n(28007);function o(t,e,n){const{removedProps:o={},deprecatedProps:r={},replacedProps:a={}}=n;for(const c in o)if(c in e){const e=o[c]?"".concat(t,".").concat(o[c]):"N/A";i.cM.removed("".concat(t,".").concat(c),e)()}for(const c in r)if(c in e){const e=r[c];i.cM.deprecated("".concat(t,".").concat(c),"".concat(t,".").concat(e))()}let s=null;for(const c in a)if(c in e){const n=a[c];i.cM.deprecated("".concat(t,".").concat(c),"".concat(t,".").concat(n))(),s=s||Object.assign({},e),s[n]=e[c],delete s[c]}return s||e}},69221:(t,e,n)=>{"use strict";n.d(e,{F:()=>o});var i=n(28007);function o(t,e,n,o){const r="See luma.gl ".concat(n," Upgrade Guide at https://luma.gl/docs/upgrade-guide"),a=Object.getPrototypeOf(t);o.forEach((t=>{a.methodName||(a[t]=()=>{throw i.cM.removed("Calling removed method ".concat(e,".").concat(t,": "),r)(),new Error(t)})}))}},79666:(t,e,n)=>{"use strict";n.d(e,{hQ:()=>r,nK:()=>s,wt:()=>a});var i=n(81301);const o={};function r(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"id";o[t]=o[t]||1;const e=o[t]++;return"".concat(t,"-").concat(e)}function a(t){return(0,i.h)("number"===typeof t,"Input must be a number"),t&&0===(t&t-1)}function s(t){l


).toBeTruthy();
    expect(automato.processarCadeia("111")).toBeTruthy();
  });

  it("processa cadeia não aceita pelo autômato", () => {
    const automato = criarAutomato();
    expect(automato.processarCadeia("101")).toBeFalsy();
    expect(automato.processarCadeia("0")).toBeFalsy();
    expect(automato.processarCadeia("000")).toBeFalsy();
    expect(automato.processarCadeia("100")).toBeFalsy();
    expect(automato.processarCadeia("001")).toBeFalsy();
  });

  it("processa cadeia aceita pelo autômato com transições espontâneas", () => {
    const automato = criarEpsilonNfa();
    expect(automato.processarCadeia("10.01")).toBeTruthy();
  });

  it("processa cadeia não aceita pelo autômato com transições espontâneas", () => {
    const automato = criarEpsilonNfa();
    expect(automato.processarCadeia("9999")).toBeFalsy();
  });

  it("um afn convertido em afd deve reconhecer as mesmas cadeias", () => {
    const afn = criarAutomato();
    const afd = afn.converterParaDeterministico();

    expect(afn.processarCadeia("110")).toEqual(afd.processarCadeia("110"));
    expect(afn.processarCadeia("010")).toEqual(afd.processarCadeia("010"));
    expect(afn.processarCadeia("11")).toEqual(afd.processarCadeia("11"));
    expect(afn.processarCadeia("111")).toEqual(afd.processarCadeia("111"));

    expect(afn.processarCadeia("101")).toEqual(afd.processarCadeia("101"));
    expect(afn.processarCadeia("0")).toEqual(afd.processarCadeia("0"));
    expect(afn.processarCadeia("000")).toEqual(afd.processarCadeia("000"));
    expect(afn.processarCadeia("100")).toEqual(afd.processarCadeia("100"));
    expect(afn.processarCadeia("001")).toEqual(afd.processarCadeia("001"));
  });
});
import { inject, injectable } from 'tsyringe';
import IFormulaRepository from '@app/implementations/repositories/IFormulasRepository';
import AppError from '@shared/errors/AppError';
import utils from '../utils/formulaUtils';
import IAtoms from '../dtos/IAtomsDTO';

interface IRequest {
  formula: string;
  type: 'axiom' | 'proposition' | 'modus_ponens';
  axiomType?: number;
  atoms?: IAtoms;
  formulasToMP?: [number, number];
}

@injectable()
export default class CheckerService {
  constructor(
    @inject('FormulasRepository')
    private formulasRepository: IFormulaRepository,
  ) {}

  public execute({
    formula,
    type,
    atoms,
    axiomType,
    formulasToMP,
  }: IRequest): boolean {
    const lowerCaseFormula = formula.toLowerCase();
    const parsedFormula = utils.parseFormula(lowerCaseFormula);

    const isValid = utils.isValidFormula(parsedFormula);

    if (!isValid) {
      throw new AppError('This formula have a bad format', 400);
    }

    let isTruthy = false;

    switch (type) {
      case 'axiom':
        if (atoms && axiomType) {
          isTruthy =
            utils.verifyFormulaWithAxiom({
              formula: parsedFormula,
              axiomType,
              atoms: {
                p: atoms.p.toLowerCase(),
                q: atoms.q.toLowerCase(),
                r: atoms.r?.toLowerCase(),
              },
            }) === true;
        }

        break;
      case 'proposition':
        isTruthy = true;

        break;
      case 'modus_ponens':
        if (!formulasToMP) {


ram stack
 * @param addressShipping
 * @param delivery
 */
export function buildOrder(overview?: OrderOverview, stack?: OrganizedStacks, addressShipping?: Address, delivery?: Delivery): Order {
  let quantitysDB;
  if (overview && overview.quantitys) {
    quantitysDB = [...overview.quantitys.entries()].reduce((obj, [key, value]) => ((obj[escapeKey(key)] = value), obj), {});
  }
  return {
    stackId: stack?.id,
    totalUnits: overview?.totalUnits,
    totalSpend: overview?.totalSpend,
    currency: stack?.currency,
    quantitysDB,
    addressShipping,
    delivery
  };
}
import { Contract } from "../../src/contract";

class Car implements Serializable {
    name: string;
    year: u32;

    toString(): string {
        return "name: " + this.name + ". year: " + this.year.toString();
    }
}
/**
 * Test contract action receive types
 */
class TestType extends Contract {

    constructor(receiver: account_name){
        super(receiver);
    }

    @action
    testBasicTypeOne(unsigned8: u8, unsigned32: u32, unsigned64: u64, yes: boolean): void {
        gchain_assert(unsigned8 == 1, "testBasicTypeOne: u8 failed.");
        gchain_assert(unsigned32 == 1, "testBasicTypeOne: u32 failed.");
        gchain_assert(unsigned64 == 1, "testBasicTypeOne: u64 failed.");
        gchain_assert(yes == true, "testBasicTypeOne: bool failed.")
    }

    @action
    testBasicTypeZero(unsigned8: u8, unsigned32: u32, unsigned64: u64, yes: boolean): void {
        gchain_assert(unsigned8 == 0, "testBasicTypeZero: u8 failed.");
        gchain_assert(unsigned32 == 0, "testBasicTypeZero: u32 failed.");
        gchain_assert(unsigned64 == 0, "testBasicTypeZero: u64 failed.");
        gchain_assert(yes == false, "testBasicTypeZero: bool failed.")
    }

    @action
    testCarObj(name: string, year: u32, car: Car) : void {
        gchain_assert(car.name == name, "testCarObj car.name failed.");
        gchain_assert(car.year == year, "testCarObj car.name failed.");
    }

    @action
    testCarArray(car: Car[], name: string, year: u32): void {
        for (let index = 0; index < car.length; index++) {
            gchain_assert(car[index].name == name, "testCarArray car.name failed.");
            gchain_assert(car[index].year == year, "testCarArray car.year failed.");
        }
    }

    @action
    testNumsIncreaseVal(nums: Array<u64>): void {
        for (let index = 0; index < nums.length; index ++) {
            gchain_assert(<i32>nums[index] == index, "testNumsIncreaseVal error")
        }
    }

    @action
    testMap(len: i32): void {
        let intStrMap: Map<i32, string> = new Map<i32, string>();
        for (let index = 0; index < len; index ++) {
            intStrMap.set(index, index.toString());
        }

        for (let index = 0; index < len; index ++) {
            gchain_assert(intStrMap.has(index), "testMap failed");
            gchain_assert(intStrMap.get(index) == index.toString(), "testMap failed");
        }
    }
}
// 颜色类型列表
const colorTypeList = [
  { label: 'HEX', value: 'HEX', placeholder: '输入 #RRGGBB / #RGB / RRGGBB 格式字符串' },
  { label: 'RGB', value: 'RGB',  placeholder: '输入 RGB(R,G,B)  / RGBA(R,G,B,A) / (R,G,B) / (R,G,B,A) 格式字符串' },
  { label: 'HSL', value: 'HSL', placeholder: '输入 HSL(H,S


área de la imagen. Esto es más rápido y conduce a un mejor rendimiento porque las características locales de una imagen son suficientes para que el modelo aprenda.

4. Al igual que [DETR](tasks_explained#object-detection), Mask2Former también utiliza consultas de objetos aprendidas y las combina con las características de la imagen del decodificador de píxeles para hacer una predicción de conjunto (`etiqueta de clase`, `predicción de máscara`). Los estados ocultos del decodificador se pasan a una capa lineal y se transforman en logits sobre las etiquetas de clase. Se calcula la pérdida de entropía cruzada entre los logits y la etiqueta de clase para encontrar la más probable.

    Las predicciones de máscara se generan combinando las incrustaciones de píxeles con los estados ocultos finales del decodificador. La pérdida de entropía cruzada sigmoidea y de la pérdida DICE se calcula entre los logits y la máscara de verdad básica para encontrar la máscara más probable.

¿Listo para probar la detección de objetos? ¡Consulta nuestra guía completa de [segmentación de imágenes](https://huggingface.co/docs/transformers/tasks/semantic_segmentation) para aprender cómo ajustar SegFormer y usarlo para inferencia!

### Estimación de profundidad

[GLPN](https://huggingface.co/docs/transformers/model_doc/glpn), *Global-Local Path Network*, es un Transformer para la estimación de profundidad que combina un codificador [SegFormer](https://huggingface.co/docs/transformers/model_doc/segformer) con un decodificador ligero.

1. Al igual que ViT, una imagen se divide en una secuencia de parches, excepto que estos parches de imagen son más pequeños. Esto es mejor para tareas de predicción densa como la segmentación o la estimación de profundidad. Los parches de imagen se transforman en incrustaciones de parches (ver la sección de [clasificación de imágenes](#clasificación-de-imágenes) para más detalles sobre cómo se crean las incrustaciones de parches), que se alimentan al codificador.

2. El codificador acepta las incrustaciones de parches y las pasa a través de varios bloques codificadores. Cada bloque consiste en capas de atención y Mix-FFN. El propósito de este último es proporcionar información posicional. Al final de cada bloque codificador hay una capa de *fusión de parches* para crear representaciones jerárquicas. Las características de cada grupo de parches vecinos se concatenan, y se aplica una capa lineal a las características concatenadas para reducir el número de parches a una resolución de 1/4. Esto se convierte en la entrada al siguiente bloque codificador, donde se repite todo este proceso hasta que tengas características de imagen con resoluciones de 1/8, 1/16 y 1/32.

3. Un decodificador ligero toma el último mapa de características (escala 1/32) del codificador y lo aumenta a una escala de 1/16. A partir de aquí, la característica se pasa a un módulo de *Fusión Selectiva de Características (SFF)*, que selecciona y combina características locales y globales de un mapa de atención para cada característica y luego la aumenta a 1/8. Este proceso s


c_cpu_late_write_num_a", 0, "alias_bc_cpu_late_write_num_a", 0},
  {"bc_cpu_clk_delay_a", 0, "alias_bc_cpu_clk_delay_a", 0},
  {"bc_burst_mode_enable_a", 0, "alias_bc_burst_mode_enable_a", 0},
  {"bc_lat_data_pattern_a", 0, "alias_bc_lat_data_pattern_a", 0},
  {"bc_lat_tag_pattern_a", 0, "alias_bc_lat_tag_pattern_a", 0},
  {"bc_cf_double_clk_a", 0, "alias_bc_cf_double_clk_a", 0},
  {"bc_clkfwd_enable_a", 0, "alias_bc_clkfwd_enable_a", 0},
  {"bc_ddm_fall_en_a", 0, "alias_bc_ddm_fall_en_a", 0},
  {"bc_ddm_rise_en_a", 0, "alias_bc_ddm_rise_en_a", 0},
  {"bc_ddmf_enable_a", 0, "alias_bc_ddmf_enable_a", 0},
  {"bc_ddmr_enable_a", 0, "alias_bc_ddmr_enable_a", 0},
  {"bc_ddm_rd_fall_en_a", 0, "alias_bc_ddm_rd_fall_en_a", 0},
  {"bc_ddm_rd_rise_en_a", 0, "alias_bc_ddm_rd_rise_en_a", 0},
  {"bc_tag_ddm_fall_en_a", 0, "alias_bc_tag_ddm_fall_en_a", 0},
  {"bc_tag_ddm_rise_en_a", 0, "alias_bc_tag_ddm_rise_en_a", 0},
  {"bc_tag_ddm_rd_fall_en_a", 0, "alias_bc_tag_ddm_rd_fall_en_a", 0},
  {"bc_tag_ddm_rd_rise_en_a", 0, "alias_bc_tag_ddm_rd_rise_en_a", 0},
  {"bc_pentium_mode_a", 0, "alias_bc_pentium_mode_a", 0},
  {"sys_cf_double_clk_a", 0, "alias_sys_cf_double_clk_a", 0},
  {"sys_clkfwd_enable_a", 0, "alias_sys_clkfwd_enable_a", 0},
  {"sys_ddm_fall_en_a", 0, "alias_sys_ddm_fall_en_a", 0},
  {"sys_ddm_rise_en_a", 0, "alias_sys_ddm_rise_en_a", 0},
  {"sys_ddmf_enable_a", 0, "alias_sys_ddmf_enable_a", 0},
  {"sys_ddmr_enable_a", 0, "alias_sys_ddmr_enable_a", 0},
  {"sys_ddm_rd_fall_en_a", 0, "alias_sys_ddm_rd_fall_en_a", 0},
  {"sys_ddm_rd_rise_en_a", 0, "alias_sys_ddm_rd_rise_en_a", 0},
  {"sys_rcv_mux_cnt_preset_a", 0, "alias_sys_rcv_mux_cnt_preset_a", 0},
  {"bc_rcv_mux_cnt_preset_a", 0, "alias_bc_rcv_mux_cnt_preset_a", 0},
  {"data_valid_dly_a", 0, "alias_data_valid_dly_a", 0},
  {"jitter_cmd_a", 0, "alias_jitter_cmd_a", 0},
  {"bc_late_write_upper_a", 0, "alias_bc_late_write_upper_a", 0},
  {"bc_sj_bank_enable_a", 0, "alias_bc_sj_bank_enable_a", 0},
  {"enable_probe_chk_a", 0, "alias_enable_probe_chk_a", 0},
  {NULL, 0, NULL, 0}
};

csr_t *lookup_csr(char *name)
{
  csr_t *p;
  p = csr_array;
  while (p->name != NULL) {
    if ((strcmp(name, p->name) == 0)
	|| (strcmp(name, p->alias) == 0)) {
      return(p);
    }
    p += 1;
  }

  report_error(NULL,
	       "Error:",
	       "Unknown csr name \"%s\" specified\n", name);
  ++errors;
  return(NULL);
}


acaca;border-radius:3px 0 0 3px}.react-tel-input .flag-dropdown:hover,.react-tel-input .flag-dropdown:focus{cursor:pointer}.react-tel-input .flag-dropdown.invalid-number{border-color:#d79f9f}.react-tel-input .flag-dropdown.open{z-index:2;background:#fff;border-radius:3px 0 0}.react-tel-input .flag-dropdown.open .selected-flag{background:#fff;border-radius:3px 0 0}.react-tel-input input[disabled]+.flag-dropdown:hover{cursor:default}.react-tel-input input[disabled]+.flag-dropdown:hover .selected-flag{background-color:transparent}.react-tel-input .selected-flag{outline:none;position:relative;width:38px;height:100%;padding:0 0 0 8px;border-radius:3px 0 0 3px}.react-tel-input .selected-flag:hover,.react-tel-input .selected-flag:focus{background-color:#fff}.react-tel-input .selected-flag .flag{position:absolute;top:50%;margin-top:-5px}.react-tel-input .selected-flag .arrow{position:relative;top:50%;margin-top:-2px;left:20px;width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:4px solid #555}.react-tel-input .selected-flag .arrow.up{border-top:none;border-bottom:4px solid #555}.react-tel-input .country-list{outline:none;z-index:1;list-style:none;position:absolute;padding:0;margin:10px 0 10px -1px;box-shadow:1px 2px 10px #00000059;background-color:#fff;width:300px;max-height:200px;overflow-y:scroll;border-radius:0 0 3px 3px}.react-tel-input .country-list .flag{display:inline-block}.react-tel-input .country-list .divider{padding-bottom:5px;margin-bottom:5px;border-bottom:1px solid #ccc}.react-tel-input .country-list .country{padding:7px 9px}.react-tel-input .country-list .country .dial-code{color:#6b6b6b}.react-tel-input .country-list .country:hover,.react-tel-input .country-list .country.highlight{background-color:#f1f1f1}.react-tel-input .country-list .flag{margin-right:7px;margin-top:2px}.react-tel-input .country-list .country-name{margin-right:6px}.react-tel-input .country-list .search{position:sticky;top:0;background-color:#fff;padding:10px 0 6px 10px}.react-tel-input .country-list .search-emoji{font-size:15px}.react-tel-input .country-list .search-box{border:1px solid #cacaca;border-radius:3px;font-size:15px;line-height:15px;margin-left:6px;padding:3px 8px 5px;outline:none}.react-tel-input .country-list .no-entries-message{padding:7px 10px 11px;opacity:.7}.react-tel-input .invalid-number-message{position:absolute;z-index:1;font-size:13px;left:46px;top:-8px;background:#fff;padding:0 2px;color:#de0000}.react-tel-input .special-label{display:none;position:absolute;z-index:1;font-size:13px;left:46px;top:-8px;background:#fff;padding:0 2px;white-space:nowrap}/*!
* Quill Editor v2.0.2
* https://quilljs.com
* Copyright (c) 2017-2024, Slab
* Copyright (c) 2014, Jason Chen
* Copyright (c) 2013, salesforce.com
*/.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height


"/><path fill="currentColor" fill-rule="evenodd" d="M88.209 37.412c-2.247.05-4.5.145-6.757.312l.348 5.532a126.32 126.32 0 016.513-.303zm-11.975.82c-3.47.431-6.97 1.045-10.43 2.032l1.303 5.361c3.144-.896 6.402-1.475 9.711-1.886zM60.623 42.12a24.52 24.52 0 00-3.004 1.583l-.004.005-.006.002c-1.375.866-2.824 1.965-4.007 3.562-.857 1.157-1.558 2.62-1.722 4.35l5.095.565c.038-.406.246-.942.62-1.446h.002v-.002c.603-.816 1.507-1.557 2.582-2.235l.004-.002a19.64 19.64 0 012.388-1.256zM58 54.655l-3.303 4.235c.783.716 1.604 1.266 2.397 1.726l.01.005.01.006c2.632 1.497 5.346 2.342 7.862 3.144l1.446-5.318c-2.515-.802-4.886-1.576-6.918-2.73-.582-.338-1.092-.691-1.504-1.068Zm13.335 5.294-1.412 5.327.668.208.82.262c2.714.883 5.314 1.826 7.638 3.131l2.358-4.92c-2.81-1.579-5.727-2.611-8.538-3.525l-.008-.002-.842-.269zm14.867 7.7-3.623 3.92c.856.927 1.497 2.042 1.809 3.194l.002.006.002.009c.372 1.345.373 2.927.082 4.525l5.024 1.072c.41-2.256.476-4.733-.198-7.178-.587-2.162-1.707-4.04-3.098-5.548zM82.72 82.643a11.84 11.84 0 01-1.826 1.572h-.002c-1.8 1.266-3.888 2.22-6.106 3.04l1.654 5.244c2.426-.897 4.917-1.997 7.245-3.635l.006-.005.003-.002a16.95 16.95 0 002.639-2.287zm-12.64 6.089c-3.213.864-6.497 1.522-9.821 2.08l.784 5.479c3.421-.575 6.856-1.262 10.27-2.18zm-14.822 2.836c-3.346.457-6.71.83-10.084 1.148l.442 5.522c3.426-.322 6.858-.701 10.285-1.17zm-15.155 1.583c-3.381.268-6.77.486-10.162.67l.256 5.536c3.425-.185 6.853-.406 10.28-.678zm-15.259.92c-2.033.095-4.071.173-6.114.245l.168 5.541a560.1 560.1 0 006.166-.246z" color="currentColor"/></svg>';
  static const String route_end =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100" height="100" preserveAspectRatio="xMidYMid meet" viewBox="0 0 100 100"><path fill="curren


	}

	// AES 192
	k, err = currentBCCSP.KeyGen(&bccsp.AES192KeyGenOpts{Temporary: false})
	if err != nil {
		t.Fatalf("Failed generating AES 192 key [%s]", err)
	}
	if k == nil {
		t.Fatal("Failed generating AES 192 key. Key must be different from nil")
	}
	if !k.Private() {
		t.Fatal("Failed generating AES 192 key. Key should be private")
	}
	if !k.Symmetric() {
		t.Fatal("Failed generating AES 192 key. Key should be symmetric")
	}

	aesKey = k.(*aesPrivateKey).privKey
	if len(aesKey) != 24 {
		t.Fatal("AES Key generated key in invalid. The key must have length 16.")
	}

	// AES 256
	k, err = currentBCCSP.KeyGen(&bccsp.AES256KeyGenOpts{Temporary: false})
	if err != nil {
		t.Fatalf("Failed generating AES 256 key [%s]", err)
	}
	if k == nil {
		t.Fatal("Failed generating AES 256 key. Key must be different from nil")
	}
	if !k.Private() {
		t.Fatal("Failed generating AES 256 key. Key should be private")
	}
	if !k.Symmetric() {
		t.Fatal("Failed generating AES 256 key. Key should be symmetric")
	}

	aesKey = k.(*aesPrivateKey).privKey
	if len(aesKey) != 32 {
		t.Fatal("AES Key generated key in invalid. The key must have length 16.")
	}
}

func TestECDSAKeyGenEphemeral(t *testing.T) {
	k, err := currentBCCSP.KeyGen(&bccsp.ECDSAKeyGenOpts{Temporary: true})
	if err != nil {
		t.Fatalf("Failed generating ECDSA key [%s]", err)
	}
	if k == nil {
		t.Fatal("Failed generating ECDSA key. Key must be different from nil")
	}
	if !k.Private() {
		t.Fatal("Failed generating ECDSA key. Key should be private")
	}
	if k.Symmetric() {
		t.Fatal("Failed generating ECDSA key. Key should be asymmetric")
	}
	raw, err := k.Bytes()
	if err == nil {
		t.Fatal("Failed marshalling to bytes. Marshalling must fail.")
	}
	if len(raw) != 0 {
		t.Fatal("Failed marshalling to bytes. Output should be 0 bytes")
	}
	pk, err := k.PublicKey()
	if err != nil {
		t.Fatalf("Failed getting corresponding public key [%s]", err)
	}
	if pk == nil {
		t.Fatal("Public key must be different from nil.")
	}
}

func TestECDSAPrivateKeySKI(t *testing.T) {

	k, err := currentBCCSP.KeyGen(&bccsp.ECDSAKeyGenOpts{Temporary: false})
	if err != nil {
		t.Fatalf("Failed generating ECDSA key [%s]", err)
	}

	ski := k.SKI()
	if len(ski) == 0 {
		t.Fatal("SKI not valid. Zero length.")
	}
}

func TestECDSAKeyGenNonEphemeral(t *testing.T) {

	k, err := currentBCCSP.KeyGen(&bccsp.ECDSAKeyGenOpts{Temporary: false})
	if err != nil {
		t.Fatalf("Failed generating ECDSA key [%s]", err)
	}
	if k == nil {
		t.Fatal("Failed generating ECDSA key. Key must be different from nil")
	}
	if !k.Private() {
		t.Fatal("Failed generating ECDSA key. Key should be private")
	}
	if k.Symmet


      return;
    }

    rallyPoint = dragSymbol!.options.geometry!;
    selectedPlaceName = null;
    isDragging = false;
  }

  _onSymbolTapped(Symbol resultSymbol) async {
    rallyPoint = resultSymbol.options.geometry!;

    selectedPlaceName = resultSymbol.options.textField!;

    await controller!.removeSymbols(resultSymbols);
    await controller!.updateSymbol(
      dragSymbol!,
      SymbolOptions(
        geometry: resultSymbol.options.geometry,
        iconOpacity: 1,
      ),
    );

    setState(() {
      resultText = null;
    });

    if (mounted) {
      ScaffoldMessenger.of(context).showSnackBar(SnackBar(
        content: Text(
          'Rally point set to $selectedPlaceName',
          textAlign: TextAlign.center,
        ),
      ));
    }
  }

  _onSearch(String search) async {
    // clear any previous results
    setState(() {
      resultText = null;
    });

    await controller!.removeSymbols(resultSymbols);

    // nothing to do if search is empty
    if (search.trim().isEmpty) {
      return;
    }

    // get region of current map view to search within
    final box = await controller?.getVisibleRegion();

    // search OSM data
    final response = await http.get(Uri(
        scheme: 'https',
        host: 'nominatim.openstreetmap.org',
        path: '/search',
        queryParameters: {
          'format': 'json',
          'q': search.trim(),
          'viewbox':
              '${box!.northeast.longitude},${box.northeast.latitude},${box.southwest.longitude},${box.southwest.latitude}',
          'bounded': '1'
        }));
    final responseData = jsonDecode(response.body);

    setState(() {
      resultText =
          'Found ${responseData.length > 0 ? responseData.length : 'no'} ${responseData.length == 1 ? 'result' : 'results'}';
    });

    // render results
    final List<SymbolOptions> resultSymbolOptions = [];
    for (final result in responseData) {
      resultSymbolOptions.add(SymbolOptions(
          geometry:
              LatLng(double.parse(result['lat']), double.parse(result['lon'])),
          iconImage: 'select-marker',
          iconSize: kIsWeb ? 0.4 : 0.9,
          iconAnchor: 'bottom',
          textField: result['name'],
          textColor: '#ffffff',
          textAnchor: 'top-middle',
          textOffset: const Offset(0, 1),
          textSize: 14));
    }

    resultSymbols = await controller!.addSymbols(resultSymbolOptions);
  }

  void _saveChanges() {
    Navigator.of(context).pop(RallyPointMapResult(
      rallyPoint: rallyPointGeographic,
      locationDescription: selectedPlaceName,
      trail: trail,
    ));
  }

  @override
  void dispose() {
    controller?.onFeatureDrag.remove(_onFeatureDrag);
    controller?.onSymbolTapped.remove(_onSymbolTapped);
    super.dispose();
  }
}
import 'dart:async';

import 'package:plugin_platform_interface/plugin_platform_interface.dart';
import 'package:square_mobile_payments_sdk/src/models/models.dart';

import 'square_mobile_payments_sdk_method_channel.dart';

abstract class SquareMobilePaymentsSdkPlatform extends PlatformInterface {
  /// Constructs a SquareMobilePaymentsSdkPlatform.
  SquareMobilePaymentsSdkPlatform() : super(token: _token);

  static final Object _token = Object();

  static SquareMobilePaymentsSdkPlatform _instance =
      MethodChannelSquareMobilePaymentsSdk();

  /// The default instance of [SquareMobilePaymentsSdkPlatform] to use.
  ///
  /// Defaults to [MethodChannelSquareMobilePaymentsSdk].
  static SquareMobilePaymentsSdkPlatform get instance => _instance;

  /// Platform-specific implementations should set this with their own
  /// platf


ider] UnityEditor.GameView type not found.");
                return;
            }

            var doToolbarGUIMethod = gameViewType.GetMethod("DoToolbarGUI", BindingFlags.Instance | BindingFlags.NonPublic);
            if (doToolbarGUIMethod != null)
            {
                s_harmony.Patch(doToolbarGUIMethod,
                    prefix: new HarmonyMethod(typeof(GameViewToolbarHider), nameof(DoToolbarGUIPrefix)));
            }

            var getViewInWindowMethod = gameViewType.GetMethod("GetViewInWindow", BindingFlags.Instance | BindingFlags.NonPublic);
            if (getViewInWindowMethod != null)
            {
                s_harmony.Patch(getViewInWindowMethod,
                    postfix: new HarmonyMethod(typeof(GameViewToolbarHider), nameof(GetViewInWindowPostfix)));
            }
        }

        private static void RemovePatches()
        {
            s_harmony.UnpatchAll(HarmonyId);
        }

        // Skip drawing toolbar buttons entirely.
        private static bool DoToolbarGUIPrefix() => false;

        // Expand the view rect upward into where the toolbar would be.
        private static void GetViewInWindowPostfix(ref Rect __result)
        {
            __result = new Rect(
                __result.x,
                __result.y - ToolbarHeight,
                __result.width,
                __result.height + ToolbarHeight
            );
        }
    }
}
#endif


}
.t3-admin-layout-preview .row .span20 {
  width: 20%;
  float: left;
}
.t3-admin-layout-preview .row .span16 {
  width: 16.6666%;
  float: left;
}
.t3-admin-layout-preview.wide {
  width: 720px;
}
.t3-admin-layout-preview.normal {
  width: 600px;
}
.t3-admin-layout-preview.xtablet {
  width: 500px;
}
.t3-admin-layout-preview.tablet {
  width: 450px;
}
.t3-admin-layout-preview.mobile {
  padding-left: 20px;
  padding-right: 20px;
  width: 400px;
}
.t3-admin-layout-preview.mobile .row [class*="span"],
.t3-admin-layout-preview.mobile .row-fluid [class*="span"],
.t3-admin-layout-preview.mobile .row .uneditable-input[class*="span"],
.t3-admin-layout-preview.mobile .row-fluid .uneditable-input[class*="span"],
.t3-admin-layout-preview.mobile .row [class*="span"],
.t3-admin-layout-preview.mobile .row-fluid [class*="span"] {
  float: none;
  display: block;
  width: 100%;
  margin-left: 0 !important;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
.t3-admin-layout-preview.mobile .row .span100,
.t3-admin-layout-preview.mobile .row-fluid .span100 {
  width: 100%;
  float: left;
}
.t3-admin-layout-preview.mobile .row .span50,
.t3-admin-layout-preview.mobile .row-fluid .span50 {
  width: 50%;
  float: left;
}
.t3-admin-layout-preview.mobile .row .span33,
.t3-admin-layout-preview.mobile .row-fluid .span33 {
  width: 33.3333%;
  float: left;
}
.t3-admin-layout-preview.mobile .row .span25,
.t3-admin-layout-preview.mobile .row-fluid .span25 {
  width: 25%;
  float: left;
}
.t3-admin-layout-preview.mobile .row .span20,
.t3-admin-layout-preview.mobile .row-fluid .span20 {
  width: 20%;
  float: left;
}
.t3-admin-layout-preview.mobile .row .span16,
.t3-admin-layout-preview.mobile .row-fluid .span16 {
  width: 16.6666%;
  float: left;
}
.t3-admin-layout-preview.mobile [class*="offset"] {
  margin-left: 0;
}

/* This beautiful CSS-File has been crafted with LESS (lesscss.org) and compiled by simpLESS (wearekiss.com/simpless) */
/* EXTRAS
 * -------------------------- */

/* Stacked and layered icon */
.icon-stack();

/* Animated rotating icon */
.icon-spin {
  display: inline-block;
  -moz-animation: spin 2s infinite linear;
  -o-animation: spin 2s infinite linear;
  -webkit-animation: spin 2s infinite linear;
  animation: spin 2s infinite linear;
}

/* Prevent stack and spinners from being taken inline when inside a link */
a .icon-stack,
a .icon-spin {
  display: inline-block;
  text-decoration: none;
}

@-moz-keyframes spin {
  0% { -moz-transform: rotate(0deg); }
  100% { -moz-transform: rotate(359deg); }
}
@-webkit-keyframes spin {
  0% { -webkit-transform: rotate(0deg); }
  100% { -webkit-transform: rotate(359deg); }
}
@-o-keyframes spin {
  0% { -o-transform: rotate(0deg); }
  100% { -o-transform: rotate(359deg); }
}
@-ms-keyframes spin {
  0% { -ms-transform: rotate(0deg); }


h < Layout.getDesiredWidth(source, head, i, paint)) { // Don't fit
                        if (head == tail) { // This chunk of text is too long to fit in one line
                            // Just give up and let the system handle it
                            return source
                        } else {
                            builder.append(source, head, tail)
                            builder.append('\n')
                            tail += 1
                            head = tail
                        }
                    } else {
                        tail = i
                    }
                }
            }
            if (mWidth < Layout.getDesiredWidth(source, head, length, paint) && head < tail) {
                builder.append(source, head, tail)
                builder.append('\n')
                head = tail + 1
            }
            builder.append(source, head, length)
            return builder
        }

        private fun isLineBreak(c: Char): Boolean {
            return c == ' '
        }

        override fun onFocusChanged(
            view: View,
            sourceText: CharSequence,
            focused: Boolean,
            direction: Int,
            previouslyFocusedRect: Rect
        ) {
            // Do nothing
        }
    }
}
/*
 * Copyright 2019. Google LLC
 *
 * 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.google.android.apps.santatracker.rocketsleigh

import androidx.annotation.DrawableRes
import java.util.Random

data class Obstacle(
    @DrawableRes
    val top: Int,
    @DrawableRes
    val bottom: Int,
    @DrawableRes
    val back: Int = 0
)

data class Level(
    @DrawableRes
    val background: Int,
    @DrawableRes
    val foreground: Int,
    @DrawableRes
    val entryTransition: Int,
    @DrawableRes
    val exitTransition: Int,
    val obstacles: List<Obstacle>
)

object RocketSleigh {

    val elf = intArrayOf(
            R.drawable.img_jetelf_100,
            R.drawable.img_jetelf_75,
            R.drawable.img_jetelf_50,
            R.drawable.img_jetelf_25,
            R.drawable.img_jetelf_0)

    val elfHit = intArrayOf(
            R.drawable.img_jetelf_100_hit,
            R.drawable.img_jetelf_75_hit,
            R.drawable.img_jetelf_50_hit,
            R.drawable.img_jetelf_25_hit)

    val elfBurn = intArrayOf(
            R.drawable.img_jet_burn_100,
            R.drawable.img_jet_burn_75,
            R.drawable.img_jet_burn_50,
            R.drawable.img_jet_burn_25)

    val elfThrust = intArrayOf(
            R.drawable.img_jet_thrust_100,
            R.drawable.img_jet_thrust_75,
            R.drawable.img_jet_thrust_50,
            R.drawable.img_jet_thrust_25)

    val elfSmoke = intArrayOf(
            R.drawable.img_jet_smoke_100_hit,
            R.drawable.img_jet_smoke_75_hit,
            R.drawable.img_jet_smoke_50_hit,
            R.drawable.img_jet_smoke_25_hit)

    fun generateLevels(random: Random): List<Level> {
        val woods = shuffle(woodsObstacles, 200, random)
        val cave = shuffle(caveObstacles, 200, random)
        val factory = shuffle(factoryObstacles, 200, random)
        return listOf


   Button: "button",
    Folder: "folder",
    Font: "font",
    Sound: "sound",
    Bitmap: "bitmap",
    CompiledClip: "compiled clip",
    Screen: "screen",
    Video: "video"
}

/**
 * 图层类型
 */
const LayerType = {
    /**
     * 普通层
     */
    Normal: "normal",
    /**
     * 引导层
     */
    Guide: "guide",
    /**
     * 被引导层
     */
    Guided: "guided",
    /**
     * 遮罩层
     */
    Mask: "mask",
    /**
     * 被遮罩的图层
     */
    Masked: "masked",
    /**
     * 文件夹
     */
    Folder: "folder"
}

const InstanceType = {
    Symbol: "symbol",
    Bitmap: "bitmap",
    EmbeddedVideo: "embedded video",
    LinkedVideo: "linked video",
    Video: "video",
    CompiledClip: "compiled clip"
}

const ElementType = {
    /**
     * Shape
     */
    Shape: "shape",
    /**
     * 文本框
     */
    Text: "text",
    /**
     * 实例
     */
    Instance: "instance",
    /**
     * 可扩展工具创建的对象
     */
    ShapeObj: "shapeObj"
}/*
Aufgabe: Lektion02 Functions: Skipiste
Name: Alina Maaß
Matrikel: 256216
Datum: 22.10.2017

Hiermit versichere ich, dass ich diesen Code selbst geschrieben habe.
Er wurde nicht kopiert und auch nicht diktiert.
*/

namespace Lektion02{
window.addEventListener("load", init);
function init():void{
    let canvas: HTMLCanvasElement = document.getElementsByTagName("canvas")[0];
    console.log(canvas);

    let crc2: CanvasRenderingContext2D = canvas.getContext("2d");
    console.log(crc2);

    //Sonne
    crc2.beginPath();
    crc2.arc(300,120, 50, 0, 2*Math.PI);
    crc2.stroke();
    crc2.fillStyle="yellow";
    crc2.fill();

    //Himmelfarbe
    crc2.fillStyle="#CBEDFC";
    crc2.fillRect(0,0,800,600);

    //Sonne
    crc2.beginPath();
    crc2.arc(300,120, 50, 0, 2*Math.PI);
    crc2.stroke();
    crc2.fillStyle="#FEE87B";
    crc2.fill();

    //Berge + Füllfarbe
    crc2.beginPath();
    crc2.moveTo(0,200);
    crc2.lineTo(150,0);
    crc2.lineTo(300, 150);
    crc2.lineTo(400, 0);
    crc2.lineTo(480, 85);
    crc2.lineTo(550, 0);
    crc2.lineTo(700, 150);
    crc2.lineTo(750, 0);
    crc2.lineTo(1500, 0);
    crc2.lineTo(1500, 700);
    crc2.lineTo(0, 700);
    crc2.stroke();
    crc2.fillStyle="#C9C8C8";
    crc2.fill();

    //Schatten Berg 1
    crc2.beginPath();
    crc2.moveTo(200,250);
    crc2.lineTo(150,0);
    crc2.lineTo(300, 150);
    crc2.stroke();
    crc2.fillStyle="#EFEFEF";
    crc2.fill();

    //Schatten Berg 2
    crc2.beginPath();
    crc2.moveTo(420,250);
    crc2.lineTo(400,0);
    crc2.lineTo(480, 85);
    crc2.stroke();
    crc2.fillStyle="#EFEFEF";
    crc2.fill();

    //


            height: rowHeight,
            padding: EdgeInsets.symmetric(horizontal: cellPadding, vertical: 0),
            decoration: BoxDecoration(
                border: Border.all(
                    width: viewModel.showFocus ? viewModel.onWidth : offWidth,
                    color: viewModel.showFocus ? onColor : offColor)),
            child: MouseRegion(
              cursor: SystemMouseCursors.text,
              child: IndexedStack(
                index: viewModel.stackIndex,
                children: [unfocusedChild, focusedChild],
              ),
            ),
          ),
        ),
      ),
    );

    return widget;
  }

  @override
  LabelFieldModel viewModelBuilder(
    BuildContext context,
  ) =>
      LabelFieldModel(
        textController: TextEditingController(text: entry),
        onSubmitted: (text) {
          onSubmitted(text);
        },
        offWidth: offWidth,
        focusWidthFactor: focusWidthFactor,
      );
}
// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'todo.dart';

// **************************************************************************
// IsarCollectionGenerator
// **************************************************************************

// coverage:ignore-file
// ignore_for_file: duplicate_ignore, non_constant_identifier_names, constant_identifier_names, invalid_use_of_protected_member, unnecessary_cast, prefer_const_constructors, lines_longer_than_80_chars, require_trailing_commas, inference_failure_on_function_invocation, unnecessary_parenthesis, unnecessary_raw_strings, unnecessary_null_checks, join_return_with_assignment, prefer_final_locals, avoid_js_rounded_ints, avoid_positional_boolean_parameters, always_specify_types

extension GetTodoCollection on Isar {
  IsarCollection<Todo> get todos => this.collection();
}

const TodoSchema = CollectionSchema(
  name: r'Todo',
  id: -505491818817781703,
  properties: {
    r'completed': PropertySchema(
      id: 0,
      name: r'completed',
      type: IsarType.bool,
    ),
    r'completedAt': PropertySchema(
      id: 1,
      name: r'completedAt',
      type: IsarType.dateTime,
    ),
    r'createdAt': PropertySchema(
      id: 2,
      name: r'createdAt',
      type: IsarType.dateTime,
    ),
    r'title': PropertySchema(
      id: 3,
      name: r'title',
      type: IsarType.string,
    ),
    r'type': PropertySchema(
      id: 4,
      name: r'type',
      type: IsarType.string,
    )
  },
  estimateSize: _todoEstimateSize,
  serialize: _todoSerialize,
  deserialize: _todoDeserialize,
  deserializeProp: _todoDeserializeProp,
  idName: r'id',
  indexes: {},
  links: {},
  embeddedSchemas: {},
  getId: _todoGetId,
  getLinks: _todoGetLinks,
  attach: _todoAttach,
  version: '3.1.0+1',
);

int _todoEstimateSize(
  Todo object,
  List<int> offsets,
  Map<Type, List<int>> allOffsets,
) {
  var bytesCount = offsets.last;
  bytesCount += 3 + object.title.length * 3;
  bytesCount += 3 + object.type.length * 3;
  return bytesCount;
}

void _todoSerialize(
  Todo object,
  IsarWriter writer,
  List<int> offsets,
  Map<Type, List<int>> allOffsets,
) {
  writer.writeBool(offsets[0], object.completed);
  writer.writeDateTime(off


ert.Equal(t, status2.DNDEndTime, status.DNDEndTime)
				assert.Equal(t, status2.PrevStatus, status.PrevStatus)
			}
		}
	})
}
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.

package storetest

import (
	"fmt"
	"sort"
	"testing"
	"time"

	"github.com/mattermost/mattermost/server/public/model"
	"github.com/mattermost/mattermost/server/public/shared/request"
	"github.com/mattermost/mattermost/server/v8/channels/store"
	"github.com/mattermost/mattermost/server/v8/channels/utils"

	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"
)

func TestFileInfoStore(t *testing.T, rctx request.CTX, ss store.Store, s SqlStore) {
	t.Cleanup(func() {
		s.GetMaster().Exec("TRUNCATE FileInfo")
	})
	t.Run("FileInfoSaveGet", func(t *testing.T) { testFileInfoSaveGet(t, rctx, ss) })
	t.Run("FileInfoSaveGetByPath", func(t *testing.T) { testFileInfoSaveGetByPath(t, rctx, ss) })
	t.Run("FileInfoGetForPost", func(t *testing.T) { testFileInfoGetForPost(t, rctx, ss) })
	t.Run("FileInfoGetForUser", func(t *testing.T) { testFileInfoGetForUser(t, rctx, ss) })
	t.Run("FileInfoGetWithOptions", func(t *testing.T) { testFileInfoGetWithOptions(t, rctx, ss) })
	t.Run("FileInfoAttachToPost", func(t *testing.T) { testFileInfoAttachToPost(t, rctx, ss) })
	t.Run("FileInfoDeleteForPost", func(t *testing.T) { testFileInfoDeleteForPost(t, rctx, ss) })
	t.Run("FileInfoPermanentDelete", func(t *testing.T) { testFileInfoPermanentDelete(t, rctx, ss) })
	t.Run("FileInfoPermanentDeleteBatch", func(t *testing.T) { testFileInfoPermanentDeleteBatch(t, rctx, ss) })
	t.Run("FileInfoPermanentDeleteByUser", func(t *testing.T) { testFileInfoPermanentDeleteByUser(t, rctx, ss) })
	t.Run("FileInfoUpdateMinipreview", func(t *testing.T) { testFileInfoUpdateMinipreview(t, rctx, ss) })
	t.Run("GetFilesBatchForIndexing", func(t *testing.T) { testFileInfoStoreGetFilesBatchForIndexing(t, rctx, ss) })
	t.Run("CountAll", func(t *testing.T) { testFileInfoStoreCountAll(t, rctx, ss) })
	t.Run("GetStorageUsage", func(t *testing.T) { testFileInfoGetStorageUsage(t, rctx, ss) })
	t.Run("GetUptoNSizeFileTime", func(t *testing.T) { testGetUptoNSizeFileTime(t, rctx, ss, s) })
	t.Run("FileInfoPermanentDeleteForPost", func(t *testing.T) { testPermanentDeleteForPost(t, rctx, ss) })
	t.Run("FileInfoGetByIds", func(t *testing.T) { testGetByIds(t, rctx, ss) })
	t.Run("FileInfoDeleteForPostByIds", func(t *testing.T) { testDeleteForPostByIds(t, rctx, ss) })
	t.Run("FileInfoRestoreForPostByIds", func(t *testing.T) { testRestoreUndeleteForPostByIds(t, rctx, ss) })
}

func testFileInfoSaveGet(t *testing.T, rctx request.CTX, ss store.Store) {
	info := &model.FileInfo{
		CreatorId: model.


 y2 - depth, upColor, downColor, GradientRectDrawer.GradientMode.VERTICAL); //down
        Drawers.GRADIENT_RECT.end();
    }

    public static void drawShaderOutlineRect(BThackShaderProgram shaderProgram, float x1, float y1, float x2, float y2, float depth) {
        Drawers.SHADER_DRAWER.begin(shaderProgram);
        Drawers.SHADER_DRAWER.draw(x1,y1, x1 + depth, y2); //left
        Drawers.SHADER_DRAWER.draw(x1 + depth, y2 - depth, x2, y2); //down
        Drawers.SHADER_DRAWER.draw(x2, y2 - depth, x2 - depth, y1); //right
        Drawers.SHADER_DRAWER.draw(x1 + depth, y1, x2 - depth, y1 + depth); //up
        Drawers.SHADER_DRAWER.end();
    }

    public static void drawSquare(float x1, float y1, float size, int color) {
        drawRect(x1 - size, y1 - size, x1 + size, y1 + size, color);
    }

    public static void drawTriangle(float x, float y, float size, float theta, int color) {
        Matrix4f matrix4f = BThackMatrix.peek().getPositionMatrix();

        double radians = Math.toRadians(theta);

        float xA = -size;
        double newXA = xA * Math.cos(radians) + size * Math.sin(radians);
        double newYA = size * Math.cos(radians) - xA * Math.sin(radians);

        float xB = 0;
        float yB = -(size * 2);
        double newXB = xB * Math.cos(radians) + yB * Math.sin(radians);
        double newYB = yB * Math.cos(radians) - xB * Math.sin(radians);

        double newXC = size * Math.cos(radians) + size * Math.sin(radians);
        double newYC = size * Math.cos(radians) - size * Math.sin(radians);

        Drawers.RECT.begin(color);
        Drawers.RECT.vertex(matrix4f, (float)(x + newXB), (float)(y + newYB), 0);
        Drawers.RECT.vertex(matrix4f, (float)(x + newXA), (float)(y + newYA), 0);
        Drawers.RECT.vertex(matrix4f, (float)(x + newXC), (float)(y + newYC), 0);
        Drawers.RECT.vertex(matrix4f, (float)(x + newXB), (float)(y + newYB), 0);
        Drawers.RECT.end();
    }

    public static void drawString(String text, float x, float y, int color, boolean shadow, FontRenderManager.DrawMode drawMode) {

        if (text == null || text.isEmpty()) return;

        if (ModuleList.customFont == null || !ModuleList.customFont.isEnabled()) {
            BThackMatrix.push();
            float size = drawMode.getSize();
            if (size != 1f)
                BThackMatrix.scale(size, size, size);
            mc.textRenderer.draw(Text.literal(text), x * (1 / size), y * (1 / size), color, shadow, BThackMatrix.peek().getPositionMatrix(), bufferSource, TextRenderer.TextLayerType.NORMAL, 0, 15728880, mc.textRenderer.isRightToLeft());
            guiGraphics.draw();
            resetShader();
            BThackMatrix.pop();
        } else {
            RenderSystem.enableDepthTest();
            fontRenderManager.draw(text, x, y, color, shadow, drawMode);
        }
    }

    public static void drawString(String text, float x1, float y1, int color, boolean shadow) {
        drawString(text, x1, y1, color, shadow, FontRenderManager.DrawMode.NORMAL);
    }

    public static void drawString(String text, float x1, float y1, int


'2',	'SALTICIDAE',	's50320',	'',	'探索队的跃变武装',	'',	'',	'',	'2',	'50320_Common_Salticidae02_draw',	'50320_Break_Salticidae_C',	'50320_Break_Salticidae_F',	'50320_Break_Salticidae_L',	'50320_Break_Salticidae_N',	'50320_Common_Salticidae_O',	'',	'50320_Break_Salticidae',	'Salticidae_05,Salticidae_06,Salticidae_07,Salticidae_08',	'Salticidae_04',	'Salticidae_20',	'Salticidae_14,Salticidae_15,Salticidae_16,Salticidae_17,Salticidae_18',	'Salticidae_21',	'Salticidae_22',	'Salticidae_13',	'',	'',	'two_feet_step_woody_2',	'5032001',	'',	'',	'60',	'',	'',	'',	'跃升到第II阶段解锁',	'',	'',	'50320',	'50320',	'05_swarms',	'0,-88,0.88',	'50320_break_Salticidae_spine',	'150,-94,1.08',	'',	'',	'',	'',	'',	'',	'',	'50320/Dorm_50320_Face',	'50320/Dorm_50320_Hair',	'Body/Dorm_5Swarms_s1_white_Body',	'',	'',	'',	'',	'',	'',	'',	'',	''},
{'5032003',	'澄明离恨',	'哈托莉',	'1',	'SALTICIDAE',	's5032003',	'',	'提问，单人想要通关双人游戏的最佳办法是什么？很显然答案她已经知道了。',	'可恶可恶！总队长！别那边站着，把我脚上这个手柄拿去，快点帮我把这关过了，可恶！',	's5032003',	'',	'2',	'50320_Common_Salticidae04_draw',	'50320_Skin106_Salticidae_C',	'50320_Skin106_Salticidae_F',	'50320_Skin106_Salticidae_L',	'50320_Skin106_Salticidae_N',	'50320_Skin106_Salticidae_O',	'',	'50320_Skin106_Salticidae',	'Salticidae_05,Salticidae_06,Salticidae_07,Salticidae_08',	'Salticidae_04',	'Salticidae_20',	'Salticidae_14,Salticidae_15,Salticidae_16,Salticidae_17,Salticidae_18',	'Salticidae_21',	'Salticidae_22',	'Salticidae_13',	'',	'',	'two_feet_step_woody_2',	'5032001',	'',	'',	'60',	'',	'',	'',	'时装商店中购买',	'140008',	'',	'50320',	'50320',	'05_swarms',	'-1,-161,0.8',	'50320_skin_Salticidae03_spine',	'100,-44,1.07',	'1',	'',	'',	'',	'',	'',	'',	'50320/Dorm_50320_Face',	'',	'50320/


sarvea ovat kymmenen kuningasta, jotka nousevat siitävaltakunnasta. Ja heidän jälkeensä nousee eräs muu, ja hän on erilainenkuin edelliset, ja hän kukistaa kolme kuningasta.</verse>
				<verse number="25">Hän puhuu sanoja Korkeinta vastaan ja hävittää Korkeimman pyhiä. Hänpyrkii muuttamaan ajat ja lain, ja ne annetaan hänen käteensä ajaksi jakahdeksi ajaksi ja puoleksi ajaksi.</verse>
				<verse number="26">Sitten oikeus istuu tuomiolle, ja hänen valtansa otetaan pois jahävitetään ja tuhotaan loppuun asti.</verse>
				<verse number="27">Ja valtakunta ja valta ja valtakuntien voima kaiken taivaan allaannetaan Korkeimman pyhien kansalle. Hänen valtakuntansa on iankaikkinenvaltakunta, ja kaikki vallat palvelevat häntä ja ovat hänellealamaiset."</verse>
				<verse number="28">Tähän loppuu kertomus. Minua, Danielia, peljättivät minun ajatuksenisuuresti, ja minun kasvoni kalpenivat, ja minä kätkin asian sydämeeni.</verse>
			</chapter>
			<chapter number="8">
				<verse number="1">Kuningas Belsassarin kolmantena hallitusvuotena näin minä, Daniel,näyn, senjälkeen kuin minulla jo ennen oli ollut näky.</verse>
				<verse number="2">Kun minä näyssä katselin, havaitsin minä olevani Suusanin linnassa,Eelamin maakunnassa; ja kun minä näyssä katselin, olin minä Uulai-joenrannalla.</verse>
				<verse number="3">Minä nostin silmäni ja katsoin. Ja katso, oinas seisoi päin jokea, jasillä oli kaksi sarvea; ja sarvet olivat korkeat, ja toinen oli toistakorkeampi; ja korkeampi puhkesi esiin myöhemmin.</verse>
				<verse number="4">Minä näin oinaan puskevan länteen, pohjoiseen ja etelään päin, eikäyksikään eläin kestänyt sen edessä, eikä kukaan voinut pelastaa senvallasta. Se teki, mitä tahtoi; ja se tuli suureksi.</verse>
				<verse number="5">Sitten minä tarkkasin, ja katso: tuli kauris päivän laskun puolelta,kulki koko maan ylitse eikä maata koskettanut; ja kauriilla oli keskelläotsaa uhkea sarvi.</verse>
				<verse number="6">Ja se tuli aivan sen kaksisarvisen oinaan luokse, jonka minä olinnähnyt seisovan päin jokea, ja karkasi sen kimppuun vihansa väessä.</verse>
				<verse number="7">Ja minä näin sen käyvän kiinni oinaaseen ja kiukuissaan puskevanoinasta ja murskaavan sen molemmat sarvet. Eikä oinaalla ollut voimaakestää sen edessä, vaan kauris heitti sen maahan ja tallasi sitä; eikäollut ketään, joka olisi voinut pelastaa oinaan sen vallasta.</verse>
				<verse number="8">Ja kauris tuli ylen suureksi; mutta kun se oli väkevimmillään, särkyisuuri sarvi, ja sen sijalle kasvoi neljä uhkeata sarvea, taivaan neljäätuulta kohti.</verse>
				<verse number


import snscrape.modules.twitter as sntwitter
import pandas as pd
import os

query = "AI OR artificial intelligence OR machine learning since:2024-01-01 until:2025-01-01"
tweets = []

for i, tweet in enumerate(sntwitter.TwitterSearchScraper(query).get_items()):
    if i >= 100:
        break
    tweets.append([tweet.date, tweet.user.username, tweet.content])

df = pd.DataFrame(tweets, columns=["Date", "Username", "Tweet"])

# ✅ Force saving to full path
save_path = r"C:\Users\Jyotishna\Downloads\twitter_dataset_scraper\ai_tweets_sample.csv"
df.to_csv(save_path, index=False)

print(f"✅ Tweets saved to: {save_path}")


pecificCategory()
        {
            var tracks = chartApi.GetTracks(SCExploreCategory.Create(SCExploreCategoryType.Classical));
            Assert.IsTrue(tracks.Any());
        }

        [Test]
        public void TestGetChartPopularMusicCategory()
        {
            var tracks = chartApi.GetTracks(SCExploreCategory.Create(SCExploreCategoryType.PopularMusic));
            Assert.IsTrue(tracks.Any());
        }

        [Test]
        public void TestDubstepCategory()
        {
            var tracks = chartApi.GetTracks(SCExploreCategory.Create(SCExploreCategoryType.Dubstep));
            Assert.IsTrue(tracks.Any());
        }
    }
}


use crate::ContextMenu;
use crate::ContextMenuAction;
#[cfg(any(feature = "v2_18", feature = "dox"))]
#[cfg_attr(feature = "dox", doc(cfg(feature = "v2_18")))]
use glib::object::IsA;
use glib::translate::*;
use std::fmt;

glib::wrapper! {
    pub struct ContextMenuItem(Object<ffi::WebKitContextMenuItem, ffi::WebKitContextMenuItemClass>);

    match fn {
        get_type => || ffi::webkit_context_menu_item_get_type(),
    }
}

impl ContextMenuItem {
    //#[cfg_attr(feature = "v2_18", deprecated)]
    //#[doc(alias = "webkit_context_menu_item_new")]
    //pub fn new(action: /*Ignored*/&gtk::Action) -> ContextMenuItem {
    //    unsafe { TODO: call ffi:webkit_context_menu_item_new() }
    //}

    #[cfg(any(feature = "v2_18", feature = "dox"))]
    #[cfg_attr(feature = "dox", doc(cfg(feature = "v2_18")))]
    #[doc(alias = "webkit_context_menu_item_new_from_gaction")]
    pub fn from_gaction<P: IsA<gio::Action>>(action: &P, label: &str, target: Option<&glib::Variant>) -> ContextMenuItem {
        assert_initialized_main_thread!();
        unsafe {
            from_glib_none(ffi::webkit_context_menu_item_new_from_gaction(action.as_ref().to_glib_none().0, label.to_glib_none().0, target.to_glib_none().0))
        }
    }

    #[doc(alias = "webkit_context_menu_item_new_from_stock_action")]
    pub fn from_stock_action(action: ContextMenuAction) -> ContextMenuItem {
        assert_initialized_main_thread!();
        unsafe {
            from_glib_none(ffi::webkit_context_menu_item_new_from_stock_action(action.to_glib()))
        }
    }

    #[doc(alias = "webkit_context_menu_item_new_from_stock_action_with_label")]
    pub fn from_stock_action_with_label(action: ContextMenuAction, label: &str) -> ContextMenuItem {
        assert_initialized_main_thread!();
        unsafe {
            from_glib_none(ffi::webkit_context_menu_item_new_from_stock_action_with_label(action.to_glib(), label.to_glib_none().0))
        }
    }

    #[doc(alias = "webkit_context_menu_item_new_separator")]
    pub fn new_separator() -> ContextMenuItem {
        assert_initialized_main_thread!();
        unsafe {
            from_glib_none(ffi::webkit_context_menu_item_new_separator())
        }
    }

    #[doc(alias = "webkit_context_menu_item_new_with_submenu")]
    pub fn with_submenu(label: &str, submenu: &ContextMenu) -> ContextMenuItem {
        skip_assert_initialized!();
        unsafe {
            from_glib_none(ffi::webkit_context_menu_item_new_with_submenu(label.to_glib_none().0, submenu.to_glib_none().0))
        }
    }

    //#[cfg_attr(feature = "v2_18", deprecated)]
    //#[doc(alias = "webkit_context_menu_item_get_action")]
    //pub fn get_action(&self) -> /*Ignored*/Option<gtk::Action> {
    //    unsafe { TODO: call ffi:webkit_context_menu_item_get_action() }
    //}

    #[cfg(any(feature = "v2_18", feature = "dox"))]
    #[cfg_attr(featur


isters, page 257
     */

    val PCMDBA = PCI_CONF_FUNC_WR(0x10, DWORD, "PCMDBA")
    val PCTLBA = PCI_CONF_FUNC_WR(0x14, DWORD, "PCTLBA")
    val SCMDBA = PCI_CONF_FUNC_WR(0x18, DWORD, "SCMDBA")
    val SCTLBA = PCI_CONF_FUNC_WR(0x1C, DWORD, "SCTLBA")
    val LBAR = PCI_CONF_FUNC_WR(0x20, DWORD, "LBAR")

    val MAP_PCS = PCI_CONF_FUNC_WR(0x90, DWORD, "MAP_PCS")

    val TM = PCI_CONF_FUNC_WR(0x94, DWORD, "TM2")
    val TM2 = PCI_CONF_FUNC_WR(0x98, DWORD, "TM2")

    val SATAGC = PCI_CONF_FUNC_WR(0x9C, DWORD, "SATAGC")
    val SIRI = PCI_CONF_FUNC_WR(0xA0, BYTE, "SIRI")
    val SIRD = PCI_CONF_FUNC_WR(0xA4, DWORD, "SIRD")

    val SATACR0 = PCI_CONF_FUNC_WR(0xA8, DWORD, "SATACR0")
    val SATACR1 = PCI_CONF_FUNC_WR(0xAC, DWORD, "SATACR1")

    val FLRCID = PCI_CONF_FUNC_WR(0xB0, WORD, "FLRCID")
    val FLRCAP = PCI_CONF_FUNC_WR(0xB2, WORD, "FLRCAP")
    val FLRCTL = PCI_CONF_FUNC_WR(0xB4, WORD, "FLRCTL")
}
/*
 *
 * This file is part of Kopycat emulator software.
 *
 * Copyright (C) 2023 INFORION, LLC
 *
 * 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 2 of the License, or
 * (at your option) any later version.
 *
 * Non-free licenses may also be purchased from INFORION, LLC,
 * for users who do not want their programs protected by the GPL.
 * Contact us for details kopycat@inforion.ru
 *
 * 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, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 *
 */
package ru.inforion.lab403.kopycat.modules.syscores.sha1.instructions

import ru.inforion.lab403.common.extensions.uint
import ru.inforion.lab403.kopycat.modules.syscores.sha1.enums.GPR
import ru.inforion.lab403.kopycat.modules.syscores.sha1.hardware.SHA1Core

class Write(core: SHA1Core) : Instruction(core) {
    override val mnem = "write"

    override fun execute() = with(core.cpu) {
        engine.A = regs[GPR.A].uint
        engine.B = regs[GPR.B].uint
        engine.C = regs[GPR.C].uint
        engine.D = regs[GPR.D].uint
        engine.E = regs[GPR.E].uint
    }
}/*
 *
 * This file is part of Kopycat emulator software.
 *
 * Copyright (C) 2023 INFORION, LLC
 *
 * 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 2 of the License, or
 * (at your option) any later version.
 *
 * Non-free licenses may also be purchased from INFORION, LLC,
 * for users who do not want their programs protected by the GPL.
 * Contact us for details kopycat@inforion.ru
 *
 * 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


4.133-59.327-14.133-.38-.164-35.713-.492-69.658-.875v-21.23c0-7.563-3.198-21.273-9.767-41.879-6.049-19.733-9.116-34.56-9.116-44.07 0-9.056 2.711-16.095 8.28-21.51 5.852-5.649 13.603-8.395 23.697-8.395 9.915 0 17.328 3.305 22.686 10.132 5.504 6.835 8.18 14.347 8.18 22.967 0 8.957-.892 16.914-2.534 22.8 0 1.845 1.236 3.874 5.609 7.589 3.48 2.52 9.04 5.2 16.826 8.05 7.96 2.82 16.792 4.25 26.247 4.249z"/></svg>';
  static const String fthtml =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="512" height="512" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"><path fill="currentColor" d="M85.44 261.51v232.524h94.862V261.51h142.453v189.085l77.774 43.439h91.508v-76.497h-74.74V261.51H512v-78.892h-94.702V61.565l-94.543 52.541v68.512H180.302V94.782h76.816V17.966H164.81L85.44 61.565v121.053H0v78.892h85.44z"/></svg>';
  static const String fuelux =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="512" height="512" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512"><path fill="currentColor" d="m294.103 133.433-23.043 19.75c-15.99-15.343-35.542-26.998-57.277-33.59l8.85-28.933c27.283 8.29 51.723 23.17 71.47 42.773zm13.474 15.01-22.978 19.695c13.195 16.81 22.704 34.626 27.283 56.26l30.799 2.016c-5.04-29.122-17.398-55.769-35.104-77.971zM194.064 115.12l8.926-29.18c-34.015-5.988-67.498-1.845-97.313 10.759l12.624 27.514c23.701-9.557 48.55-12.963 75.763-9.093zm25.798 306.937-13.275-27.777c-78.79 19.503-168.328-31.871-176.34-130.791L0 264.176c9.62 131.864 134.26 184.49 219.862 157.881zM30.615 243.31c4.14-46.878 31.08-87.302 69.633-110.088l-12.668-27.61C38.48 133.458 4.295 184.654.22 244l30.395-.69zm181.93 37.55L512 257.67v-8.066l-303.489-21.173c11.82 15.153 11.688 32.957 4.033 52.43zm-9.075-27.222c0-21.653-23.6-35.259-42.38-24.432-18.778 10.826-18.778 38.038 0 48.864 18.78 10.826 42.38-2.78 42.38-24.432z"/></svg>';
  static const String fusebox =


using ARKBreedingStats.Library;
using ARKBreedingStats.species;
using System;

namespace ARKBreedingStats.raising
{
    public static class Raising
    {
        public delegate void createIncubationEventHandler(Creature mother, Creature father, TimeSpan incubationDuration, bool incubationStarted);

        /// <summary>
        /// Retrieves the times for raising, i.e. for incubation, baby-phase, total maturation, and mating interval.
        /// </summary>
        /// <returns></returns>
        public static bool GetRaisingTimes(Species species, out TimeSpan matingTime, out string incubationMode, out TimeSpan incubation, out TimeSpan baby, out TimeSpan maturation, out TimeSpan nextMatingMin, out TimeSpan nextMatingMax)
        {
            matingTime = new TimeSpan();
            incubation = new TimeSpan();
            baby = new TimeSpan();
            maturation = new TimeSpan();
            nextMatingMin = new TimeSpan();
            nextMatingMax = new TimeSpan();
            incubationMode = null;

            if (species?.breeding == null)
                return false;

            nextMatingMin = new TimeSpan(0, 0, (int)(species.breeding.matingCooldownMinAdjusted));
            nextMatingMax = new TimeSpan(0, 0, (int)(species.breeding.matingCooldownMaxAdjusted));

            incubationMode = species.breeding.gestationTimeAd


//opendocs.alipay.com/mini/api/rq1dl7">my.onBeaconServiceChange
    监听 iBeacon 服务的状态变化。

    my.onBeaconUpdate
    监听 iBeacon 设备的更新事件。

    my.startBeaconDiscovery
    开始搜索附近的 iBeacon 设备。

    my.stopBeaconDiscovery
    停止搜索附近的 iBeacon 设备。

# 示例代码

```javascript
//初始化
my.openBluetoothAdapter({
  success: res => {
    console.log(res);
  },
});
//注册发现事件
my.onBluetoothDeviceFound(res => {
  let device = res.devices[0];
  //连接发现的设备
  my.connectBLEDevice({
    deviceId: device.deviceId,
    success: res => {
      console.log(res);
    },
    fail: res => {},
    complete: res => {},
  });
  //停止搜索
  my.stopBluetoothDevicesDiscovery({
    success: res => {
      console.log(res);
    },
    fail: res => {},
    complete: res => {},
  });
});
//注册连接事件
my.onBLEConnectionStateChanged(res => {
  console.log(res);
  if (res.connected) {
    //开始读写notify等操作
    my.notifyBLECharacteristicValueChange({
      deviceId: deviceId,
      serviceId: serviceId,
      characteristicId: characteristicId,
      success: res => {
        console.log(res);
      },
      fail: res => {},
      complete: res => {},
    });
  }
});
//注册接收read或notify的数据
my.onBLECharacteristicValueChange(res => {
  console.log(res);
});
//开始搜索
my.startBluetoothDevicesDiscovery({
  services: ['fff0'],
  success: res => {
    console.log(res);
  },
  fail: res => {},
  complete: res => {},
});
//断开连接
my.disconnectBLEDevice({
  deviceId: deviceId,
  success: res => {
    console.log(res);
  },
  fail: res => {},
  complete: res => {},
});
//注销事件
my.offBluetoothDeviceFound();
my.offBLEConnectionStateChanged();
my.offBLECharacteristicValueChange();
//退出蓝牙模块
my.closeBluetoothAdapter({
  success: res => {},
  fail: res => {},
  complete: res


4_series' | 'Esv5_series' | 'Ev3_series' | 'Ev4_series' | 'Ev5_series' | 'F_series' | 'Fs_series' | 'Fsv2_series' | 'GS_series' | 'G_series' | 'H_series' | 'Ls_series' | 'Lsv2_series' | 'M_series' | 'Mdsv2_series' | 'Msv2_series' | 'Mv2_series' | 'Standard_A0_A7' | 'Standard_A8_A11' | 'Unknown' | string)[] (ReadOnly): Gets the Premium disk VM Families list.
* **reservedInstanceSqlTargets**: ('AzureSqlDatabase' | 'AzureSqlManagedInstance' | 'AzureSqlVirtualMachine' | 'AzureVirtualMachine' | 'Recommended' | 'Unknown' | string)[]: Gets or sets the Reserved Instance SQL target types.
* **reservedInstanceSupportedCurrencies**: ('ARS' | 'AUD' | 'BRL' | 'CAD' | 'CHF' | 'CNY' | 'DKK' | 'EUR' | 'GBP' | 'HKD' | 'IDR' | 'INR' | 'JPY' | 'KRW' | 'MXN' | 'MYR' | 'NOK' | 'NZD' | 'RUB' | 'SAR' | 'SEK' | 'TRY' | 'TWD' | 'USD' | 'Unknown' | 'ZAR' | string)[]: Gets or sets the list of currencies supported for Reserved Instances.
* **reservedInstanceSupportedLocations**: ('AustraliaCentral' | 'AustraliaCentral2' | 'AustraliaEast' | 'AustraliaSoutheast' | 'BrazilSouth' | 'CanadaCentral' | 'CanadaEast' | 'CentralIndia' | 'CentralUs' | 'ChinaEast' | 'ChinaEast2' | 'ChinaNorth' | 'ChinaNorth2' | 'EastAsia' | 'EastUs' | 'EastUs2' | 'FranceCentral' | 'FranceSouth' | 'GermanyCentral' | 'GermanyNorth' | 'GermanyNortheast' | 'GermanyWestCentral' | 'JapanEast' | 'JapanWest' | 'KoreaCentral' | 'KoreaSouth' | 'NorthCentralUs' | 'NorthEurope' | 'NorwayEast' | 'NorwayWest' | 'QatarCentral' | 'SouthAfricaNorth' | 'SouthAfricaWest' | 'SouthCentralUs' | 'SouthIndia' | 'SoutheastAsia' | 'SwedenCentral' | 'SwitzerlandNorth' | 'SwitzerlandWest' | 'UAECentral' | 'UAENorth' | 'USDoDCentral' | 'USDoDEast' | 'USGovArizona' | 'USGovIowa' | 'USGovTexas' | 'USGovVirginia' | 'UkSouth' | 'UkWest' | 'Unknown' | 'UsNatEast' | 'UsNatWest' | 'UsSecCentral' | 'UsSecEast' | 'UsSecWest' | 'WestCentralUs' | 'WestEurope' | 'WestIndia' | 'WestUs' | 'WestUs2' | string)[]: Gets or sets the list of Azure locations supporting Reserved Instances.
* **reservedInstanceSupportedLocationsForIaas**: ('AustraliaCentral' | 'AustraliaCentral2' | 'AustraliaEast' | 'AustraliaSoutheast' | 'BrazilSouth' | 'CanadaCentral' | 'CanadaEast' | 'CentralIndia' | 'CentralUs' | 'ChinaEast' | 'ChinaEast2' | 'ChinaNorth' | 'ChinaNorth2' | 'EastAsia' | 'EastUs' | 'EastUs2' | 'FranceCentral' | 'FranceSouth' | 'GermanyCentral' | 'GermanyNorth' | 'GermanyNortheast' | 'GermanyWestCentral' | 'JapanEast' | 'JapanWest' | 'KoreaCentral' | 'KoreaSouth' | 'Nort


    let stdout = io::stdout().into_raw_mode()?;
    let stdout = AlternateScreen::from(stdout);
    let backend = TermionBackend::new(stdout);
    let mut terminal = Terminal::new(backend)?;
    terminal.hide_cursor()?;

    // Setup event handlers
    let events = Events::new();
    let mut rng = rand::thread_rng();

    let mut game_data = GameData::new(&mut rng);
    let mut theme_system = ThemeSystem::new(ThemeMode::DarkMode);

    loop {
        terminal.draw(|mut f| {
            let layout_chunks = Layout::default()
                .direction(Direction::Vertical)
                .constraints(
                    [
                        Constraint::Length(4),
                        Constraint::Min(0), // main render
                    ]
                    .as_ref(),
                )
                .split(f.size());

            let chunks = Layout::default()
                .direction(Direction::Horizontal)
                .constraints(
                    [
                        Constraint::Length(10),
                        Constraint::Length(40),
                        Constraint::Min(0),
                    ]
                    .as_ref(),
                )
                .split(layout_chunks[1]);

            let footer_chunks = Layout::default()
                .direction(Direction::Vertical)
                .constraints([Constraint::Length(23), Constraint::Min(0)].as_ref())
                .split(chunks[1]);

            {
                draw_header(
                    &mut f,
                    &layout_chunks[0].inner(&Margin {
                        horizontal: 10,
                        vertical: 0,
                    }),
                    &game_data.game_state,
                )
                .unwrap();
            }

            {
                let time = match game_data.game_state {
                    GameState::INIT => {
                        game_data.start_time = Instant::now();

                        0
                    }
                    GameState::PLAYING => {
                        game_data.base_time + game_data.start_time.elapsed().as_secs()
                    }
                    GameState::PAUSED => {
                        game_data.start_time = Instant::now();

                        game_data.base_time
                    }
                    GameState::DONE => game_data.base_time,
                };

                let title_string = format!(" Time: {}s  Moves: {}", time, &game_data.move_count);
                let title_string = title_string.as_str();

                let block = Block::default()
                    .borders(Borders::NONE)
                    .title(title_string)
                    .title_style(Style::default().modifier(Modifier::BOLD));
                f.render_widget(block, chunks[1]);

                draw_board(
                    &game_data.arr_state,
                    &mut f,
                    &chunks[1].inner(&Margin {
                        horizontal: 1,
                        vertical: 2,
                    }),
                    5,
                    &theme_system,
                )
                .unwrap();
            }

            {
                helper::draw_guide(&mut f, &chunks[2]).unwrap();
            }

            {
                let footer = "🍺 Github: 24seconds/rust-15-puzzle-cli";
                let block = Block::default()
                    .borders(Borders::NONE)
                    .border_style(Style::default().fg(Color::Yellow))
                    .title(footer);
                f.render_widget(block, footer_chunks[1]);
            }
        })?;

        match events.next()? {
            Event::Input(key) => match key {
                Key::Char('q') => {
                    break;
                }
                Ke


ori     r.3, r.31, 0            // set status value
        b       UCHloop                 // loop on return

UCH10:
        li      r.3, ExceptionContinueSearch    // set disposition value

        NESTED_EXIT (KiUserCallbackHandler, HFrameLength, 1, 0)

// Define layout and length of User Exception Dispatcher stack frame.
//    N.B.  This must exactly match the computations in KiDispatchException

                .struct 0
EDFrame:        .space  StackFrameHeaderLength
EDExcept:       .space  ExceptionRecordLength
EDContext:      .space  ContextFrameLength
EDToc:          .long   0
                .space  STK_SLACK_SPACE
                .align  3
EDFrameLength:

                .text

//      SBTTL("User Exception Dispatcher")

// The following code is never executed. Its purpose is to support unwinding
// through the call to the exception dispatcher.

        FN_TABLE (KiUserExceptionDispatch, 0, 0)

        DUMMY_ENTRY (KiUserExceptionDispatch)

        stwu    r.sp, -EDFrameLength (r.sp)     // buy stack frame
        mflr    r.0                             // save linkage
        stw     r.0, EDContext + CxLr (r.sp)    //   regs
        mflr    r.0                             // needed by vunwind code
        stw     r.0, EDContext + CxIar (r.sp)
        stw     r.toc, EDToc (r.sp)

        stw     r.13, EDContext + CxGpr13 (r.sp)  // save non-volatile integer state
        stw     r.14, EDContext + CxGpr14 (r.sp)
        stw     r.15, EDContext + CxGpr15 (r.sp)
        stw     r.16, EDContext + CxGpr16 (r.sp)
        stw     r.17, EDContext + CxGpr17 (r.sp)
        stw     r.18, EDContext + CxGpr18 (r.sp)
        stw     r.19, EDContext + CxGpr19 (r.sp)
        stw     r.20, EDContext + CxGpr20 (r.sp)
        stw     r.21, EDContext + CxGpr21 (r.sp)
        stw     r.22, EDContext + CxGpr22 (r.sp)
        stw     r.23, EDContext + CxGpr23 (r.sp)
        stw     r.24, EDContext + CxGpr24 (r.sp)
        stw     r.25, EDContext + CxGpr25 (r.sp)
        stw     r.26, EDContext + CxGpr26 (r.sp)
        stw     r.27, EDContext + CxGpr27 (r.sp)
        stw     r.28, EDContext + CxGpr28 (r.sp)
        stw     r.29, EDContext + CxGpr29 (r.sp)
        stw     r.30, EDContext + CxGpr30 (r.sp)
        stw     r.31, EDContext + CxGpr31 (r.sp)
        stfd    f.14, EDContext + CxFpr14 (r.sp)  // save non-volatile floating point state
        stfd    f.15, EDContext + CxFpr15 (r.sp)
        stfd    f.16, EDContext + CxFpr16 (r.sp)
        stfd    f.17, EDContext + CxFpr17 (r.sp)
        stfd    f.18, EDContext + CxFpr18 (r.sp)
        stfd    f.19, EDContext + CxFpr19 (r.sp)
        stfd    f.20, EDContext + CxFpr20 (r.sp)
        stfd    f.21, EDContext + CxFpr21 (r.sp)
        stfd    f.22, EDContext + CxFpr22 (r.sp)
        stfd    f.23, EDContext + CxFpr23 (r.sp)
        stfd    f.24, EDContext + CxFpr24 (r.sp)
        stfd    f.25, EDContext + CxFpr25 (r.sp)
        stfd    f.26, EDContext + CxFpr26 (r.sp)
        stfd    f.27, EDContext + CxFpr27 (r.sp)
        stfd    f.28, EDContext + CxFpr28 (r.sp)
        stfd    f.29, EDContext + CxFpr29 (r.sp)
        stfd    f.30, EDContext + CxFpr30 (r.sp)
        stfd    f.31, EDContext + CxFpr31 (r.sp)

        PROLOGUE_END (KiUserExceptionDispatch)

// VOID
// KiUserExcep


ifiedDL, "TM");
  }

  // printf_stderr("Painting --- Modified list (dirty %d,%d,%d,%d):\n",
  //              modifiedDirty.x, modifiedDirty.y, modifiedDirty.width,
  //              modifiedDirty.height);
  // nsFrame::PrintDisplayList(&mBuilder, modifiedDL);

  // |modifiedDL| can sometimes be empty here. We still perform the
  // display list merging to prune unused items (for example, items that
  // are not visible anymore) from the old list.
  // TODO: Optimization opportunity. In this case, MergeDisplayLists()
  // unnecessarily creates a hashtable of the old items.
  // TODO: Ideally we could skip this if result is NoChange, but currently when
  // we call RestoreState on nsDisplayWrapList it resets the clip to the base
  // clip, and we need the UpdateBounds call (within MergeDisplayLists) to
  // move it to the correct inner clip.
  Maybe<const ActiveScrolledRoot*> dummy;
  if (MergeDisplayLists(&modifiedDL, &mList, &mList, dummy)) {
    result = PartialUpdateResult::Updated;
  }

  // printf_stderr("Painting --- Merged list:\n");
  // nsFrame::PrintDisplayList(&mBuilder, mList);

  mBuilder.LeavePresShell(mBuilder.RootReferenceFrame(), List());
  return result;
}
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsRangeFrame.h"

#include "mozilla/EventStates.h"
#include "mozilla/PresShell.h"
#include "mozilla/TouchEvents.h"

#include "gfxContext.h"
#include "nsContentCreatorFunctions.h"
#include "nsCSSPseudoElements.h"
#include "nsCSSRendering.h"
#include "nsCheckboxRadioFrame.h"
#include "nsIContent.h"
#include "mozilla/dom/Document.h"
#include "nsNameSpaceManager.h"
#include "nsGkAtoms.h"
#include "mozilla/dom/HTMLInputElement.h"
#include "nsPresContext.h"
#include "nsPresContextInlines.h"
#include "nsNodeInfoManager.h"
#include "mozilla/dom/Element.h"
#include "mozilla/ServoStyleSet.h"
#include "nsStyleConsts.h"

#ifdef ACCESSIBILITY
#  include "nsAccessibilityService.h"
#endif

// Our intrinsic size is 12em in the main-axis and 1.3em in the cross-axis.
#define MAIN_AXIS_EM_SIZE 12
#define CROSS_AXIS_EM_SIZE 1.3f

using namespace mozilla;
using namespace mozilla::dom;
using namespace mozilla::image;

NS_IMPL_ISUPPORTS(nsRangeFrame::DummyTouchListener, nsIDOMEventListener)

nsIFrame* NS_NewRangeFrame(PresShell* aPresShell, ComputedStyle* aStyle) {
  return new (aPresShell) nsRangeFrame(aStyle, aPresShell->GetPresContext());
}

nsRangeFrame::nsRangeFrame(ComputedStyle* aStyle, nsPresContext* aPresContext)
    : nsContainerFrame(aStyle, aPresContext, kClassID) {}

nsRangeFrame::~nsRangeFrame() = default;

NS_IMPL_FRAMEARENA_HELPERS(nsRangeFrame)

NS_QUERYFRAME_HEAD(nsRangeFrame)
  NS_QUERYFRAME_ENTRY(nsRangeFrame)
  NS_QUERYFRAME_ENTRY(nsIAnonymousContentCreator)
NS_QUERYFRAME_TAIL_INHERITING(nsContainerFrame)

void nsRangeFrame::Init(nsIContent* aContent, nsContainerFrame* aParent,
                        nsIFrame* aPrevInFlow) {
  // With APZ enabled, touch events may be handled directly by the APZC code
  // if the APZ knows that there is no content interested in the touch event.
  // The range input element *is* interested in touch events, but doesn't use
  // the usual mechanism (


top
  /// 11-20% of U.S. household incomes.
  /// - "HOUSEHOLD_INCOME_TOP_10_PERCENT" : The audience is in the top 10% of
  /// U.S. household incomes.
  core.String? householdIncome;

  $HouseholdIncomeAssignedTargetingOptionDetails({this.householdIncome});

  $HouseholdIncomeAssignedTargetingOptionDetails.fromJson(core.Map json_)
    : this(householdIncome: json_['householdIncome'] as core.String?);

  core.Map<core.String, core.dynamic> toJson() => {
    if (householdIncome != null) 'householdIncome': householdIncome!,
  };
}

/// Used by:
///
/// - displayvideo:v2 : HouseholdIncomeTargetingOptionDetails
/// - displayvideo:v3 : HouseholdIncomeTargetingOptionDetails
/// - displayvideo:v4 : HouseholdIncomeTargetingOptionDetails
class $HouseholdIncomeTargetingOptionDetails {
  /// The household income of an audience.
  ///
  /// Output only.
  /// Possible string values are:
  /// - "HOUSEHOLD_INCOME_UNSPECIFIED" : Default value when household income is
  /// not specified in this version. This enum is a placeholder for default
  /// value and does not represent a real household income option.
  /// - "HOUSEHOLD_INCOME_UNKNOWN" : The household income of the audience is
  /// unknown.
  /// - "HOUSEHOLD_INCOME_LOWER_50_PERCENT" : The audience is in the lower 50%
  /// of U.S. household incomes.
  /// - "HOUSEHOLD_INCOME_TOP_41_TO_50_PERCENT" : The audience is in the top
  /// 41-50% of U.S. household incomes.
  /// - "HOUSEHOLD_INCOME_TOP_31_TO_40_PERCENT" : The audience is in the top
  /// 31-40% of U.S. household incomes.
  /// - "HOUSEHOLD_INCOME_TOP_21_TO_30_PERCENT" : The audience is in the top
  /// 21-30% of U.S. household incomes.
  /// - "HOUSEHOLD_INCOME_TOP_11_TO_20_PERCENT" : The audience is in the top
  /// 11-20% of U.S. household incomes.
  /// - "HOUSEHOLD_INCOME_TOP_10_PERCENT" : The audience is in the top 10% of
  /// U.S. household incomes.
  core.String? householdIncome;

  $HouseholdIncomeTargetingOptionDetails({this.householdIncome});

  $HouseholdIncomeTargetingOptionDetails.fromJson(core.Map json_)
    : this(householdIncome: json_['householdIncome'] as core.String?);

  core.Map<core.String, core.dynamic> toJson() => {
    if (householdIncome != null) 'householdIncome': householdIncome!,
  };
}

/// Used by:
///
/// - adsense:v2 : HttpBody
/// - aiplatform:v1 : GoogleApiHttpBody
/// - airquality:v1 : HttpBody
/// - apigee:v1 : GoogleApiHttpBody
/// - apigeeregistry:v1 : HttpBody
/// - cloudbuild:v1 : HttpBody
/// - cloudbuild:v2 : HttpBody
/// - cloudtasks:v2 : HttpBody
/// - developerconnect:v1 : HttpBody
/// - healthcare:v1 : HttpBody
/// - managedkafka:v1 : HttpBody
/// - ml:v1 : GoogleApi__HttpBody
/// - pollen:v1 : HttpBody
/// - retail:v2 : GoogleApiHttpBody
/// - solar:v1 : HttpBody
class $HttpBody {
  /// The HTTP Content-Type header value specifying the content type of the
  /// body.
  core.String? contentType;

  /// The HTTP request/response body as raw binary.
  core.String? data;
  core.


data.raw.item["pump"].order = "b[pipe]-c[pump-1]"

data:extend({
  {
    type = "item",
    name = "bob-pump-2",
    icon = "__base__/graphics/icons/pump.png",
    icon_size = 64,
    subgroup = "energy-pipe-distribution",
    order = "b[pipe]-c[pump-2]",
    place_result = "bob-pump-2",
    stack_size = 50,
    drop_sound = {
      filename = "__base__/sound/item/fluid-inventory-move.ogg",
      volume = 0.6,
    },
    inventory_move_sound = {
      filename = "__base__/sound/item/fluid-inventory-move.ogg",
      volume = 0.6,
    },
    pick_sound = {
      filename = "__base__/sound/item/fluid-inventory-pickup.ogg",
      volume = 0.5,
    },
  },
  {
    type = "item",
    name = "bob-pump-3",
    icon = "__base__/graphics/icons/pump.png",
    icon_size = 64,
    subgroup = "energy-pipe-distribution",
    order = "b[pipe]-c[pump-3]",
    place_result = "bob-pump-3",
    stack_size = 50,
    drop_sound = {


nTel,
    /// No logging to console
    None,
}

/// ParseError is a String
pub type ParseError = String;

static INIT: Once = Once::new();

impl FromStr for Output {
    type Err = ParseError;
    fn from_str(day: &str) -> Result<Self, Self::Err> {
        match day {
            "Json" => Ok(Output::Json),
            "JsonTimed" => Ok(Output::JsonTimed),
            "IceTimed" => Ok(Output::IceTimed),
            "Log" => Ok(Output::Log),
            "LogTimed" => Ok(Output::LogTimed),
            "FlameTimed" => Ok(Output::FlameTimed),
            "Compact" => Ok(Output::Compact),
            "OpenTel" => Ok(Output::OpenTel),
            "None" => Ok(Output::None),
            _ => Err("Could not parse log output type".into()),
        }
    }
}

/// Run logging in a unit test
/// RUST_LOG or CUSTOM_FILTER must be set or
/// this is a no-op
pub fn test_run() -> Result<(), errors::TracingError> {
    if std::env::var_os("RUST_LOG").is_none() {
        return Ok(());
    }
    init_fmt(Output::Log)
}

/// Run tracing in a test that uses open telemetry to
/// send span contexts across process and thread boundaries.
pub fn test_run_open() -> Result<(), errors::TracingError> {
    if std::env::var_os("RUST_LOG").is_none() {
        return Ok(());
    }
    init_fmt(Output::OpenTel)
}

/// Same as test_run but with timed spans
pub fn test_run_timed() -> Result<(), errors::TracingError> {
    if std::env::var_os("RUST_LOG").is_none() {
        return Ok(());
    }
    init_fmt(Output::LogTimed)
}

/// Same as test_run_timed but saves as json
pub fn test_run_timed_json() -> Result<(), errors::TracingError> {
    if std::env::var_os("RUST_LOG").is_none() {
        return Ok(());
    }
    init_fmt(Output::JsonTimed)
}

/// Generate a flamegraph from timed spans "busy time".
/// Takes a path where you are piping the output into.
/// If the path is provided a flamegraph will automatically be generated.
/// TODO: Get auto inferno to work
/// for now use (fish, or the bash equiv):
/// `2>| inferno-flamegraph > flamegraph_test_ice_(date +'%d-%m-%y-%X').svg`
/// And run with `cargo test --quiet`
pub fn test_run_timed_flame(path: Option<&str>) -> Result<Option<impl Drop>, errors::TracingError> {
    if std::env::var_os("RUST_LOG").is_none() {
        return Ok(None);
    }
    init_fmt(Output::FlameTimed)?;
    Ok(path.and_then(|p| {
        toml_path().map(|mut t| {
            t.push(p);
            FlameTimed::new(t)
        })
    }))
}

/// Generate a flamegraph from timed spans "idle time".
/// Takes a path where you are piping the output into.
/// If the path is provided a flamegraph will automatically be generated.
/// TODO: Get auto inferno to work
/// for now use (fish, or the bash equiv):
/// `2>| inferno-flamegraph -c blue > flamegraph_test_ice_(date +'%d-%m-%y-%X').svg`
/// And run with `cargo test --quiet`
pub fn test_run_timed_ice(path: Option<&str>) -> Result<Option<impl Drop>, errors::TracingError> {
    if std::env::var_os("RUST_LOG").is_none() {
        return Ok(None);
    }
    init_fmt(Output


.219-6.218c4.234-2.098 7.074-5.211 7.25-5.407l.594-.656-.594-.656C30.48 15.043 24.086 8 16 8c-1.957 0-3.805.43-5.5 1.063zM16 10c2.152 0 4.188.605 6 1.438A6.925 6.925 0 0123 15a6.966 6.966 0 01-1.844 4.719l-2.843-2.844c.417-.512.687-1.16.687-1.875a3 3 0 00-3-3c-.715 0-1.363.27-1.875.688l-2.031-2.032C13.336 10.273 14.637 10 16 10zm-9.313.906c-3.207 1.973-5.289 4.27-5.437 4.438L.656 16l.594.656c.258.29 6.18 6.77 13.813 7.282.308.03.62.062.937.062a9.1 9.1 0 00.938-.063 15.13 15.13 0 002.406-.343l-1.782-1.782A6.897 6.897 0 0116 22c-3.86 0-7-3.14-7-7 0-.531.07-1.05.188-1.563zm.563 2.031A8.922 8.922 0 007 15a8.88 8.88 0 001.344 4.719A25.837 25.837 0 013.406 16a26.112 26.112 0 013.844-3.063zm17.5 0A26.328 26.328 0 0128.594 16c-.899.867-2.676 2.438-4.969 3.75A8.98 8.98 0 0025 15c0-.7-.09-1.39-.25-2.063z"/></svg>';
  static const String eye_slash_solid =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path fill="currentColor" d="M3.719 2.281 2.28 3.72l6.19 6.155 12.969 12.969 6.843 6.875 1.438-1.438-6.344-6.343c4.098-2.086 7.152-5.028 7.344-5.22l.656-.655-.625-.72C30.492 15.044 24.395 8 16 8c-1.992 0-3.848.418-5.531 1.031zM16 10c2.164 0 4.16.555 5.938 1.344C22.613 12.445 23 13.699 23 15c0 1.816-.7 3.469-1.844 4.719l-2.843-2.844A2.992 2.992 0 0019 15c0-1.652-1.348-3-3-3a2.99 2.99 0 00-1.875.688l-2.063-2.063C13.302 10.254 14.61 10 16 10zm-9.375.875c-3.238 1.988-5.23 4.297-5.375 4.469l-.625.719.656.656c.285.285 6.817 6.664 13.781 7.218h.063c.29.024.586.063.875.063.29 0 .586-.04.875-.063h.063a14.044 14.044 0 002.375-.406l-1.72-1.718c-.25.058-.519.097-.78.125l-.125.03c-.47.04-.91.04-1.375 0l-.094-.03A6.982 6.982 0 019 15c0-.535.066-1.05.188-1.563zm.656 1.969A8.846 8.846 0 007 15c0 1.613.438 3.121 1.188 4.438a32.64 32.64 0 01-4.782-3.5 24.524 24


  .take(32)
        .collect();

    let apikey: String = rand::thread_rng()
        .gen_ascii_chars()
        .take(32)
        .collect();

    let mut hasher = Sha3::sha3_256();
    hasher.input_str(&salt);
    hasher.input_str(&password);

    let passhash = hasher.result_str();

    // Prepare insertion statement
	let mut stmt = pool.prepare("
			INSERT INTO users (username, passhash, salt, apikey)
			VALUES(:username, :passhash, :salt, :apikey)
	").unwrap();

	// Insert row
    let insert = stmt.execute( params! {
		"username" => &username,
		"passhash" => &<PASSWORD>,
        "salt" => &salt,
        "apikey" => &apikey
	});

    match insert {
        Err(_) => Err("failed to create new user. Username is most likely taken"),
        Ok(ins) => Ok(User {
                username: username.clone(),
                passhash: <PASSWORD>hash,
                apikey: apikey,
                salt: salt,
                id: ins.last_insert_id()
            })
    }
}

pub fn get_record(pool: &mysql::Pool, name: &String) -> Option<Record> {
    let row = pool.first_exec("
			SELECT name, token, DATE_FORMAT(expiration, '%Y-%m-%d %H:%i:%s'), apikey
			FROM tokens
			WHERE name = :name",
		params!{ "name" => name }
	).unwrap();

    match row {
        None => None,
        Some(row) => Some(Record::from_row(row))
    }
}

pub fn validate_apikey(pool: &mysql::Pool, apikey: &String) -> bool {
    let row = pool.first_exec("
			SELECT apikey
			FROM users
			WHERE apikey = :apikey",
		params!{ "apikey" => apikey }
	).unwrap();

    match row {
        None => false,
        _ => true
    }
}

pub fn create_record(pool: &mysql::Pool, apikey: &String, name: &String, token: &String, ttl: u32) -> Result<Record, &'static str> {
    if name.len() > 63 {
        return Err("record names cannot be longer than 63 characters due to limitations in the dns specification");
    }

    if name.len() < 3 {
        return Err("record names must be at least 3 characters, but preferably longer");
    }

    if token.len() < 32 {
        return Err("the provided token does not appear to be valid");
    }

    if apikey.len() != 32 {
        return Err("the apikey is not valid");
    }

    if !validate_apikey(pool, apikey) {
        return Err("that apikey does not exist");
    }

    if ttl < 60 {
        return Err("ttl must be at least 60 seconds. You risk LetsEncrypt missing the update if less than that.");
    }

    if ttl > 86400 {
        return Err("ttl must be less than 24h (86400 seconds)");
    }

    let re = Regex::new(r"[^a-zA-Z0-9]+").unwrap();
    if re.is_match(name) {
        return Err("record name contains invalid characters. It can only contain [a-zA-Z0-9]");
    }

    // Check to make sure that if the token already exists, that we're the owners of it.
    match get_record(pool, &name) {
        Some(record) => {
            if record.apikey != *apikey {
                return Err("record with that name already exists, and you don't own it");
            }
        },
        _ => ()
    }

    // We use replace here so even if the row already exists, it gets regenerated with a new id,
    // Which


tt>: RSA authentication

<tt>aDSS</tt>: DSS authentication

<tt>aDH</tt>: Diffie-Hellman authentication

<tt>aKRB5</tt>: Kerberos 5

Cipher Encoding Algorithm:

<tt>eNULL</tt>: No encodiing

<tt>AES256</tt>: 256-bit AES encoding

<tt>AES128</tt>: 128-bit AES encoding

<tt>DES</tt>: DES encoding

<tt>3DES</tt>: Triple DES encoding

<tt>RC4</tt>: RC4 encoding

<tt>RC2</tt>: RC2 encoding

<tt>IDEA</tt>: IDEA encoding

MAC Digest Algorithm:

<tt>MD5</tt>: MD5 hash function

<tt>SHA1</tt>: SHA1 hash function

<tt>SHA</tt>: SHA hash function (should not be used)

Aliases:

<tt>ALL</tt>: all ciphers

<tt>SSLv2</tt>: all SSL version 2.0 ciphers (should not be used)

<tt>SSLv3</tt>: all SSL version 3.0 ciphers

<tt>EXP</tt>: all export ciphers (40-bit)

<tt>EXPORT56</tt>: all export ciphers (56-bit)

<tt>LOW</tt>: all low strength ciphers (no export)

<tt>MEDIUM</tt>: all ciphers with 128-bit encryption

<tt>HIGH</tt>: all ciphers using greater than 128-bit encryption

<tt>RSA</tt>: all ciphers using RSA key exchange

<tt>DH</tt>: all ciphers using Diffie-Hellman key exchange

<tt>EDH</tt>: all ciphers using Ephemeral Diffie-Hellman key exchange

<tt>ADH</tt>: all ciphers using Anonymous Diffie-Hellman key exchange

<tt>DSS</tt>: all ciphers using DSS authentication

<tt>KRB5</tt>: all ciphers using Kerberos 5

<tt>AES</tt>: all ciphers using AES

<tt>NULL</tt>: all ciphers using no encryption

Each item in the list may include a prefix modifier:

<tt>"+"</tt>

Move cipher(s) to the current location in the list

<tt>"-"</tt>

Remove cipher(s) from the list (may be added again by
a subsequent list entry)

<tt>"!"</tt>

Kill cipher from the list (it may not be added again
by a subsequent list entry)

If no modifier is specified the entry is added to the list at the current
position.  "+" may also be used to combine tags to specify entries such as
"RSA+RC4" describes all ciphers that use both RSA and RC4.

For example, all available ciphers not including ADH key exchange:

  ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

All algorithms including ADH and export but excluding patented or
trade secreted algorithms:

  HIGH:MEDIUM:LOW:EXPORT56:EXP:ADH:!RC4:!RC2:!IDEA

The OpenSSL command:


_val = VALUE.find(&buf).ok_or(RegexError);
            let key_str = buf.substring(key_val.clone()?.start(), key_val.clone()?.end() - 1);
            let value_str = buf.substring(value_val.clone()?.start() + 1, value_val.clone()?.end());
            snip.insert(key_str, value_str);
        }
    }
    Ok(snip)
}

fn snippit_replace<'a>(root: &'a AstNode<'a>, str_search: &str, string_replace: &str) {
    ast_nodes_iter::iter_nodes(root, &|node| {
        if let NodeValue::Text(ref mut text) = node.data.borrow_mut().value {
            let orig = std::mem::replace(text, vec![]);
            *text = String::from_utf8(orig)
                .unwrap() //deal With later
                .replace(&str_search, string_replace)
                .as_bytes()
                .to_vec();
        }
    })
}

fn snippet_replacer_to_markdown(
    md: &str,
    snippets: HashMap<String, String>,
) -> Result<String, ConvertError> {
    let arena = Arena::new();
    let mut html = vec![];

    let root = parse_document(&arena, md, &ComrakOptions::default());

    for (key, value) in &snippets {
        snippit_replace(
            root,
            &(VARIBLEMARKER.to_string() + &key + VARIBLEMARKER),
            value,
        )
    }
    format_html(root, &ComrakOptions::default(), &mut html)?;

    Ok(String::from_utf8(html)?)
}

pub fn markdown_to_html(filename: &str) -> Result<String, ToHtmlError> {
    let mut buf = String::new();
    let f = File::open(filename)?;
    let mut f = BufReader::new(f);
    while !buf.contains("******") {
        f.read_line(&mut buf)?;
    }
    let snippets = make_snippits(&buf);
    buf.clear();
    f.read_to_string(&mut buf)?;

    match snippets {
        Err(error) => Err(ToHtmlError::Snippet(error)),
        Ok(x) => {
            let html_output = snippet_replacer_to_markdown(&buf, x);
            match html_output {
                Err(error) => Err(ToHtmlError::Convert(error)),
                Ok(y) => Ok(y),
            }
        }
    }
}

fn main() {
    match markdown_to_html("testtemplate.md") {
        Err(error) => println!("Error {}", error),
        Ok(html) => println!("{}", html),
    }
}
<filename>libsplinter/src/error/invalid_argument.rs
// Copyright 2018-2021 Cargill Incorporated
//
// 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
//
//     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.

//! Module containing InvalidArgumentError implementation.

use std::error;
use std::fmt;

/// An error returned when an argument passed to a function does not conform to the expected format.
///
/// This always indicates a programming error on behalf of the caller, since the caller should have
/// verified the argument prior to passing it into the function.
#[derive(Debug)]
pub struct InvalidArgumentError {
    argument: String,
    message: String,
}

impl InvalidArgumentError {
    /// Constructs a new `InvalidArgumentError` with a specified argument and message string.
    ///
    ///


oat f9 = 0 - partialTicks;

        if (f9 > 0.0F)
        {
            float f10 = -MathHelper.sin(f9 * 3.0F) * f9;
            GlStateManager.rotate(f10, 0.0F, 0.0F, 1.0F);
        }

        GlStateManager.rotate(45.0F, 1.0F, 0.0F, 0.0F);
        GlStateManager.scale(0.05625F, 0.05625F, 0.05625F);
        GlStateManager.translate(-4.0F, 0.0F, 0.0F);

        if (this.renderOutlines)
        {
            GlStateManager.enableColorMaterial();
            GlStateManager.enableOutlineMode(this.getTeamColor(entity));
        }

        GlStateManager.glNormal3f(0.05625F, 0.0F, 0.0F);
        bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
        bufferbuilder.pos(-7.0D, -2.0D, -2.0D).tex(0.0D, 0.15625D).endVertex();
        bufferbuilder.pos(-7.0D, -2.0D, 2.0D).tex(0.15625D, 0.15625D).endVertex();
        bufferbuilder.pos(-7.0D, 2.0D, 2.0D).tex(0.15625D, 0.3125D).endVertex();
        bufferbuilder.pos(-7.0D, 2.0D, -2.0D).tex(0.0D, 0.3125D).endVertex();
        tessellator.draw();
        GlStateManager.glNormal3f(-0.05625F, 0.0F, 0.0F);
        bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
        bufferbuilder.pos(-7.0D, 2.0D, -2.0D).tex(0.0D, 0.15625D).endVertex();
        bufferbuilder.pos(-7.0D, 2.0D, 2.0D).tex(0.15625D, 0.15625D).endVertex();
        bufferbuilder.pos(-7.0D, -2.0D, 2.0D).tex(0.15625D, 0.3125D).endVertex();
        bufferbuilder.pos(-7.0D, -2.0D, -2.0D).tex(0.0D, 0.3125D).endVertex();
        tessellator.draw();

        for (int j = 0; j < 4; ++j)
        {
            GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
            GlStateManager.glNormal3f(0.0F, 0.0F, 0.05625F);
            bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
            bufferbuilder.pos(-8.0D, -2.0D, 0.0D).tex(0.0D, 0.0D).endVertex();
            bufferbuilder.pos(8.0D, -2.0D, 0.0D).tex(0.5D, 0.0D).endVertex();
            bufferbuilder.pos(8.0D, 2.0D, 0.0D).tex(0.5D, 0.15625D).endVertex();
            bufferbuilder.pos(-8.0D, 2.0D, 0.0D).tex(0.0D, 0.15625D).endVertex();
            tessellator.draw();
        }

        if (this.renderOutlines)
        {
            GlStateManager.disableOutlineMode();
            GlStateManager.disableColorMaterial();
        }

        GlStateManager.disableRescaleNormal();
        GlStateManager.enableLighting();
        GlStateManager.popMatrix();
        super.doRender(entity, x, y, z, entityYaw, partialTicks);
    }
}
package galaxyspace.core.client.jei.rocketassembler;

import javax.annotation.Nonnull;

import org.lwjgl.opengl.GL11;

import galaxyspace.GalaxySpace;
import galaxyspace.core.GSBlocks;
import galaxyspace.core.client.jei.GSRecipeCategories;
import mezz.jei.api.IGuiHelper;
import mezz.jei.api.gui.ID


/www.wowwiki.com/Procs_per_minute
		/// </summary>
		public uint ProcChance
		{
			get
			{
				return 100;
				// return (m_Spell.ProcChance * m_Item.AttackTime) / 60000
			}
		}

		public Spell ProcSpell
		{
			get { return m_Spell; }
		}

		/// <summary>
		/// ItemHitProcs dont have charges
		/// </summary>
		public int StackCount
		{
			get { return 0; }
			set { throw new NotImplementedException("Items do not have proc charges."); }
		}

		public int MinProcDelay
		{
			get { return 0; }
		}

		public DateTime NextProcTime
		{
			get;
			set;
		}

		public bool CanBeTriggeredBy(Unit triggerer, IUnitAction action, bool active)
		{
			return m_Spell.CanProcBeTriggeredBy(m_Item.Owner, action, active);
		}

		public void TriggerProc(Unit triggerer, IUnitAction action)
		{
			m_Item.Owner.SpellCast.ValidateAndTriggerNew(m_Spell, Owner, triggerer, action);
		}

		public void Dispose()
		{
			m_Item = null;
		}
	}
}