_800E9C60)($t9)
/* 1193A4 80171F34 00491821 */  addu  $v1, $v0, $t1
/* 1193A8 80171F38 57200064 */  bnezl $t9, .L801720CC_ovl5
/* 1193AC 80171F3C 8FBF0014 */   lw    $ra, 0x14($sp)
/* 1193B0 80171F40 8C640000 */  lw    $a0, ($v1)
/* 1193B4 80171F44 10800003 */  beqz  $a0, .L80171F54_ovl5
/* 1193B8 80171F48 248AFFFF */   addiu $t2, $a0, -1
/* 1193BC 80171F4C 1000005E */  b     .L801720C8_ovl5
/* 1193C0 80171F50 AC6A0000 */   sw    $t2, ($v1)
.L80171F54_ovl5:
/* 1193C4 80171F54 3C0B8019 */ lui $t3, %hi(D_8018ECA8_ovl5)
/* 1193C8 80171F58 01655821 */  addu  $t3, $t3, $a1
/* 1193CC 80171F5C 8D6BECA8 */ lw $t3, %lo(D_8018ECA8_ovl5)($t3)
/* 1193D0 80171F60 51600006 */  beql  $t3, $zero, .L80171F7C_ovl5
/* 1193D4 80171F64 00076080 */   sll   $t4, $a3, 2
/* 1193D8 80171F68 0C05C8CB */  jal   func_8017232C_ovl5
/* 1193DC 80171F6C 00E02025 */   move  $a0, $a3
/* 1193E0 80171F70 10000056 */  b     .L801720CC_ovl5
/* 1193E4 80171F74 8FBF0014 */   lw    $ra, 0x14($sp)
/* 1193E8 80171F78 00076080 */  sll   $t4, $a3, 2
.L80171F7C_ovl5:
/* 1193EC 80171F7C 01876021 */  addu  $t4, $t4, $a3
/* 1193F0 80171F80 000C6040 */  sll   $t4, $t4, 1
/* 1193F4 80171F84 3C028005 */ lui $v0, %hi(D_80048F22)
/* 1193F8 80171F88 004C1021 */  addu  $v0, $v0, $t4
/* 1193FC 80171F8C 94428F22 */ lhu $v0, %lo(D_80048F22)($v0)
/* 119400 80171F90 240400BA */  li    $a0, 186
/* 119404 80171F94 304D4000 */  andi  $t5, $v0, 0x4000
/* 119408 80171F98 51A00019 */  beql  $t5, $zero, .L80172000_ovl5
/* 11940C 80171F9C 304D8000 */   andi  $t5, $v0, 0x8000
/* 119410 80171FA0 0C029D9E */  jal   play_sound
/* 119414 80171FA4 AFA6001C */   sw    $a2, 0x1c($sp)
/* 119418 80171FA8 3C038005 */  lui   $v1, %hi(D_8004A7C4) # $v1, 0x8005
/* 11941C 80171FAC 8C63A7C4 */  lw    $v1, %lo(D_8004A7C4)($v1)
/* 119420 80171FB0 3C04800F */  lui   $a0, %hi(D_800E9FE0) # $a0, 0x800f
/* 119424 80171FB4 2


 we are waiting for a timeout in the action processing.
      composeRule.settleForNextRendering()

      // During the animation, both counter values will be present.
      composeRule.onNode(hasClickAction())
        .assertTextEquals("Counter: ", "0", "1")
    }
  }
}
package com.squareup.sample.compose.hellocomposeworkflow

import com.squareup.sample.compose.hellocomposeworkflow.HelloWorkflow.State
import com.squareup.sample.compose.hellocomposeworkflow.HelloWorkflow.State.Goodbye
import com.squareup.sample.compose.hellocomposeworkflow.HelloWorkflow.State.Hello
import com.squareup.workflow1.Snapshot
import com.squareup.workflow1.StatefulWorkflow
import com.squareup.workflow1.action
import com.squareup.workflow1.parse
import com.squareup.workflow1.ui.compose.ComposeScreen

/**
 * The root workflow of this sample. Manges the current toggle state and passes it to
 * [HelloComposeWorkflow].
 */
object HelloWorkflow : StatefulWorkflow<Unit, State, Nothing, ComposeScreen>() {
  enum class State {
    Hello,
    Goodbye;

    fun theOtherState(): State = when (this) {
      Hello -> Goodbye
      Goodbye -> Hello
    }
  }

  private val helloAction = action("hello") {
    state = state.theOtherState()
  }

  override fun initialState(
    props: Unit,
    snapshot: Snapshot?
  ): State = snapshot?.bytes?.parse { source -> if (source.readInt() == 1) Hello else Goodbye }
    ?: Hello

  override fun render(
    renderProps: Unit,
    renderState: State,
    context: RenderContext<Unit, State, Nothing>
  ): ComposeScreen =
    context.renderChild(HelloComposeWorkflow, renderState.name) { helloAction }

  override fun snapshotState(state: State): Snapshot = Snapshot.of(if (state == Hello) 1 else 0)
}
package com.squareup.sample.poetry.model

import com.squareup.sample.poetry.model.Poet.Poe

val TheConquerorWorm = Poem(
  title = "The Conqueror Worm",
  poet = Poe,
  stanzas = listOf(
    listOf(
      "Lo! ’t is a gala night",
      "\tWithin the lonesome latter years!",
      "An angel throng, bewinged, bedight",
      "\tIn veils, and drowned in tears,",
      "Sit in a theatre, to see",
      "\tA play of hopes and fears,",
      "While the orchestra breathes fitfully",
      "\tThe music of the spheres."
    ),
    listOf(
      "Mimes, in the form of God on high,",
      "\tMutter and mumble low,",
      "And hither and thither fly—",
      "\tMere puppets they, who come and go",
      "At bidding of vast formless things",
      "\tThat shift the scenery to and fro,",
      "Flapping from out their Condor wings",
      "\tInvisible Wo!"
    ),
    listOf(
      "That motley drama—oh, be sure",
      "\tIt shall not be forgot!",
      "With its Phantom chased for evermore",
      "\tBy a crowd that seize it not,",
      "Through a circle that ever returneth in",
      "\tTo the self-same spot,",
      "And much of Madness, and more of Sin,",
      "\tAnd Horror the soul of the plot."
    ),
    listOf(
      "But see, amid the mimic rout,",
      "\tA crawling shape intrude!",
      "A blood-red thing that writhes from out",
      "\tThe scenic solitude!",
      "It writhes!—it writhes!—with mortal pangs",
      "\tThe mimes become its food,",
      "And seraphs sob at vermin fangs",
      "\tIn human gore imbued."
    ),
    listOf(
      "Out—out are the lights—out all!",
      "\tAnd, over each quivering form,",
      "The cu


y .ui-divider.ui-divider-vertical .ui-divider-content{padding:.5rem 0}body .ui-fieldset{border:1px solid #dee2e6;background:#fff;color:#495057;padding:1rem;border-radius:4px}body .ui-fieldset .ui-fieldset-legend{border:1px solid #dee2e6;background:#f8f9fa;color:#495057;padding:1rem;font-weight:700;border-radius:4px;user-select:none;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,opacity .2s}body .ui-fieldset .ui-fieldset-legend .ui-fieldset-toggler{display:inline-block;float:none;margin-right:.5rem}body .ui-fieldset .ui-fieldset-legend .ui-icon-minusthick{font-family:"primeicons" !important;font-style:normal;font-weight:normal;display:inline-block;background:none}body .ui-fieldset .ui-fieldset-legend .ui-icon-minusthick:before{content:""}body .ui-fieldset .ui-fieldset-legend .ui-icon-plusthick{font-family:"primeicons" !important;font-style:normal;font-weight:normal;display:inline-block;background:none}body .ui-fieldset .ui-fieldset-legend .ui-icon-plusthick:before{content:""}body .ui-fieldset .ui-fieldset-legend.ui-state-hover{outline:0 none;border-color:#dee2e6;background:#e9ecef;color:#495057}body .ui-fieldset .ui-fieldset-legend.ui-state-hover .ui-icon{color:#495057}body .ui-fieldset .ui-fieldset-legend.ui-state-focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 .2rem rgb(166.2,213,250.2)}body .ui-notificationbar{background:#fff;color:#495057;padding:1rem;border:1px solid #dee2e6}body .ui-panel{padding:0}body .ui-panel .ui-panel-title{margin:0}body .ui-panel .ui-panel-titlebar{border:1px solid #dee2e6;background:#f8f9fa;color:#495057;padding:1rem;font-weight:700;border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:4px;border-top-right-radius:4px}body .ui-panel .ui-panel-titlebar .ui-panel-titlebar-icon{margin:0;width:2rem;height:2rem;background:rgba(0,0,0,0);color:#6c757d;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s,opacity .2s;border-radius:50%;border:0 none;text-align:center;line-height:2rem;padding:0;user-select:none;margin-top:-0.25rem;margin-bottom:-0.5rem}body .ui-panel .ui-panel-titlebar .ui-panel-titlebar-icon:hover{background:#e9ecef;color:#495057;border-color:rgba(0,0,0,0)}body .ui-panel .ui-panel-titlebar .ui-panel-titlebar-icon:focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 .2rem rgb(166.2,213,250.2)}body .ui-panel .ui-panel-titlebar .ui-panel-titlebar-icon .ui-icon-closethick{font-family:"primeicons" !important;font-style:normal;font-weight:normal;display:inline-block;background:none}body .ui-panel .ui-panel-titlebar .ui-panel-titlebar-icon .ui-icon-closethick:before{content:"�


module("Yak-52", package.seeall)

local Module = require("Scripts.DCS-BIOS.lib.modules.Module")

--- @class Yak_52: Module
local Yak_52 = Module:new("Yak-52", 0x2000, { "Yak-52" })
--by WarLord v1.1

--Remove Pilot Arg# 275 / Remove Instructor Arg# 276

--- Fore Pit
----- Fore Main Panel
Yak_52:definePushButton("FRONT_WBRAKES_LOCK", 2, 3028, 4, "Fore Main Panel", "Fore Wheel Brakes Lock")
Yak_52:defineToggleSwitch("FRONT_SMOKE", 6, 3039, 190, "Fore Main Panel", "Fore Smoke Apparat")
Yak_52:defineToggleSwitch("FRONT_STARTER_COVER", 3, 3035, 13, "Fore Main Panel", "Fore Starter Button Cover")
Yak_52:definePushButton("FRONT_STARTER", 3, 3039, 14, "Fore Main Panel", "Fore Starter Button")
Yak_52:defineTumb("FRONT_MAGNET_SEL", 3, 3003, 10, 0.1, { 0, 0.3 }, nil, false, "Fore Main Panel", "Fore Magnet Selector")
Yak_52:definePushButton("FRONT_LAMP_TEST", 4, 3049, 8, "Fore Main Panel", "Fore Lamp Test Button")
Yak_52:definePushButton("FRONT_STALL_TEST", 17, 3001, 41, "Fore Main Panel", "Fore Stall Warning Test Button")
Yak_52:definePushButton("FRONT_ACCEL_BTN", 6, 3001, 45, "Fore Main Panel", "Fore Accelerometer Button")
Yak_52:defineRotary("FRONT_ALT_KNOB", 6, 3004, 114, "Fore Main Panel", "Fore Altimeter Knob")
Yak_52:defineRotary("FRONT_AHORIZON_ZERO", 6, 3012, 143, "Fore Main Panel", "Fore Artificial Horizon Zeroing")
Yak_52:definePushButton("FRONT_AHORIZON_LOCK", 6, 3020, 145, "Fore Main Panel", "Fore Artificial Horizon LOCK Button")
Yak_52:defineToggleSwitch("FRONT_UCE_LOCK", 2, 3002, 33, "Fore Main Panel", "Fore Undercarriage Extension Lock")
Yak_52:defineRotary("FRONT_HSI_KNOB", 22, 3001, 155, "Fore Main Panel", "Fore HSI Knob")
Yak_52:definePushButton("FRONT_VOLTAMP_BTN", 15, 3001, 176, "Fore Main Panel", "Fore Voltamperemeter Button")
Yak_52:definePushButton("FRONT_FUEL_GAUGE_TEST", 16, 3001, 177, "Fore Main Panel", "Fore Fuel Gauge Test Button")
Yak_52:defineToggleSwitch("FRONT_FUEL_GAUGE_DIM", 16, 3002, 178, "Fore Main Panel", "Fore Fuel Gauge Dimmer")
Yak_52:defineTumb("FRONT_PRIMER_PUMP", 3, 3044, 76, 1.0, { -1, 1 }, nil, false, "Fore Main Panel", "Fore Primer Pump Selector OFF/Trunk/Cylinders")
----- Clock
Yak_52:definePushButton("FRONT_CLOCK_PUSH_L", 6, 3023, 119, "Fore Main Panel", "Fore Clock Left Push Button")
Yak_52:defineRotary("FRONT_CLOCK_ROTATE_L", 22, 3024, 120, "Fore Main Panel", "Fore Clock Left Rotate Knob")
Yak_52:definePushButton("FRONT_CLOCK_PUSH_R", 6, 3025, 121, "Fore Main Panel", "Fore Clock Right Push Button")
Yak_52:defineRotary("FRONT_CLOCK_ROTATE_R", 22, 3026, 122, "Fore Main Panel", "Fore Clock Right Rotate


ring(16).toUpperCase()
    });
    return s;
}

function stringToHex(s) {
    var v = "";
    for (var i = 0; i < s.length; i++)
        v += toHexDig(s.charCodeAt(i), 2);
    return v;
}
function hexToString(s) {
    return String.fromCharCode.apply(this, parseHexString(s));
}
function toHexDig(s, len) {
    s = Number(s).toString(16).toUpperCase();
    if (s.length < len)
        s = "00000000000000000000000000".substr(0, len - s.length) + s;
    return s;
}

function ipToHex(v, sep) {
    if (sep === undefined)
        sep = "";
    sep = "";
    var reg = /^[0-9]+.[0-9]+.[0-9]+.[0-9]+$/;
    if (!reg.test(v))
        return "$" + "00" + sep + "00" + sep + "00" + sep + "00";
    var a = v.split(".");
    return "$" + toHexDig(a[0], 2) + sep + toHexDig(a[1], 2) +
            sep + toHexDig(a[2], 2) + sep + toHexDig(a[3], 2);
}
function hexToIp(v) {
    if (!v)
        return "0.0.0.0";
    if (!v.startsWith("$") && v.length === 4)
        v = convertASCIIStringToHexString(v);
    else if (!v.startsWith("$"))
        return v;
    var reg = /\$?([0-9A-Fa-f][0-9A-Fa-f]) ?([0-9A-Fa-f][0-9A-Fa-f]) ?([0-9A-Fa-f][0-9A-Fa-f]) ?([0-9A-Fa-f][0-9A-Fa-f]) ?/;
    if (!reg.test(v))
        return "0.0.0.0";
    var s = "";
    s += parseInt(RegExp.$1, 16) + ".";
    s += parseInt(RegExp.$2, 16) + ".";
    s += parseInt(RegExp.$3, 16) + ".";
    s += parseInt(RegExp.$4, 16);
    return s;
}

function macToHex(v) {
    v = v.toUpperCase();
    var reg = /^[0-9A-Fa-f][0-9A-Fa-f]:[0-9A-Fa-f][0-9A-Fa-f]:[0-9A-Fa-f][0-9A-Fa-f]:[0-9A-Fa-f][0-9A-Fa-f]:[0-9A-Fa-f][0-9A-Fa-f]:[0-9A-Fa-f][0-9A-Fa-f]$/;
    if (!reg.test(v))
        return "$" + "000000000000";
    //var a = v.split(":");
    return "$" + v.replace(/:/g, "");
}
function hexToMac(v) {
    if (!v)
        return "";
    if (!v.startsWith("$") && v.length === 6)
        v = convertASCIIStringToHexString(v);
    if (v.startsWith("$"))
        v = v.substr(1);

    v = v.replace(/ /g, "");
    var reg = /^[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]$/;
    if (!reg.test(v))
        return "00:00:00:00:00:00";
    var s = "";
    for (var i = 0; i < 6; i++) {
        s += v.charAt(i * 2);
        s += v.charAt(i * 2 + 1);
        if (i < 6 - 1)
            s += ":";
    }


/Locator";
import MedKit from "../items/MedKit";
import QuestItem from "../items/QuestItem";
import Weapon from "../items/Weapon";
import Enemy from "../objects/Enemy";
import Equipment from "./Equipment";
import Health from "./Health";
import Inventory from "./Inventory";
import Position from "./Position";

export default class MainCharacter {
  icon: string;
  inventory: Inventory;
  health: Health;
  equipment: Equipment;
  position: Position;

  constructor(position: Position, icon: string) {
    this.icon = icon;
    this.inventory = new Inventory();
    this.health = new Health();
    this.equipment = new Equipment();
    this.position = position;
  }

  setPosition(location: string, coordinates: number[], direction: string): boolean {
    this.position = new Position(location, coordinates, direction);
    return true;
  }

  getPosition(): Position {
    return this.position;
  }

  isDead(): boolean {
    const currentHealth: number = this.health.getCurrentHealth();
    return currentHealth <= 0 ? true : false;
  }

  isNoAmmo(): boolean {
    return this.equipment.getCurrentAmmo() <= 0 ? true : false;
  }

  shot(): boolean {
    this.equipment.releaseAmmo();
    if (this.isNoAmmo()) this.equipment.removeWeapon();
    return true;
  }

  hit(enemy: Enemy): boolean {
    this.health.damageHealth(enemy.damage);
    return true;
  }

  hasItem(itemName: string): boolean {
    return this.inventory.hasItem(itemName);
  }

  isThisItemYouNeed(itemName?: string) {
    if (this.inventory.hasItem(itemName)) return this.inventory.getItem(itemName);
    else return undefined;
  }

  giveItem(itemName: string) {
    this.inventory.removeItem(itemName);
    return this.inventory.getItem(itemName);
  }

  pickItem(item: Junk | Locator | MedKit | QuestItem | Weapon): boolean {
    this.inventory.addItem(item);
    return true;
  }

  getItemToTrader() {
    return this.inventory.getTradableItem();
  }
}export const setListTourSeen = (tourId: string) => {
    let listTourSeen = JSON.parse(localStorage.getItem('tours') || '[]')
    if (!listTourSeen.includes(tourId)) {
      if (listTourSeen.length > 0) listTourSeen = listTourSeen.slice(0, 9)
      listTourSeen.unshift(tourId)
        const newListSeenTour = JSON.stringify(listTourSeen)
        localStorage.setItem('tours', newListSeenTour)
    }
}

export const getListIdTourSeen = () => {
  let listTourSeen = JSON.parse(localStorage.getItem('tours') || '[]')
  return listTourSeen.map((id: string) => parseInt(id))
}

export const setListCarSeen = (carId: string) => {
  let listCarSeen = JSON.parse(localStorage.getItem('cars') || '[]')
  if (!listCarSeen.includes(carId)) {
      if(listCarSeen.length > 10 ) listCarSeen = listCarSeen.slice(0,9)
      listCarSeen.unshift(carId)
      const newListSeenCar = JSON.stringify(listCarSeen)
      localStorage.setItem('cars', newListSeenCar)
  }
}

export const getListIdCarSeen = () => {
  let listCarSeen = JSON.parse(localStorage.getItem('cars') || '[]')
  return listCarSeen.map((id: string) => parseInt(id))
}

export const setListHotelSeen = (hotelId: string) => {


9 29.5032 7.75136C28.0664 5.53014 26.0172 3.77242 23.6031 2.69048C21.189 1.60855 18.5133 1.24869 15.8992 1.65436C13.2851 2.06002 10.8443 3.21387 8.87163 4.97655C6.89899 6.73922 5.47888 9.03532 4.78281 11.5875C4.08673 14.1397 4.14447 16.8389 4.94905 19.359C5.75363 21.8791 7.27063 24.1124 9.31684 25.7891C11.363 27.4658 13.8509 28.5142 16.48 28.8077V34.5077L27.31 25.2477C28.6947 23.9675 29.7996 22.4147 30.5551 20.6869C31.3106 18.959 31.7004 17.0935 31.7 15.2077ZM15.3 7.06885L16.3075 16.9577H20.1309L21.1039 7.06885H15.3ZM20.6927 22.0125C20.6927 23.3774 19.5862 24.4838 18.2213 24.4838C16.8564 24.4838 15.7499 23.3774 15.7499 22.0125C15.7499 20.6475 16.8564 19.5411 18.2213 19.5411C19.5862 19.5411 20.6927 20.6475 20.6927 22.0125Z",
            fill: "currentColor",
          }),
        );
      }
      function q(e) {
        return i.createElement(
          "svg",
          {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 36 36",
            fill: "none",
            ...e,
          },
          i.createElement("path", {
            d: "M2 6.05005V30.05H34V6.05005H2ZM25 10.05C25.5933 10.05 26.1734 10.226 26.6667 10.5556C27.1601 10.8853 27.5446 11.3538 27.7716 11.902C27.9987 12.4502 28.0581 13.0534 27.9424 13.6353C27.8266 14.2173 27.5409 14.7518 27.1213 15.1714C26.7018 15.5909 26.1672 15.8766 25.5853 15.9924C25.0033 16.1082 24.4001 16.0488 23.8519 15.8217C23.3038 15.5946 22.8352 15.2101 22.5056 14.7168C22.1759 14.2234 22 13.6434 22 13.05C22 12.2544 22.3161 11.4913 22.8787 10.9287C23.4413 10.3661 24.2044 10.05 25 10.05ZM23 26.05H6L14.5 15.05L19.4 21.39L22 18.05L28.22 26.05H23Z",
            fill: "currentColor",
          }),
        );
      }
      function U(e) {
        return i.createElement(
          "svg",
          {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 36 36",
            fill: "none",
            ...e,
          },
          i.createElement("path", {
            d: "M2 6.05005V30.05H34V6.05005H2ZM8 27.05H5V23.05H8V27.05ZM8 20.05H5V16.05H8V20.05ZM8 13.05H5V9.05005H8V13.05ZM14 23.82V12.28L24 18.05L14 23.82ZM31 27.05H28V23.05H31V27.05ZM31 20.05H28V16.05H31V20.05ZM31 13.05H28V9.05005H31V13.05Z",
            fill: "currentColor",
          }),
        );
      }
      function x(e) {
        return i.createElement(
          "svg",
          {
            xmlns: "http://www.w3.org/


            }
                }
            }

            if !wnd_drawn_y {
                for x in row_x() {
                    r[row_i(x)] = wall_color;
                }
            }
        }
    }
}
<reponame>eZanmoto/dpnd<gh_stars>1-10
// Copyright 2020 <NAME>. All rights reserved.
// Use of this source code is governed by an MIT
// licence that can be found in the LICENCE file.

use std::error::Error;
use std::fmt::Display;
use std::fmt::Formatter;
use std::fmt::Result as FmtResult;
use std::io::Error as IoError;
use std::path::Path;
use std::process::Command;
use std::process::Output;

extern crate snafu;

use snafu::Snafu;

pub trait DepTool<E>
where
    E: Error + 'static,
{
    // `name` returns an identifying name that should be unique across all
    // dependency tools.
    fn name(&self) -> String;

    fn fetch(
        &self,
        source: String,
        version: Version,
        out_dir: &Path,
    ) -> Result<(), FetchError<E>>;
}

#[derive(Clone, PartialEq)]
pub struct Version(pub String);

impl Display for Version {
    fn fmt(&self, f: &mut Formatter) -> FmtResult {
        write!(f, "{}", self.0)
    }
}

#[derive(Debug, Snafu)]
pub enum FetchError<E>
where
    E: Error + 'static,
{
    RetrieveFailed{source: E},
    VersionChangeFailed{source: E},
}

#[derive(Debug)]
pub struct Git {}

impl DepTool<GitCmdError> for Git {
    fn name(&self) -> String {
        "git".to_string()
    }

    fn fetch(&self, src: String, Version(vsn): Version, out_dir: &Path)
        -> Result<(), FetchError<GitCmdError>>
    {
        let gits_args = vec![
            vec!["clone", &src, "."],
            vec!["checkout", &vsn],
        ];

        for (i, git_args) in gits_args.into_iter().enumerate() {
            let maybe_output =
                Command::new("git")
                    .args(&git_args)
                    .current_dir(out_dir)
                    .output();

            let output = match maybe_output {
                Ok(output) => output,
                Err(err) => {
                    let source = GitCmdError::StartFailed{
                        source: err,
                        args: owned_strs_to_strings(git_args),
                    };
                    if i == 0 {
                        return Err(FetchError::RetrieveFailed{source});
                    }
                    return Err(FetchError::VersionChangeFailed{source});
                }
            };

            if !output.status.success() {
                let source = GitCmdError::NotSuccess{
                    args: owned_strs_to_strings(git_args),
                    output,
                };
                if i == 0 {
                    return Err(FetchError::RetrieveFailed{source});
                }
                return Err(FetchError::VersionChangeFailed{source});
            }
        }

        Ok(())
    }
}

#[derive(Debug, Snafu)]
pub enum GitCmdError {
    StartFailed{source: IoError, args: Vec<String>},
    NotSuccess{args: Vec<String>, output: Output},
}

fn owned_strs_


        ServiceType::Actix => service_actix::run(&opts)?,
        ServiceType::Warp => service_warp::run(&opts)?,
        ServiceType::Tide => service_tide::run(&opts)?,
    }
    Ok(())
}

#[derive(Debug, StructOpt)]
#[structopt()]
pub(crate) struct Options {
    /// Verbosity
    #[structopt(short, long, parse(from_occurrences), default_value = "1")]
    pub verbosity: u8,

    /// Address
    #[structopt(short, long, default_value = "0.0.0.0:14900")]
    pub address: String,

    /// Service type
    #[structopt(
        short = "t",
        long,
        default_value = "hyper",
        raw(
            possible_values = "&ServiceType::variants()",
            case_insensitive = "true"
        )
    )]
    pub service_type: ServiceType,

    /// TLS cert path
    #[structopt(
        short = "c",
        long,
        default_value = "/srv/letsencrypt/live/quixon.com/fullchain.pem"
    )]
    pub tls_cert_path: String,

    /// TLS key path
    #[structopt(
        short = "k",
        long,
        default_value = "/srv/letsencrypt/live/quixon.com/privkey.pem"
    )]
    pub tls_key_path: String,

    /// TLS key, cert in PKCS12 format
    #[structopt(
        short = "x",
        long,
        default_value = "/srv/letsencrypt/live/quixon.com/cert.pfx"
    )]
    pub tls_pkcs12: String,
}

arg_enum! {
    #[derive(Debug, Clone, Copy)]
    pub enum ServiceType {
        Actix,
        Hyper,
        Warp,
        Tide
    }
}
use crate::cpp_data::*;
use crate::cpp_ffi_data::*;
use crate::cpp_ffi_generator::NewFfiFunctionKind;
use crate::cpp_function::*;
use crate::cpp_type::*;
use itertools::Itertools;

#[test]
fn cpp_method_kind() {
    assert!(!CppFunctionKind::Constructor.is_destructor());
    assert!(CppFunctionKind::Constructor.is_constructor());
    assert!(!CppFunctionKind::Constructor.is_regular());

    assert!(CppFunctionKind::Destructor.is_destructor());
    assert!(!CppFunctionKind::Destructor.is_constructor());
    assert!(!CppFunctionKind::Destructor.is_regular());

    assert!(!CppFunctionKind::Regular.is_destructor());
    assert!(!CppFunctionKind::Regular.is_constructor());
    assert!(CppFunctionKind::Regular.is_regular());
}

pub fn empty_membership() -> CppFunctionMemberData {
    CppFunctionMemberData {
        kind: CppFunctionKind::Regular,
        is_virtual: false,
        is_pure_virtual: false,
        is_const: false,
        is_static: false,
        visibility: CppVisibility::Public,
        is_signal: false,
        is_slot: false,
    }
}

pub fn empty_regular_method() -> CppFunction {
    CppFunction {
        path: CppPath::from_good_str("empty"),
        member: None,
        return_type: CppType::Void,
        arguments: vec![],
        allows_variadic_arguments: false,
        operator: None,
        declaration_code: None,
        cast: None,
    }
}

#[test]
fn argument_types_equal1() {
    let method1 = empty_regular_method();
    let method2 = empty_regular_method();
    assert!(method1.argument_types_equal(&method2));
    assert!(method2.argument_types_equal(&method1));
}

#[test]
f


size=16, nvalign=8]

struct C : virtual B0 { char a : 1; char : 0; };

// CHECK: *** Dumping AST Record Layout
// CHECK-NEXT:    0 | struct C
// CHECK-NEXT:    0 |   (C vbtable pointer)
// CHECK-NEXT:    4:0-0 |   char a
// CHECK-NEXT:    5:- |   char
// CHECK-NEXT:    8 |   struct B0 (virtual base)
// CHECK-NEXT:    8 |     int a
// CHECK-NEXT:      | [sizeof=12, align=4
// CHECK-NEXT:      |  nvsize=8, nvalign=4]
// CHECK-X64: *** Dumping AST Record Layout
// CHECK-X64-NEXT:    0 | struct C
// CHECK-X64-NEXT:    0 |   (C vbtable pointer)
// CHECK-X64-NEXT:    8:0-0 |   char a
// CHECK-X64-NEXT:    9:- |   char
// CHECK-X64-NEXT:   16 |   struct B0 (virtual base)
// CHECK-X64-NEXT:   16 |     int a
// CHECK-X64-NEXT:      | [sizeof=24, align=8
// CHECK-X64-NEXT:      |  nvsize=16, nvalign=8]

struct D : virtual B0 { char a : 1; char b; };

// CHECK: *** Dumping AST Record Layout
// CHECK-NEXT:    0 | struct D
// CHECK-NEXT:    0 |   (D vbtable pointer)
// CHECK-NEXT:    4:0-0 |   char a
// CHECK-NEXT:    5 |   char b
// CHECK-NEXT:    8 |   struct B0 (virtual base)
// CHECK-NEXT:    8 |     int a
// CHECK-NEXT:      | [sizeof=12, align=4
// CHECK-NEXT:      |  nvsize=8, nvalign=4]
// CHECK-X64: *** Dumping AST Record Layout
// CHECK-X64-NEXT:    0 | struct D
// CHECK-X64-NEXT:    0 |   (D vbtable pointer)
// CHECK-X64-NEXT:    8:0-0 |   char a
// CHECK-X64-NEXT:    9 |   char b
// CHECK-X64-NEXT:   16 |   struct B0 (virtual base)
// CHECK-X64-NEXT:   16 |     int a
// CHECK-X64-NEXT:      | [sizeof=24, align=8
// CHECK-X64-NEXT:      |  nvsize=16, nvalign=8]

struct E : virtual B0, virtual B1 { long long : 1; };
// CHECK: *** Dumping AST Record Layout
// CHECK: *** Dumping AST Record Layout
// CHECK-NEXT:    0 | struct E
// CHECK-NEXT:    0 |   (E vbtable pointer)
// CHECK-NEXT:    8:0-0 |   long long
// CHECK-NEXT:   16 |   struct B0 (virtual base)
// CHECK-NEXT:   16 |     int a
// CHECK-NEXT:   20 |   struct B1 (virtual base)
// CHECK-NEXT:   20 |     int a
// CHECK-NEXT:      | [sizeof=24, align=8
// CHECK-NEXT:      |  nvsize=16, nvalign=8]
// CHECK-X64: *** Dumping AST Record Layout
// CHECK-X64: *** Dumping AST Record Layout
// CHECK-X64-NEXT:    0 | struct E
// CHECK-X64-NEXT:    0 |   (E vbtable pointer)
// CHECK-X64-NEXT:    8:0-0 |   long long
// CHECK-X64-NEXT:   16 |   struct B0 (virtual base)
// CHECK-X64-NEXT:   16 |     int a
// CHECK-X64-NEXT:   20 |   struct B1 (virtual base)
// CHECK-X64-NEXT:   20 |     int a
// CHECK-X64-NEXT:      | [sizeof=24, align=8
// CHECK-X64-NEXT:      |  nvsize=16, nvalign=8]

int a[
sizeof(A)+
sizeof(B)+
sizeof(C)+
sizeof(D)+
sizeof(E)];
// RU


�

- 安装PaddlePaddle >= 2.2
- 安装其他依赖

```
pip3 install -r requirements.txt
```

## 2.2 功能测试

`test_train_python.sh`包含2种运行模式，每种模式的运行数据不同，分别用于测试训练是否正常，分别是：

- 模式1：lite_train_lite_infer，使用少量数据训练，用于快速验证训练到预测的走通流程，不验证精度和速度；

```
bash test_tipc/test_train_python.sh ./test_tipc/train_infer_python.txt 'lite_train_lite_infer'
```

- 模式2：whole_train_whole_infer，使用全量数据训练，用于快速验证训练到预测的走通流程，验证模型最终训练精度；

```
bash test_tipc/test_train_python.sh ./test_tipc/train_infer_python.txt 'whole_train_whole_infer'
```

如果是运行量化裁剪等训练方式，需要使用不同的配置文件。量化训练的测试指令如下：
```
bash test_tipc/test_train_python.sh ./test_tipc/train_infer_python_PACT.txt 'lite_train_lite_infer'
```

同理，FPGM裁剪的运行方式如下：
```
bash test_tipc/test_train_python.sh ./test_tipc/train_infer_python_FPGM.txt 'lite_train_lite_infer'
```

多机多卡的运行配置文件分别为 `train_infer_python_fleet.txt`, `train_infer_python_FPGM_fleet.txt` 和 `train_infer_python_PACT_fleet.txt`。
运行时，需要修改配置文件中的 `gpu_list:xx.xx.xx.xx,yy.yy.yy.yy;0,1`。 将 `xx.xx.xx.xx` 替换为具体的 `ip` 地址，各个`ip`地址之间用`,`分隔。 另外，和单机训练
不同，启动多机多卡训练需要在多机的每个节点上分别运行命令。以多机多卡量化训练为例，指令如下：
```
bash test_tipc/test_train_python.sh ./test_tipc/train_infer_python_PACT_fleet.txt 'lite_train_lite_infer'
```

运行相应指令后，在`test_tipc/output`文件夹下自动会保存运行日志。如'lite_train_lite_infer'模式运行后，在test_tipc/extra_output文件夹有以下文件：

```
test_tipc/output/
|- results_python.log    # 运行指令状态的日志
```

其中results_python.log中包含了每条指令的运行状态，如果运行成功会输出：

```
Run successfully with command - python3.7 train.py -c mv3_large_x0_5.yml -o  use_gpu=True     epoch=20       AMP.use_amp=True TRAIN.batch_size=1280  use_custom_relu=False model_type=cls MODEL.siamese=False  !
Run successfully with command - python3.7 train.py -c mv3_large_x0_5.yml -o  use_gpu=True     epoch=2       AMP.use_amp=True TRAIN.batch_size=1280  use_custom_relu=False model_type=cls MODEL.siamese=False  !
Run successfully with command - python3.7 train.py -c mv3_large_x0_5.yml -o  use_gpu=True     epoch=2       AMP.use_amp=True TRAIN.batch_size=1280  use_custom_relu=False model_type=cls MODEL.siamese=True  !
Run successfully with comm


);
        if(arreglo.length>0){
            return res.json(arreglo[0]);
        }else{
        res.status(404).json({text:'la asignacion no existe '});}
        }

        // Creo uno    --------------
        public async create(req: Request, res: Response ){
        await pool.query('INSERT INTO asignacion_estudiante set ?', [req.body]);
        res.json({message: 'Guardado'});
        }
        // elimino -----------------
        public delete(req: Request, res: Response ){
            const {id}= req.params;
            pool.query('Delete from asignacion_estudiante where cod_asignacion_estudiante=?',[id]);
            res.json({messaage: 'eliminado'});

        }

        /// Actualizar
        public async update(req: Request, res: Response ){
            const {id}=req.params;
            await pool.query('UPDATE asignacion_estudiante set ? WHERE  cod_asignacion_estudiante=?', [req.body,id]);
            res.json({massage: 'se ha sido actualizado'});
        }

     ////existe asignacion para un usuario
     public async exist(req: Request, res: Response ){
        //const {id}=req.params;
        const {asig}=req.params;
        const {id}=req.params;
        const usuarios = await pool.query("SELECT * FROM proyecto_ionic.asignacion_estudiante where cod_usuario_fk=? and cod_asignacion_auxiliar_fk=?", [id,asig]);
        if(usuarios.length>0){
            return res.json(usuarios[0]);
        }else{
        res.status(404).json({text:'El usuario no encontrado'});}
        }

         //Obtengo lista de cursos asignados de un estudiante
         public async listCursos(req: Request, res: Response ): Promise<any>{
            const {id} =req.params;
            const arreglo = await pool.query("SELECT cod_asignacion_estudiante, cod_asignacion_auxiliar,usuario.cod_usuario, usuario.nombre as estudiante, curso.nombre as curso, seccion.nombre as seccion FROM asignacion_estudiante INNER JOIN asignacion_auxiliar ON cod_asignacion_auxiliar =cod_asignacion_auxiliar_fk inner join usuario on usuario.cod_usuario=asignacion_estudiante.cod_usuario_fk inner Join curso ON curso.cod_curso=asignacion_auxiliar.cod_curso_fk inner join seccion On seccion.cod_seccion = curso.cod_seccion_fk where usuario.cod_usuario=?", [id]);
            if(arreglo.length>0){
                return res.json(arreglo);
            }else{
            res.status(404).json({text:'la asignacion no existe '});}
            }

         //Obtengo lista de cursos asignados de un estudiante------------
         public async listUsuariosCurso(req: Request, res: Response ): Promise<any>{
            const {id} =req.params;
            const arreglo = await pool.query("SELECT cod_asignacion_auxiliar, cod_asignacion_estudiante, cod_usuario, usuario.nombre, usuario.correo, usuario.carne FROM proyecto_ionic.asignacion_estudiante Inner join asignacion_auxiliar on cod_asignacion_auxiliar=asignacion_estudiante.cod_asignacion_auxiliar_fk Inner join usuario on cod_usuario


[10950] = "Ополчение Редпата",
  [10951] = "Хищный труп",
  [10952] = "Хищный скелет",
  [10953] = "Слуга Хоргуса",
  [10954] = "Кровопускатель",
  [10955] = "Призванный элементаль воды",
  [10956] = "Нага-сирена",
  [10976] = "Джезиба",
  [10977] = "Квикксиль",
  [10978] = "Легакки",
  [10979] = "Гончая из Алого ордена",
  [10980] = "Механический йети Уми",
  [10981] = "Северный волк",
  [10982] = "Вредитель из племени Седоусов",
  [10983] = "Тролль из племени Секиры Зимы",
  [10984] = "Берсерк из племени Секиры Зимы",
  [10985] = "Ледяной великан",
  [10986] = "Гарпия из стаи Снежной Слепоты",
  [10987] = "Трогг из племени Железного Рудника",
  [10988] = "Дух кодо",
  [10989] = "Снежный элементаль",
  [10990] = "Альтеракский баран",
  [10991] = "Гнолл из стаи Дикой Лапы",
  [10992] = "Разъяренная пантера",
  [10993] = "Твизвик Пружинаждак",
  [10996] = "Павший герой",
  [10997] = "Мастер-канонир Вилли",
  [11016] = "Пленная Арко\'нарина",
  [11017] = "Роксик",
  [11018] = "Арко\'нарин",
  [11019] = "Джессира Лунная Радуга",
  [11020] = "Останки Трея Светогорна",
  [11021] = "Тигр из Зимних Ключей",
  [11022] = "Алекcий Баров",
  [11023] = "Вэлдон Баров",
  [11024] = "Делла",
  [11025] = "Мукдрак",
  [11026] = "Спрайт Прыгозубчик",
  [11027] = "Иллюзорный призрак",
  [11028] = "Джема Быстросмен",
  [11029] = "Трикси Быстросмен",
  [11030] = "Безмозглая нежить",
  [11031] = "Франклин Ллойд",
  [11032] = "Малор Ревностный",
  [11033] = "Дымок ЛаРу",
  [11034] = "Лорд Максвелл Тиросс",
  [11035] = "Бетина Биггльцинк",
  [11036] = "Леонид Барталомей Чтимый",
  [11037] = "Дженна Лемкенилли",
  [11038] = "Управляющий Ален",
  [11039] = "Герцог Николас Зверенхофф",
  [11040] = "Дозорный Браунелл",


([a, b, core],
                   shown.libraryDependencies.map((dep) => dep.targetLibrary));

  Expect.stringEquals(
      'import dart.core\n'
      'import library_imports_a\n'
      ' show somethingFromA\n'
      ' show somethingFromBoth\n'
      'import library_imports_b\n'
      ' show somethingFromB\n',
      stringifyDependencies(shown));
}

main() {
  test(currentMirrorSystem());
}
// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

library test.delegate_library;

import 'dart:mirrors';

import 'package:expect/expect.dart';

method(a, b, c) => "$a-$b-$c";
methodWithNamed(a, {b:'B', c}) => "$a-$b-$c";
methodWithOpt(a, [b, c='C']) => "$a-$b-$c";
get getter => 'g';
set setter(x) {
  field = x*2;
  return 'unobservable value';
}
var field;

class Proxy {
  var targetMirror;
  Proxy(this.targetMirror);
  noSuchMethod(invocation) => targetMirror.delegate(invocation);
}

main() {
  var proxy = new Proxy(reflectClass(Proxy).owner);
  var result;

  Expect.equals('X-Y-Z', proxy.method('X', 'Y', 'Z'));

  Expect.equals('X-B-null', proxy.methodWithNamed('X'));
  Expect.equals('X-Y-null', proxy.methodWithNamed('X', b: 'Y'));
  Expect.equals('X-Y-Z', proxy.methodWithNamed('X', b: 'Y', c: 'Z'));

  Expect.equals('X-null-C', proxy.methodWithOpt('X'));
  Expect.equals('X-Y-C', proxy.methodWithOpt('X', 'Y'));
  Expect.equals('X-Y-Z', proxy.methodWithOpt('X', 'Y', 'Z'));

  Expect.equals('g', proxy.getter);

  Expect.equals(5, proxy.setter = 5);
  Expect.equals(10, proxy.field);

  Expect.equals(5, proxy.field = 5);
  Expect.equals(5, proxy.field);
}
// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICESNE file.

library mirrors.reader;

import 'dart:mirrors';
import 'mirrors_visitor.dart';

class ReadError {
  final String tag;
  final exception;
  final StackTrace stackTrace;

  ReadError(this.tag, this.exception, this.stackTrace);
}

class MirrorsReader extends MirrorsVisitor {
  /// Produce verbose output.
  final bool verbose;
  /// Include stack trace in the error report.
  final bool includeStackTrace;

  bool fatalError = false;
  Set<Mirror> visited = new Set<Mirror>();
  Set<TypeMirror> declarations = new Set<TypeMirror>();
  Set<TypeMirror> instantiations = new Set<TypeMirror>();
  List<ReadError> errors = <ReadError>[];
  List<Mirror> queue = <Mirror>[];

  MirrorsReader({this.verbose: false, this.includeStackTrace: false});

  void checkMirrorSystem(MirrorSystem mirrorSystem) {
    visitMirrorSystem(mirrorSystem);
    if (!errors.isEmpty) {
      Set<String> errorMessages = new Set<String>();
      for (ReadError error in errors) {
        String text = 'Mirrors read error: ${error.tag}=${error.exception}';
        if (includeStackTrace) {
          text = '$text\n${error.stackTrace}';
        }
        if (errorMessages.add(text)) {
          print(text);
        }
      }
      throw 'Unexpected errors occurred reading mirrors.';
    }
  }

  // Skip mirrors so that each mirror is only visited once.
  bool skipMirror(Mirror mirror) {
    if (fatalError) retu


nput)
{

UINT    status;

    /* This function is executed from thread 3 and thread 4.  As the loop
       below shows, these function compete for ownership of semaphore_0.  */
    while(1)
    {

        /* Increment the thread counter.  */
        if (thread_input == 3)
            thread_3_counter++;
        else
            thread_4_counter++;

        /* Get the semaphore with suspension.  */
        status =  tx_semaphore_get(&semaphore_0, TX_WAIT_FOREVER);

        /* Check status.  */
        if (status != TX_SUCCESS)
            break;

        /* Sleep for 2 ticks to hold the semaphore.  */
        tx_thread_sleep(2);

        /* Release the semaphore.  */
        status =  tx_semaphore_put(&semaphore_0);

        /* Check status.  */
        if (status != TX_SUCCESS)
            break;
    }
}

void    thread_5_entry(ULONG thread_input)
{

UINT    status;
ULONG   actual_flags;

    /* This thread simply waits for an event in a forever loop.  */
    while(1)
    {

        /* Increment the thread counter.  */
        thread_5_counter++;

        /* Wait for event flag 0.  */
        status =  tx_event_flags_get(&event_flags_0, 0x1, TX_OR_CLEAR,
                                                &actual_flags, TX_WAIT_FOREVER);

        /* Check status.  */
        if ((status != TX_SUCCESS) || (actual_flags != 0x1))
            break;
    }
}

void    thread_6_and_7_entry(ULONG thread_input)
{

UINT    status;

    /* This function is executed from thread 6 and thread 7.  As the loop
       below shows, these function compete for ownership of mutex_0.  */
    while(1)
    {

        /* Increment the thread counter.  */
        if (thread_input == 6)
            thread_6_counter++;
        else
            thread_7_counter++;

        /* Get the mutex with suspension.  */
        status =  tx_mutex_get(&mutex_0, TX_WAIT_FOREVER);

        /* Check status.  */
        if (status != TX_SUCCESS)
            break;

        /* Get the mutex again with suspension.  This shows
           that an owning thread may retrieve the mutex it
           owns multiple times.  */
        status =  tx_mutex_get(&mutex_0, TX_WAIT_FOREVER);

        /* Check status.  */
        if (status != TX_SUCCESS)
            break;

        /* Sleep for 2 ticks to hold the mutex.  */
        tx_thread_sleep(2);

        /* Release the mutex.  */
        status =  tx_mutex_put(&mutex_0);

        /* Check status.  */
        if (status != TX_SUCCESS)
            break;

        /* Release the mutex again.  This will actually
           release ownership since it was obtained twice.  */
        status =  tx_mutex_put(&mutex_0);

        /* Check status.  */
        if (status != TX_SUCCESS)
            break;
    }
}


 fun injectAppLifecycle(context: Context, lifecycles: MutableList<Lifecycle>) {
        lifecycles.add(object : Lifecycle {
            override fun onCreate(application: Application?) {
                try {
                    context.startService(Intent(context, InitService::class.java))
                } catch (ignore: Exception) {
                }
            }

            override fun onTerminate(application: Application?) {
            }

        })
    }

    override fun injectActivityLifecycle(
        context: Context,
        lifecycles: MutableList<ActivityLifecycleCallbacks>
    ) {
    }
}
package com.rabtman.acgcomic.mvp.presenter

import com.rabtman.acgcomic.mvp.DmzjComicContract
import com.rabtman.acgcomic.mvp.model.entity.DmzjComicItem
import com.rabtman.business.base.CommonSubscriber
import com.rabtman.common.base.mvp.BasePresenter
import com.rabtman.common.di.scope.FragmentScope
import com.rabtman.common.utils.RxUtil
import javax.inject.Inject

/**
 * @author Rabtman
 */
@FragmentScope
class DmzjComicPresenter
@Inject constructor(model: DmzjComicContract.Model,
                    view: DmzjComicContract.View) : BasePresenter<DmzjComicContract.Model, DmzjComicContract.View>(model, view) {
    /**
     * 当前菜单的选择结果
     * 按位置顺序分别对应：
     *  题材
     *  读者群
     *  进度
     *  地域
     *  排序
     *  当前页面位置
     */
    private var selected = arrayOf(0, 0, 0, 0, 0, 0)

    /**
     * 记录选择的菜单项，并刷新数据
     */
    fun changeMenuSelected(index: Int, selectedPos: Int) {
        selected[index] = selectedPos
        getComicInfos()
    }

    fun getComicInfos() {
        selected[5] = 0
        addSubscribe(
                mModel.getComicInfo(selected.joinToString(separator = "-"))
                        .compose(RxUtil.rxSchedulerHelper<List<DmzjComicItem>>())
                        .subscribeWith(object : CommonSubscriber<List<DmzjComicItem>>(mView) {
                            override fun onStart() {
                                super.onStart()
                                mView.showLoading()
                            }

                            override fun onComplete() {
                                mView.hideLoading()
                            }

                            override fun onError(e: Throwable) {
                                super.onError(e)
                                mView.hideLoading()
                            }

                            override fun onNext(comicItems: List<DmzjComicItem>) {
                                mView.showComicInfo(comicItems)
                            }
                        })
        )
    }

    fun getMoreComicInfos() {
        selected[5] = selected[5]++
        addSubscribe(
                mModel.getComicInfo(selected.joinToString(separator = "-"))
                        .compose(RxUtil.rxSchedulerHelper<List<DmzjComicItem>>())
                        .subscribeWith(object : CommonSubscriber<List<DmzjComicItem>>(mView) {
                            override fun onNext(comicItems: List<DmzjComicItem>) {
                                mView.showMoreComicInfo(comicItems, comicItems.isNotEmpty())
                            }

                            override fun onError(e: Throwable) {
                                super.onError(e)
                                mView.onLoadMoreFail()
                                selected[5] = selected[5]--


ck_index: I32,
    _tick_lower_index: I32,
    _tick_upper_index: I32,
    _liquidity_delta: u128
)
{
    if (_liquidity_delta == 0) {
        return
    };
    let tick_lower_score = tick_score(_tick_lower_index);
    let tick_upper_score = tick_score(_tick_upper_index);

    if (!skip_list::contains(&_tick_manager.ticks, tick_lower_score)) {
        skip_list::insert(&mut _tick_manager.ticks, tick_lower_score, default(_tick_lower_index));
    };
    if (!skip_list::contains(&_tick_manager.ticks, tick_upper_score)) {
        skip_list::insert(&mut _tick_manager.ticks, tick_upper_score, default(_tick_upper_index));
    };

    let lower_tick = skip_list::borrow_mut(&mut _tick_manager.ticks, tick_lower_score);
    update_by_liquidity(
        lower_tick,
        _current_tick_index,
        _liquidity_delta,
        true,
        false
    );
    let upper_tick = skip_list::borrow_mut(&mut _tick_manager.ticks, tick_upper_score);
    update_by_liquidity(
        upper_tick,
        _current_tick_index,
        _liquidity_delta,
        true,
        true
    );
}

## Function `decrease_liquidity`

public(friend) fun decrease_liquidity(_tick_manager: &mut tick::TickManager, _current_tick_index: i32::I32, _tick_lower_index: i32::I32, _tick_upper_index: i32::I32, _liquidity_delta: u128)

Implementation

public(friend) fun</


imize_lora_parameters(model, force_optimize_params=[]):
    # turn off the gradient of all the parameters except the LoRA parameters
    for name, param in model.named_parameters():
        if "lora_right_weight" in name or "lora_left_weight" in name or name in force_optimize_params:
            param.requires_grad = True
        else:
            param.requires_grad = False
    return model

def make_model_gradient_checkpointing_compatible(model):
    # Higgingface added this enable input require grads function to make gradient checkpointing work for lora-only optimization
    if hasattr(model, "enable_input_require_grads"):
        model.enable_input_require_grads()
    elif hasattr(model, "get_input_embeddings"):

        def make_inputs_require_grad(module, input, output):
            output.requires_grad_(True)

        model.get_input_embeddings().register_forward_hook(
            make_inputs_require_grad)
    return model


etValue(this.exceptions, "exact"), message, feedback);
            this.throwBroadlyMatchedException(getValue(this.exceptions, "broad"), message, feedback);
        }
        object error = this.safeValue(response, "error");
        object errorMessage = this.safeString(error, "message");
        if (isTrue(isTrue((!isEqual(error, null))) || isTrue((!isEqual(errorMessage, null)))))
        {
            this.throwExactlyMatchedException(getValue(this.exceptions, "exact"), error, feedback);
            this.throwBroadlyMatchedException(getValue(this.exceptions, "broad"), body, feedback);
            throw new ExchangeError ((string)feedback) ;
        }
        return null;
    }
}


\xE3o","Archive date/time separator":"Separador de data/hora do arquivo","This will be used to separate the archived date/time from the title":"Isso ser\xE1 usado para separar a data/hora arquivada do t\xEDtulo.","Archive date/time format":"Formato de data/hora do arquivo","Kanban Plugin":"Plugin Kanban","Hide tags in card titles":"Ocultar \u2018tags\u2019 nos t\xEDtulos dos cart\xF5es","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"Quando ativada, as \u2018tags\u2019 n\xE3o ser\xE3o exibidas nos t\xEDtulos de cartas. Isso impedir\xE1 que as \u2018tags\u2019 sejam inclu\xEDdas no t\xEDtulo ao criar novas notas.","Hide card display tags":"Ocultar \u2018tags\u2019 de exibi\xE7\xE3o de cart\xE3o","When toggled, tags will not be displayed below the card title.":"Quando ativada, as \u2018tags\u2019 n\xE3o ser\xE3o exibidas abaixo do t\xEDtulo do cart\xE3o.","Linked Page Metadata":"Metadados de p\xE1ginas 'lincadas'","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"Exibe metadados para a primeira nota 'lincada' em um cart\xE3o. Especifique abaixo quais metadados ser\xE3o exibidos. Um r\xF3tulo opcional pode ser fornecido e os r\xF3tulos podem ser ocultados completamente.","Metadata key":"Metadado","Display label":"Descri\xE7\xE3o personalizada","Hide label":"Ocultar","Drag to rearrange":"Arraste para reorganizar",Delete:"Excluir","Add key":"Adicionar metadado","More options":"Mais op\xE7\xF5es",Cancel:"Cancelar",today:"hoje",yesterday:"ontem",tomorrow:"amanh\xE3","Change date":"Alterar data","Change time":"Mudar hora","Card title...":"T\xEDtulo do item...","Add card":"Adicionar Item","Add a card":"Adicione um cart\xE3o","Edit card":"Editar cart\xE3o","New note from card":"Nova nota do cart\xE3o","Archive card":"Arquivar cart\xE3o","Delete card":"Excluir cart\xE3o","Edit date":"Editar data","Add date":"Adicionar data","Remove date":"Remover data","Edit time":"Editar hora","Add time":"Adicionar hora","Remove time":"Remover hora","Duplicate card":"Duplicate card","Enter list title...":"Insira o t\xEDtulo da lista...","Mark cards in this list as complete":"Marcar os itens nesta lista como conclu\xEDdos","Add list":"Adicionar lista","Add a list":"Adicionar uma lista","Move list":"Mover lista",Close:"Fechar","Are you sure you want to de


//このコードはT4 Templateによって自動生成されています。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Windows;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Controls.Primitives;
using System.ComponentModel;
using System.Windows.Interop;
using System.Windows.Data;
using System.Windows.Markup;
using System.Windows.Documents.Serialization;
using System.Windows.Input;
using System.Windows.Media.Animation;
using System.Windows.Media;
using System.Windows.Media.TextFormatting;
using System.Windows.Annotations;
using System.Windows.Ink;
using System.Windows.Automation.Peers;
using System.Windows.Markup.Localizer;
using System.Windows.Media.Imaging;
using System.IO.Packaging;
using System.Security.RightsManagement;
using System.Windows.Threading;
using System.Windows.Media.Effects;
using System.Windows.Shell;
using System.Security.Permissions;
using System.Windows.Annotations.Storage;
using System.Diagnostics;

namespace Livet.Converters
{
	/// <summary>
    /// InheritanceBehavior列挙体とbool値の相互変換を行うIValueConverterです。
    /// </summary>
    public class InheritanceBehaviorAndBooleanConverter : IValueConverter
    {
        //VM→View
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (!(value is bool)) throw new ArgumentException();

            if ((bool)value)
            {
                if (_isConvertWhenTrueSet)
                {
                    return ConvertWhenTrue;
                }
            }
            else
            {
                if (_isConvertWhenFalseSet)
                {
                    return ConvertWhenFalse;
                }
            }

            return DependencyProperty.UnsetValue;
        }

        private bool _isConvertWhenTrueSet;
        private InheritanceBehavior _convertWhenTrue;
		/// <summary>
        /// ソース値がTrueの際にどのInheritanceBehavior列挙体メンバーに変換するかを指定、または取得します。
        /// </summary>
        public InheritanceBehavior ConvertWhenTrue
        {
            get
            {
                return _convertWhenTrue;
            }
            set
            {
                _convertWhenTrue = value;
                _isConvertWhenTrueSet = true;
            }
        }

        private bool _isConvertWhenFalseSet;
        private InheritanceBehavior _convertWhenFalse;
		/// <summary>
        /// ソース値がFalseの際にどのInheritanceBehavior列挙体メンバーに変換するかを指定、または取得します。
        /// </summary>
        public InheritanceBehavior ConvertWhenFalse
        {
            get
            {
                return _convertWhenFalse;
            }
            set
            {
                _convertWhenFalse = value;
                _isConvertWhenFalseSet = true;
            }
        }

        //View→VM
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (!(value is InheritanceBehavior)) throw new ArgumentException();

            var enumValue = (InheritanceBehavior)value;

			switch(enumValue.ToString())
			{
				case "Default":
					if (_isConvertBackWhenDefaultSet)
					{
						return ConvertBackWhenDefault;
					}
					break;
				case "SkipToAppNow":
					if (_isConvertBackWhenSkipToAppNowSet)
					{
						return ConvertBackWhenSkipToAppNow;
					}
					break;
				case "SkipToAppNext":
					if (_isConvertBackWhenS


from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import numpy as np
from .image import transform_preds

def get_pred_depth(depth):
  return depth

def multi_pose_post_process(dets, c, s, h, w):
  # dets: batch x max_dets x 40
  # return list of 39 in image coord
  ret = []
  for i in range(dets.shape[0]):
    bbox = transform_preds(dets[i, :, :4].reshape(-1, 2), c[i], s[i], (w, h))
    pts = transform_preds(dets[i, :, 5:271].reshape(-1, 2), c[i], s[i], (w, h))
    top_preds = np.concatenate(
      [bbox.reshape(-1, 4), dets[i, :, 4:5],
       pts.reshape(-1, 266)], axis=1).astype(np.float32).tolist()
    ret.append({np.ones(1, dtype=np.int32)[0]: top_preds})
  return ret

def landmark_post_process(dets, c, s, h, w):
  ret = []
  for i in range(dets.shape[0]):
    bbox = transform_preds(dets[i, :, :4].reshape(-1, 2), c[i], s[i], (w, h))
    pts = transform_preds(dets[i, :, 5:51].reshape(-1, 2), c[i], s[i], (w, h))
    face_bbox = transform_preds(dets[i, :, 51:55].reshape(-1, 2), c[i], s[i], (w, h))
    face_pts = transform_preds(dets[i, :, 56:192].reshape(-1, 2), c[i], s[i], (w, h))
    lefthand_pts = transform_preds(dets[i, :, 194:236].reshape(-1, 2), c[i], s[i], (w, h))
    righthand_pts = transform_preds(dets[i, :, 237:279].reshape(-1, 2), c[i], s[i], (w, h))
    top_preds = np.concatenate(
      [bbox.reshape(-1, 4), dets[i, :, 4:5],
       pts.reshape(-1, 46), face_bbox.reshape(-1, 4), dets[i, :, 55:56],
       face_pts.reshape(-1, 136), dets[i, :, 193:194], lefthand_pts.reshape(-1, 42),
       dets[i, :, 236:237], righthand_pts.reshape(-1, 42),
       dets[i, :, 193:194], dets[i, :, 236:237],], axis=1).astype(np.float32).tolist()

    ret.append({np.ones(1, dtype=np.int32)[0]: top_preds})
  return ret


eriştirendir\" dedi"
  },
  {
    "surah_number": 20,
    "verse_number": 51,
    "content": "Firavun: \"Öyleyse önceki nesillerin durumu ne oluyor?\" dedi"
  },
  {
    "surah_number": 20,
    "verse_number": 52,
    "content":
        "Musa: \"Onların bilgisi Rabbimin katında yazılıdır. Rabbim şaşırmaz ve unutmaz.\" dedi"
  },
  {
    "surah_number": 20,
    "verse_number": 53,
    "content":
        "Sizin için yeryüzünü döşeyen, yollar açan, gökten su indiren O'dur. Biz o su ile türlü türlü, çift çift bitkiler yetiştirdik"
  },
  {
    "surah_number": 20,
    "verse_number": 54,
    "content":
        "İster yiyin, ister hayvanlarınızı otlatın, onlarda akıl sahipleri için şüphesiz dersler vardır"
  },
  {
    "surah_number": 20,
    "verse_number": 55,
    "content":
        "Sizi yerden yarattık, oraya döndüreceğiz, sizi tekrar oradan çıkaracağız"
  },
  {
    "surah_number": 20,
    "verse_number": 56,
    "content":
        "And olsun ki Firavun'a bütün delillerimizi gösterdik de yalan sayıp kabulden çekindi ve: \"Ey Musa! Sihirbazlığınla bizi yurdumuzdan çıkarmaya mı geldin? Şimdi biz de seninkinin benzeri bir sihri sana göstereceğiz. Bizimle senin aranda bir vakit tayinet ki sen de biz de düz bir yerde bulunalım da caymayalım\" dedi"
  },
  {
    "surah_number": 20,
    "verse_number": 57,
    "content":
        "And olsun ki Firavun'a bütün delillerimizi gösterdik de yalan sayıp kabulden çekindi ve: \"Ey Musa! Sihirbazlığınla bizi yurdumuzdan çıkarmaya mı geldin? Şimdi biz de seninkinin benzeri bir sihri sana göstereceğiz. Bizimle senin aranda bir vakit tayinet ki sen de biz de düz bir yerde bulunalım da caymayalım\" dedi"
  },
  {
    "surah_number": 20,
    "verse_number": 58,
    "content":
        "And olsun ki Firavun'a bütün delillerimizi gösterdik de yalan sayıp kabulden çekindi ve: \"Ey Musa! Sihirbazlığınla bizi yurdumuzdan çıkarmaya mı geldin? Şimdi biz de seninkinin benzeri bir sihri sana göstereceğiz. Bizimle senin aranda bir vakit tayinet ki sen de biz de düz bir yerde bulunalım da caymayalım\" dedi"
  },
  {
    "surah_number": 20,
    "verse_number": 59,
    "content":
        "Musa: \"Buluşma zamanımız sizin bayram gününüzde, insanların toplandığı kuşluk vaktidir\" dedi"
  },
  {
    "surah_number": 20,
    "verse_number": 60,


lambda-python/issues/4401))
* **parser:** Allow primitive data types to be parsed using TypeAdapter ([#4502](https://github.com/aws-powertools/powertools-lambda-python/issues/4502))
* **v3:** merging develop into v3 ([#5160](https://github.com/aws-powertools/powertools-lambda-python/issues/5160))

## Maintenance

* version bump
* **ci:** fix bump poetry version ([#5211](https://github.com/aws-powertools/powertools-lambda-python/issues/5211))
* **ci:** fix working-directory in v3 layer pipeline ([#5199](https://github.com/aws-powertools/powertools-lambda-python/issues/5199))
* **ci:** fix Redis e2e tests in v3 branch ([#4852](https://github.com/aws-powertools/powertools-lambda-python/issues/4852))
* **ci:** fix e2e tests in v3 branch ([#4848](https://github.com/aws-powertools/powertools-lambda-python/issues/4848))
* **ci:** add the aws-encryption-sdk dependency in the Lambda layer ([#4630](https://github.com/aws-powertools/powertools-lambda-python/issues/4630))
* **ci:** bump pydantic library to 2.0+ and boto3 to 1.34.32 ([#4235](https://github.com/aws-powertools/powertools-lambda-python/issues/4235))
* **v3:** merging develop into v3 - 15/05/2024 ([#4335](https://github.com/aws-powertools/powertools-lambda-python/issues/4335))
* **v3:** merging develop into v3 ([#4267](https://github.com/aws-powertools/powertools-lambda-python/issues/4267))

## [v2.43.1] - 2024-08-12
## Bug Fixes

* **event_source:** fix regression when working with zero numbers in DynamoDBStreamEvent ([#4932](https://github.com/aws-powertools/powertools-lambda-python/issues/4932))

## Maintenance

* version bump
* **ci:** new pre-release 2.43.1a0 ([#4920](https://github.com/aws-powertools/powertools-lambda-python/issues/4920))
* **ci:** new pre-release 2.43.1a1 ([#4926](https://github.com/aws-powertools/powertools-lambda-python/issues/4926))
* **ci:** new pre-release 2.42.1a9 ([#4912](https://github.com/aws-powertools/powertools-lambda-python/issues/4912))
* **deps-dev:** bump ruff from 0.5.6 to 0.5.7 ([#4918](https://github.com/aws-powertools/powertools-lambda-python/issues/4918))
* **deps-dev:** bump cdklabs-generative-ai-cdk-constructs from 0.1.234 to 0.1.238 ([#4917](https://github.com/aws-powertools/powertools-lambda-python/issues/4917))
* **deps-dev:** bump mypy-boto3-ssm from 1.34.132 to 1.34.158 in the boto-typing group ([#4921](https://github.com/aws-powertools/powertools-lambda-python/issues/4921))
* **deps-dev:** bump cdklabs-generative-ai-cdk-constructs from 0.1.238 to 0.1.242 ([#4922](https://github.com/aws-powertools/powertools-lambda-python/issues/4922))
* **deps-dev:** bump cfn-lint from 1.9.6 to 1.9.7 ([#4923](https://github.com/aws-powertools/powertools-lambda-python/issues/4923))
* **


 v$ 的影响一定不会对半平面交的答案作出任何贡献。

而我们排除队首的原因是 **当前向量的限制比队首向量要大**，这个条件的前提是队列里有不止两个线段（向量），不然就会出现上面的情况。

所以一定要先排除队尾再排除队首。

???+ note "代码 - 比较部分"
    ```cpp
    friend bool operator<(seg x, seg y) {
      db t1 = atan2((x.b - x.a).y, (x.b - x.a).x);
      db t2 = atan2((y.b - y.a).y, (y.b - y.a).x);  // 求极角
      if (fabs(t1 - t2) > eps)                      // 如果极角不等
        return t1 < t2;
      return (y.a - x.a) * (y.b - x.a) >
             eps;  // 判断向量x在y的哪边，令最靠左的排在最左边
    }
    ```

???+ note "代码 - 增量部分"
    ```cpp
    // pnt its(seg a,seg b)表示求线段a,b的交点
    // s[]是极角排序后的向量
    // q[]是向量队列
    // t[i]是s[i-1]与s[i]的交点
    // 【码风】队列的范围是(l,r]
    // 求的是向量左侧的半平面
    int l = 0, r = 0;
    for (int i = 1; i <= n; ++i)
      if (s[i] != s[i - 1]) {
        // 注意要先检查队尾
        while (r - l > 1 && (s[i].b - t[r]) * (s[i].a - t[r]) >
                                eps)  // 如果上一个交点在向量右侧则弹出队尾
          --r;
        while (r - l > 1 && (s[i].b - t[l + 2]) * (s[i].a - t[l + 2]) >
                                eps)  // 如果第一个交点在向量右侧则弹出队首
          ++l;
        q[++r] = s[i];
        if (r - l > 1) t[r] = its(q[r], q[r - 1]);  // 求新交点
      }
    while (r - l > 1 &&
           (q[l + 1].b - t[r]) * (q[l + 1].a - t[r]) > eps)  // 注意删除多余元素
      --r;
    t[r + 1] = its(q[l + 1], q[r]);  // 再求出新的交点
    ++r;
    // 这里不能在t里面++r需要注意一下……
    ```

## 练习

[POJ 2451 Uyuw's Concert](http://poj.org/problem?id=2451) 注意边界

[POJ 1279 Art Gallery](http://poj.org/problem?id=1279) 求多边形的核

[「CQOI2006」凸多边形](https://www.luogu.com.cn/problem/P4196)
author: Chrogeek, fran


 config } from "src/app/config";

export abstract class AlarmWatcher {

    public abstract onMessage(alarmInfo: object): void;

    private webSocketClient: WebSocket;

    constructor() {
        if (!this.webSocketClient) {
            this.webSocketClient = new WebSocket(config.global_warning_endpoint);
        }
        this.webSocketClient.onopen = (e) => {
            console.log("报警检测器启动.");
        };
        this.webSocketClient.onmessage = (msg: MessageEvent) => {
            if ("Connection Succeeded" == msg.data) {
                console.log("报警检测器跟服务器成功连接。");
                return;
            }
            // console.log("报警检测器接收到数据=", JSON.parse(msg.data));
            this.onMessage(JSON.parse(msg.data));
        };
    }
}
import { Grok } from '../language/grok';
import { Pilgrim } from '../main';
import { HandlerToolingWithSource } from './handler';

/**
 * A context marking that makes a context unique.
 * This value is merged use to ensure that context is merged and provided where needed.
 *
 * If you are discovering this type due to an error, you need to merge context and provide it to next.
 */
export type MiddlewareContextMarking = {
  /**
   * @deprecated this value should not be used in your code!
   */
  readonly PilgrimMiddlewareInheritContextMarking: unique symbol;
};

/**
 * An inherit value for context values.
 *
 * If you are discovering this type due to an error, you need to merge context and provide it to next.
 */
export type MiddlewareContextInherit = MiddlewareContextMarking;

/**
 * A response marking that makes a response unique.
 * This value is used as part of the inherit response making sure its always returned.
 *
 * If you are discovering this type due to an error, you need to return the result from your next function.
 * The proper way to do response mutations in middleware is to test out your expected response.
 * Then return everything else in a default block so other middlewares can continue to operate on other responses.
 */
export type MiddlewareResponseMarking = {
  /**
   * @deprecated this value should not be used in your code!
   */
  readonly PilgrimMiddlewareInheritResponseMarking: unique symbol;
};

/**
 * An inherit value for responses from the middleware next function.
 *
 * If you are discovering this type due to an error, you need to return the result from your next function.
 * The proper way to do response mutations in middleware is to test out your expected response.
 * Then return everything else in a default block so other middlewares can continue to operate on other responses.
 */
export type MiddlewareResponseInherit = (
  & Pilgrim.Response<'middleware:inherit', never>
  & MiddlewareResponseMarking
);

/**
 * A generic pattern for middleware functions.
 *
 * This type is a little complex as certain values are replaced or merged with inherit values.
 * This is to ensure that all context and responses are passed through the chain.
 */
export type MiddlewareFunction<
  Source,
  ContextInbound extends Pilgrim.Context.Constraint,
  ContextOutbound extends Pilgrim.Context.Constraint,
  ResponseInbound,
  ResponseOutbound,
> = (
  (
    tooling: (
      MiddlewareTooling<
        Source,
        Grok.If<
          Grok.Is.Any<ContextInbound>,
          MiddlewareContextInherit,
          MiddlewareContextInherit & ContextInbound
        >,
        MiddlewareNextFunction<
          Grok.If<
            Grok.Is.Any<ContextOutbound>,
            MiddlewareContextInherit,
            MiddlewareContextInhe


.android.com/training/system-ui
        // Set app into fullscreen mode without insets from system bars.
        // Matches api 35 default behavior and is required by test which assumes no other inset
        // except for a cutout.
        val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView)
        windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
        windowInsetsController.hide(WindowInsetsCompat.Type.systemBars())

        // The default behavior on SDK level 34 and below is for display cutouts to be consumed
        // before the insets would reach the engine. In order to receive the display cutouts in the
        // engine, the test app must request that it be allowed to draw its content behind cutouts.
        // See
        // https://developer.android.com/reference/android/view/WindowManager.LayoutParams#layoutInDisplayCutoutMode
        // LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS was added in api 30 so we need to check api level
        // before setting the value. Not setting this value will prevent flutter from drawing in
        // cutout areas which our test is explicitly requires.
        if (Build.VERSION.SDK_INT >= 30) {
            window.attributes.layoutInDisplayCutoutMode =
                WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
        }
    }
}
package com.joker.coolmall.feature.user.navigation

import androidx.compose.animation.ExperimentalSharedTransitionApi
import androidx.compose.animation.SharedTransitionScope
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavType
import androidx.navigation.compose.composable
import androidx.navigation.navArgument
import com.joker.coolmall.feature.user.view.ProfileRoute
import com.joker.coolmall.navigation.routes.UserRoutes

/**
 * 个人中心页面路由常量
 */
object ProfileRoutes {
    const val AVATAR_URL = "avatar_url"

    /**
     * 带参数的路由模式（URL参数可选）
     */
    const val PROFILE_PATTERN = "${UserRoutes.PROFILE}?${AVATAR_URL}={${AVATAR_URL}}"
}

/**
 * 个人中心页面导航
 */
@OptIn(ExperimentalSharedTransitionApi::class)
fun NavGraphBuilder.profileScreen(sharedTransitionScope: SharedTransitionScope) {
    composable(
        route = ProfileRoutes.PROFILE_PATTERN,
        arguments = listOf(navArgument(ProfileRoutes.AVATAR_URL) {
            type = NavType.StringType
            nullable = true
            defaultValue = null
        })
    ) {
        ProfileRoute(sharedTransitionScope, this@composable)
    }
}package com.joker.coolmall.feature.user.data

import com.joker.coolmall.feature.user.model.Region

/**
 * 地区数据
 */
object RegionData {

    /**
     * 获取所有省级地区数据
     */
    fun getProvinces(): List<Region> {
        return listOf(
            Region(
                id = "11",
                name = "北京市",
                children = listOf(
                    Region(
                        id = "1101",
                        name = "北京市",
                        children = listOf(
                            Region(id = "110101", name = "东城区"),
                            Region(id = "110102", name = "西城区"),
                            Region(id = "110105", name = "朝阳区"),
                            Region(id = "110106", name = "丰台区"),
                            Region(id = "110108", name = "海淀区"),
                            Region(id = "110109", name = "门头沟区"),
                            Region(id = "110111", name = "房山区"),
                            Region(id = "110112", name =


eplace tsup based build to fix issues with esm/cjs dual publishing

## 0.9.1

### Patch Changes

- dd362ec1d6: Update docs url to sdk.mystenlabs.com

## 0.9.0

### Minor Changes

- fce0a08d0f: Deprecate the bcs.generic helper. This helper causes typescript performance issues, and the generated generics can't be exported

## 0.8.1

### Patch Changes

- b48289346: Mark packages as being side-effect free.

## 0.8.0

### Minor Changes

- 1bc430161: Add new type-safe schema builder. See https://sdk.mystenlabs.com/bcs for updated documentation
- e4484852b: Add isSerializedBcs helper

## 0.7.4

### Patch Changes

- 290c8e640: Fix parsing of hex strings where leading 0s have been trimmed

## 0.7.3

### Patch Changes

- 36f2edff3: Fix an issue with parsing struct types with nested type parameters

## 0.7.2

### Patch Changes

- ca5c72815d: Fix a bcs decoding bug for u128 and u256 values
- fdb569464e: Fixes an issue with a top level generic in a nested vector

## 0.7.1

### Patch Changes

- b4f0bfc76: Fix type definitions for package exports.

## 0.7.0

### Minor Changes

- 19b567f21: Unified self- and delegated staking flows. Removed fields from `Validator` (`stake_amount`, `pending_stake`, and `pending_withdraw`) and renamed `delegation_staking_pool` to `staking_pool`. Additionally removed the `validator_stake` and `delegated_stake` fields in the `ValidatorSet` type and replaced them with a `total_stake` field.
- 5c3b00cde: Add object id to staking pool and pool id to staked sui.
- 3d9a04648: Adds `deactivation_epoch` to staking pool object, and adds `inactive_pools` to the validator set object.
- a8049d159: Fixes the issue with deep nested generics by introducing array type names

  - all of the methods (except for aliasing) now allow passing in arrays instead
    of strings to allow for easier composition of generics and avoid using template
    strings

  ```js
  // new syntax
  bcs.registerStructType(['VecMap', 'K', 'V'], {
  	keys: ['vector', 'K'],
  	values: ['vector', 'V'],
  });

  // is identical to an old string definition
  bcs.registerStructType('VecMap<K, V>', {
  	keys: 'vector<K>',
  	values: 'vector<V>',
  });
  ```

  Similar approach applies to `bcs.ser()` and `bcs.de()` as well as to other register\* methods

- a0955c479: Switch from 20 to 32-byte address. Match Secp256k1.deriveKeypair with Ed25519.
- 0a7b42a6d: This changes almost all occurences of "delegate", "delegation" (and various capitalizations/forms) to their equivalent "stake"-based name. Function names, function argument names, RPC endpoints, Move functions, and object fields have been updated with this new naming convention.
- 77bdf907f: When parsing u64, u128, and u256 values with bcs, they are now string encoded.

## 0.6.1

### Patch Changes

- 0e202a543: Remove pending delegation switches.

## 0.6.0

```js
// new syntax
bcs.registerStructType(['VecMap', 'K', 'V'], {
	keys: ['vector', 'K'],
	values: ['vector', 'V'],
});

// is identical to an old string definition
bcs.registerStructType('VecMap<K, V>', {
	keys: 'vector<K>',
	values: 'vector<V>


margin-bottom: 20px;
                }}
                .success {{ color: #28a745; }}
                .failed {{ color: #dc3545; }}
                .result-item {{
                    padding: 10px;
                    margin: 5px 0;
                    border-left: 3px solid #ccc;
                }}
                .result-item.success {{ border-left-color: #28a745; }}
                .result-item.failed {{ border-left-color: #dc3545; }}
            </style>

GPT-GOD自动签到汇总报告

本次签到总计: {success_count + failed_count} 个账号

签到成功: {success_count} 个账号

签到失败: {failed_count} 个账号

各账号详细结果:

        """

        # 添加每个账号的结果
        for result in results.get('results', []):
            status_class = 'success' if result.get('success') else 'failed'
            status_icon = '✅' if result.get('success') else '❌'
            email = result.get('email', 'Unknown')
            message = result.get('message', 'No message')
            points_info = ""

            if result.get('current_points', 0) > 0:
                points_info = f"
当前积分: {result['current_points']}
"

            body += f"""

{status_icon} {email}

{message}

                {points_info}

            """

        body += """

                此邮件为系统自动发送，包含所有账号的签到结果汇总。

                如需取消订阅，请联系系统管理员。

        """

        return self.send_email(subject, body, html=True)

    def send_personal_checkin_notification(
        self,
        account_result: Dict[str, Any]
    ) -> bool:
        """
        发送个人签到通知邮件（发送给配置了邮件通知的账号本人）

        Args:
            account_result: 单个账号的签到结果

        Returns:
            bool: 是否发送成功
        """
        email = account_result.get('email', '')
        success = account_result.get('success', False)
        message = account_result.get('message', '')
        current_points = account_result.get('current_points', 0)
        domain = account_result.get('domain', '')

        # 构建主题和内容
        if success:
            subject = "✅ GPT-GOD签到成功通知"
            status_icon = "✅"
            status_text = "签到成功"
            status_color = "#28a745"
        else:
            subject = "❌ GPT-GOD签到失败通知"
            status_icon = "❌"
            status_text = "签到失败"
            status_color = "#dc3545"

        # 构建HTML正文
        body = f"""


;
	bet[x[2]][x[0]] = 1;
	F0R(i,n) if (bet[mov[i].f][mov[i].s]) cur++;
	ans = max(ans,cur);
}

int main() {
	ifstream cin ("hps.in");
	ofstream cout ("hps.out");
	cin >> n;
	F0R(i,n) cin >> mov[i].f >> mov[i].s;
	test({1,3,2});
	test({1,2,3});
	test({2,1,3});
	test({2,3,1});
	test({3,2,1});
	test({3,1,2});
	cout << ans;
}
// #include<iostream>
#include<fstream>
#include<set>
#include<map>
#include<unordered_map>
#include<cmath>
#include<cstring>
#include<string>
#include<bitset>
#include<algorithm>
#include<vector>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
//using namespace __gnu_pbds;

typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pi;
//typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> ordered_set;

#define FOR(i, a, b) for (int i=a; i<b; i++)
#define F0R(i, a) for (int i=0; i<a; i++)
#define FORd(i,a,b) for (int i = (b)-1; i >= a; i--)
#define F0Rd(i,a) for (int i = (a)-1; i >= 0; i--)

#define mp make_pair
#define pb push_back
#define f first
#define s second
#define lb lower_bound
#define ub upper_bound

const int MOD = 1000000007;
double PI = 4*atan(1);

int b1[3][100000], n, ans=0;

int main() {
	ifstream cin ("hps.in");
	ofstream cout ("hps.out");
	cin >> n;
	F0R(i,n) {
		char c; cin >> c;
		if (i) {
			b1[0][i] = b1[0][i-1];
			b1[1][i] = b1[1][i-1];
			b1[2][i] = b1[2][i-1];
		}
		// H=0,P=1,S=2
		if (c == 'H') b1[1][i] ++;
		else if (c == 'P') b1[2][i] ++;
		else b1[0][i] ++;
	}
	F0R(i,n) {
		int z = max(max(b1[0][i],b1[1][i]),b1[2][i]);
		z += max(max(b1[0][n-1]-b1[0][i],b1[1][n-1]-b1[1][i]),b1[2][n-1]-b1[2][i]);
		ans = max(ans,z);
	}
	cout << ans;
}
// #include<iostream>
#include<fstream>
#include<set>
#include<map>
#include<unordered_map>
#include<cmath>
#include<cstring>
#include<string>
#include<bitset>
#include<algorithm>
#include<vector>

using namespace std;
//using namespace __gnu_pbds;

typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pi;
//typedef tree<int,null_type,less<int>,rb_tree_tag,t


.day, this.month, this.year});

  $Date.fromJson(core.Map json_)
    : this(
        day: json_['day'] as core.int?,
        month: json_['month'] as core.int?,
        year: json_['year'] as core.int?,
      );

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

/// Used by:
///
/// - analyticsadmin:v1alpha : GoogleAnalyticsAdminV1alphaAccessOrderByDimensionOrderBy
/// - analyticsadmin:v1beta : GoogleAnalyticsAdminV1betaAccessOrderByDimensionOrderBy
/// - analyticsdata:v1beta : DimensionOrderBy
class $DimensionOrderBy {
  /// A dimension name in the request to order by.
  core.String? dimensionName;

  /// Controls the rule for dimension value ordering.
  /// Possible string values are:
  /// - "ORDER_TYPE_UNSPECIFIED" : Unspecified.
  /// - "ALPHANUMERIC" : Alphanumeric sort by Unicode code point. For example,
  /// "2" \< "A" \< "X" \< "b" \< "z".
  /// - "CASE_INSENSITIVE_ALPHANUMERIC" : Case insensitive alphanumeric sort by
  /// lower case Unicode code point. For example, "2" \< "A" \< "b" \< "X" \<
  /// "z".
  /// - "NUMERIC" : Dimension values are converted to numbers before sorting.
  /// For example in NUMERIC sort, "25" \< "100", and in `ALPHANUMERIC` sort,
  /// "100" \< "25". Non-numeric dimension values all have equal ordering value
  /// below all numeric values.
  core.String? orderType;

  $DimensionOrderBy({this.dimensionName, this.orderType});

  $DimensionOrderBy.fromJson(core.Map json_)
    : this(
        dimensionName: json_['dimensionName'] as core.String?,
        orderType: json_['orderType'] as core.String?,
      );

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

/// Used by:
///
/// - analyticsdata:v1beta : DimensionValue
/// - analyticsdata:v1beta : V1betaAudienceDimensionValue
class $DimensionValue {
  /// Value as a string if the dimension type is a string.
  core.String? value;

  $DimensionValue({this.value});

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

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

/// Used by:
///
/// - adexchangebuyer2:v2beta1 : CancelNegotiationRequest
/// - adexchangebuyer2:v2beta1 : CompleteSetupRequest
/// - adexchangebuyer2:v2beta1 : Empty
/// - adexchangebuyer2:v2beta1 : ResumeProposalRequest
/// - adexchangebuyer2:v2beta1 : StopWatchingCreativeRequest
/// - alertcenter:v1beta1 : Empty
/// - analyticsadmin:v1alpha : GoogleAnalyticsAdminV1alphaAcknowledgeUserDataCollectionResponse
/// - analyticsadmin:v1alpha : GoogleAnalyticsAdminV1alphaApproveDisplayVideo360AdvertiserLinkProposalRequest
/// - analyticsadmin:v1alpha : GoogleAnalyticsAdminV1alphaArchiveAudienceRequest
/// - analyticsadmin:v1alpha : GoogleAnalyticsAdminV1alphaArchiveCustomDimensionRequest
/// - analyticsadmin:v1alpha : GoogleAnalyticsAdminV1alphaArchiveCustomMetricRequest
/// - analyticsadmin:v1alpha : GoogleAnalytics


al_square_error: f32 = actual_x
            .iter()
            .zip(expected_x.iter())
            .map(|(x0, x1)| (x0 - x1).powi(2))
            .sum();
        crate::assert_le!(total_square_error, 1e-6);
    }

    #[test]
    fn cubic_spline_solve_test() {
        let x = [0.2, 0.4, 0.6, 0.8, 1.0f32];
        let y = [0.97986, 0.91777, 0.80803, 0.63860, 0.38437f32];
        let pairs = x.iter().cloned().zip(y.iter().cloned()).collect::<Vec<_>>();

        let actual_m = super::cubic_spline_zero_hess(&pairs);
        let expected_m = vec![-1.5021, -1.1390, -2.8952];
        let total_error_squared: f32 = (0..expected_m.len())
            .map(|i| (expected_m[i] - actual_m[i]).powi(2))
            .sum();
        crate::assert_le!(total_error_squared, 1e-6);
    }

    #[test]
    fn cubic_spline_eval_test() {
        use crate::assert_le;
        use crate::float::Float;
        let x = [0.2, 0.4, 0.6, 0.8, 1.0f32];
        let y = [0.97986, 0.91777, 0.80803, 0.63860, 0.38437f32];
        let pairs = x.iter().cloned().zip(y.iter().cloned()).collect::<Vec<_>>();

        let spline = super::CubicSpline::from_samples(&pairs);
        assert_le!(spline.evaluate(0.3).dist_to(0.9526), 3e-5);
        assert_le!(spline.evaluate(0.5).dist_to(0.8695), 3e-5);
        assert_le!(spline.evaluate(0.7).dist_to(0.7334), 3e-5);
        assert_le!(spline.evaluate(0.9).dist_to(0.5187), 3e-5);
    }

    #[test]
    fn test_find_interval() {
        use crate::{assert_ge, assert_gt, assert_le, assert_lt};
        let array = [16, 21, 32, 43, 55, 62, 73, 82];
        for pivot in (0..10).map(|x| x * 10 + 5) {
            let std::ops::Range { start, end } =
                super::find_interval(array.len(), |x| array[x] < pivot);
            if pivot < array[0] {
                assert_eq!(start, 0);
            } else if pivot > *array.last().unwrap() {
                assert_eq!(end, array.len() - 1);
            } else {
                assert_lt!(array[start], pivot);
                assert_ge!(array[end], pivot);
                assert_eq!(start + 1, end);
            }

            let std::ops::Range { start, end } =
                super::find_interval(array.len(), |x| array[x] <= pivot);
            if pivot < array[0] {
                assert_eq!(start, 0);
            } else if pivot > *array.last().unwrap() {
                assert_eq!(end, array.len() - 1);
            } else {
                assert_le!(array[start], pivot);
                assert_gt!(array[end], pivot);
                assert_eq!(start + 1, end);
            }
        }
    }

    #[test]
    fn catmull_test() {
        use crate::float::Float;
        #[rustfmt::skip]
        let values = [
            -1.0, -0.9992586,


/*
 *  Gwork
 *  Copyright (c) 2010 Facepunch Studios
 *  Copyright (c) 2013-2018 Billy Quith
 *  See license in Gwork.h
 */

#pragma once
#ifndef GWK_INPUTHANDLER_H
#define GWK_INPUTHANDLER_H

#include <Gwork/InputEventListener.h>
#include <queue>

namespace Gwk
{
    namespace Controls
    {
        class Base;
    }

    namespace Input
    {
        namespace Message
        {
            enum
            {
                Copy,
                Paste,
                Cut,
                Undo,
                Redo,
                SelectAll
            };
        }

        // For use in panels
        bool GWK_EXPORT         IsKeyDown(int key);
        bool GWK_EXPORT         IsLeftMouseDown();
        bool GWK_EXPORT         IsRightMouseDown();
        Gwk::Point GWK_EXPORT   GetMousePosition();

        inline bool IsShiftDown()
        {
            return IsKeyDown(Gwk::Key::Shift);
        }

        inline bool IsControlDown()
        {
            return IsKeyDown(Gwk::Key::Control);
        }

        // Does copy, paste etc
        bool GWK_EXPORT DoSpecialKeys(Controls::Base* canvas, Gwk::UnicodeChar chr);
        bool GWK_EXPORT HandleAccelerator(Controls::Base* canvas, Gwk::UnicodeChar chr);

        // Send input to canvas for study
        void GWK_EXPORT OnMouseMoved(Controls::Base* canvas, int x, int y,
                                     int deltaX, int deltaY);
        bool GWK_EXPORT OnMouseClicked(Controls::Base* canvas, int iButton, bool bDown);
        bool GWK_EXPORT OnKeyEvent(Controls::Base* canvas, int iKey, bool bDown);
        void GWK_EXPORT OnCanvasThink(Controls::Base* control);
    }
}

#endif // ifndef GWK_INPUTHANDLER_H


in the specified slot
//-----------------------------------------------------------------------------
CWeaponCSBase *GetWeaponInSlot( int iSlot, int iSlotPos )
{
	C_CSPlayer *player = C_CSPlayer::GetLocalCSPlayer();
	if ( !player )
		return NULL;

	for ( int i = 0; i < MAX_WEAPONS; i++ )
	{
		CWeaponCSBase *pWeapon = dynamic_cast< CWeaponCSBase * >(player->GetWeapon(i));

		if ( pWeapon == NULL )
			continue;

		if ( pWeapon->GetSlot() == iSlot && pWeapon->GetPosition() == iSlotPos )
			return pWeapon;
	}

	return NULL;
}

//--------------------------------------------------------------------------------------------------------------
/**
 *  Returns the client's WEAPON_* value for the currently owned weapon, or WEAPON_NONE if no weapon is owned
 */
CSWeaponID GetClientWeaponID( bool primary )
{
	C_CSPlayer *localPlayer = CCSPlayer::GetLocalCSPlayer();
	if ( !localPlayer )
		return WEAPON_NONE;

	int slot = (primary)?0:1;
	CWeaponCSBase *pWeapon = GetWeaponInSlot( slot, slot );
	if ( !pWeapon )
		return WEAPON_NONE;

	return pWeapon->GetWeaponID();
}

//--------------------------------------------------------------------------------------------------------------
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//

#include "cbase.h"
#include "cstrikebuysubmenu.h"
#include "cstrikebuymenu.h"
#include "cs_shareddefs.h"
#include "backgroundpanel.h"
#include "buy_presets/buy_presets.h"
#include "cstrike/bot/shared_util.h"
#include <vgui/ISurface.h>
#include <vgui/ILocalize.h>
#include "buypreset_weaponsetlabel.h"
#include "career_box.h"
#include "cs_gamerules.h"
#include "vgui_controls/RichText.h"
#include "cs_weapon_parse.h"
#include "c_cs_player.h"
#include "cs_ammodef.h"

using namespace vgui;

//-----------------------------------------------------------------------------
/**
 *  This button resizes any images to fit in the width/height constraints
 */
class BuyPresetButton : public vgui::Button
{
	typedef vgui::Button BaseClass;

public:
	BuyPresetButton(vgui::Panel *parent, const char *buttonName, const char *buttonText );
	virtual ~BuyPresetButton();

	virtual void PerformLayout( void );
	virtual void ClearImages( void );

	virtual void SetFgColor( Color c )
	{
		BaseClass::SetFgColor( c );
	}

	void SetAvailable( bool available )
	{
		m_available = available;
	}

	virtual int AddImage( vgui::IImage *image, int offset )
	{
		if ( image )
		{
			if ( !m_available )
			{
                image->SetColor( Color( 128, 128, 128, 255 ) );
			}
		}
		return BaseClass::AddImage( image, offset );
	}

	virtual void ApplySchemeSettings( vgui::IScheme *pScheme )
	{
		BaseClass::ApplySchemeSettings( pScheme );
		m_availableColor = pScheme->GetColor( "Label.TextColor", Color( 0, 0, 0, 0 ) );
		m_unavailableColor = pScheme->GetColor( "Label.DisabledFgColor2", Color( 0, 0, 0, 0 ) );
	}

	virtual Color GetButtonFgColor( void )
	{
		return ( m_available ) ? m_availableColor : m_unavailableColor;
	}

private:

	bool m_available;
	Color m_availableColor;
	Color m_unavailableColor;
};

//-----------------------------------------------------------------------------


_dll ks_free_fnc;
HMODULE hDLLKeystone;

constexpr float SIXTEENBYNINE = 16.0f / 9.0f;
const uint8_t ALLOCATED_FLOATS = 30;
const uint8_t CONSTANTS_ARRAY_SIZE = 5;
const uint8_t POINTERS_ARRAY_SIZE = 5;
const uint8_t FLOATS_ARRAY_SIZE = 5;

Trampoline* trampoline;
float* floatpointers;
uint64_t constants[CONSTANTS_ARRAY_SIZE]; //marked in ASM with $x
float param_floats[FLOATS_ARRAY_SIZE]; //marked in ASM with %x
uintptr_t pointers[POINTERS_ARRAY_SIZE]; //marked in ASM with ?x

//0.0f is not an acceptable value, if you need it you're probably doing something wrong (use XORPS if you need to reset a xmm register)
uintptr_t FindOrInsertFloat(float value)
{
	for (int i = 0; i < ALLOCATED_FLOATS; i++)
	{
		if (floatpointers[i] == 0.0f)
			floatpointers[i] = value;
		if (floatpointers[i] == value)
			return reinterpret_cast<uintptr_t>(&floatpointers[i]);
	}
	return NULL;
}

float DecreaseFloatPrecision(float input, uint8_t nbits)
{
	if (nbits == 0)
		return input;
	uint32_t mask = 0xFFFFFFFF - (static_cast<uint32_t>(pow(2, nbits) - 1));
	uint32_t temp = *reinterpret_cast<uint32_t*>(&input); //Necessary evil bithack that decreases the float's precision. (Only 60 and 120 fps will be 100% correct, every other value will be lower, resulting in a slight speedup or slowdown depending on context)
	temp = temp & mask;
	return *reinterpret_cast<float*>(&temp);
}

int ParametricASMJump(const char* asmstring, hook::pattern_match match, int32_t matchoffset, int32_t jumpbackoffset, byte_patch* rawpatch = nullptr, int32_t rawpatchsize = 0)
{
	size_t count;
	unsigned char* encode;
	std::byte* space;
	uintptr_t totalpointers[POINTERS_ARRAY_SIZE + FLOATS_ARRAY_SIZE]; //Floats gets resolved to a rip offsetted pointer anyway, so create a full list
	size_t relativeoffset = 0;
	size_t size;

	memcpy(totalpointers, pointers, POINTERS_ARRAY_SIZE * sizeof(uintptr_t));

	std::string replace_constants = asmstring;
	for (int i = 0; i < CONSTANTS_ARRAY_SIZE; i++) {
		std::regex e("\\$" + std::to_string(i));
		uint64_t rep = constants[i];
		replace_constants = std::regex_replace(replace_constants, e, std::to_string(constants[i])); //Replace constants via regex replace, so there is no need to worry about sizes of the constant itself
	}

	std::string replace_floats = replace_constants;
	std::smatch sm;
	for (int i = 0; i < FLOATS_ARRAY_SIZE; i++) {
		std::regex e("%" + std::to_string(i));
		totalpointers[POINTERS_ARRAY_SIZE + i] = FindOrInsertFloat(param_floats[i]); //Find the float addresses
		replace_floats = std::regex_replace(replace_floats, e, "dword ptr [rip + ?" + std::to_string(POINTERS_ARRAY_SIZE + i) + "]"); //Recreate the rip offset syntax, with range outside of what could be used so it doesn't interfere with user defined ones
	}

	std::istringstream stream(replace_floats);


		return r, r1
	}
	return m.mock
}

//Set uses given function f as a mock of Tracer.Extract method
func (m *mTracerMockExtract) Set(f func(p interface{}, p1 interface{}) (r opentracing.SpanContext, r1 error)) *TracerMock {
	m.mock.ExtractFunc = f
	return m.mock
}

//Extract implements github.com/opentracing/opentracing-go.Tracer interface
func (m *TracerMock) Extract(p interface{}, p1 interface{}) (r opentracing.SpanContext, r1 error) {
	atomic.AddUint64(&m.ExtractPreCounter, 1)
	defer atomic.AddUint64(&m.ExtractCounter, 1)

	if m.ExtractMock.mockExpectations != nil {
		testify_assert.Equal(m.t, *m.ExtractMock.mockExpectations, TracerMockExtractParams{p, p1},
			"Tracer.Extract got unexpected parameters")

		if m.ExtractFunc == nil {

			m.t.Fatal("No results are set for the TracerMock.Extract")

			return
		}
	}

	if m.ExtractFunc == nil {
		m.t.Fatal("Unexpected call to TracerMock.Extract")
		return
	}

	return m.ExtractFunc(p, p1)
}

//ExtractMinimockCounter returns a count of TracerMock.ExtractFunc invocations
func (m *TracerMock) ExtractMinimockCounter() uint64 {
	return atomic.LoadUint64(&m.ExtractCounter)
}

//ExtractMinimockPreCounter returns the value of TracerMock.Extract invocations
func (m *TracerMock) ExtractMinimockPreCounter() uint64 {
	return atomic.LoadUint64(&m.ExtractPreCounter)
}

type mTracerMockInject struct {
	mock             *TracerMock
	mockExpectations *TracerMockInjectParams
}

//TracerMockInjectParams represents input parameters of the Tracer.Inject
type TracerMockInjectParams struct {
	p  opentracing.SpanContext
	p1 interface{}
	p2 interface{}
}

//Expect sets up expected params for the Tracer.Inject
func (m *mTracerMockInject) Expect(p opentracing.SpanContext, p1 interface{}, p2 interface{}) *mTracerMockInject {
	m.mockExpectations = &TracerMockInjectParams{p, p1, p2}
	return m
}

//Return sets up a mock for Tracer.Inject to return Return's arguments
func (m *mTracerMockInject) Return(r error) *TracerMock {
	m.mock.InjectFunc = func(p opentracing.SpanContext, p1 interface{}, p2 interface{}) error {
		return r
	}
	return m.mock
}

//Set uses given function f as a mock of Tracer.Inject method
func (m *mTracerMockInject) Set(f func(p opentracing.SpanContext, p1 interface{}, p2 interface{}) (r error)) *TracerMock {
	m.mock.InjectFunc = f
	return m.mock
}

//Inject implements github.com/opentracing/opentracing-go.Tracer interface
func (m *TracerMock) Inject(p opentracing.SpanContext, p1 interface{}, p2 interface{}) (r error) {
	atomic.AddUint64(&m.InjectPreCounter, 1)
	defer atomic.AddUint64(&m.InjectCounter, 1)

	if m.InjectMock.mockExpectations != nil {
		testify_assert.Equal(m.t, *m.InjectMock.mockExpectations, TracerMockInjectParams{p, p1, p2},
			"Tracer.Inject got unexpected parameters")

		if m.InjectFunc == nil {

			m.t.Fatal("No results are set for the TracerMock.Inject")

			return
		}


� - 朱门优 - 20140506.epub' target='_blank'>下载 镜像	2014-05-06

浮游学园的爱丽丝＆雪莉	村崎幸也			下载 镜像	2014-05-06

惊悚文集	合作			下载 镜像	2014-05-06

我的现实与网游被恋爱喜剧侵蚀了不妙我的现实和网游正被浪漫轻喜剧侵蚀	藤谷ある			下载 镜像	2014-05-01

东京下町古书店	小路幸也			下载 <a href='https://ghfast.top/https://raw.githubusercontent.com/ixinzhi/lightno


  }

  .below-md\:hover\:font-semibold:hover {
    font-weight: 600;
  }

  .below-md\:hover\:font-bold:hover {
    font-weight: 700;
  }

  .below-md\:hover\:font-extrabold:hover {
    font-weight: 800;
  }

  .below-md\:hover\:font-black:hover {
    font-weight: 900;
  }

  .below-md\:focus\:font-hairline:focus {
    font-weight: 100;
  }

  .below-md\:focus\:font-thin:focus {
    font-weight: 200;
  }

  .below-md\:focus\:font-light:focus {
    font-weight: 300;
  }

  .below-md\:focus\:font-normal:focus {
    font-weight: 400;
  }

  .below-md\:focus\:font-medium:focus {
    font-weight: 500;
  }

  .below-md\:focus\:font-semibold:focus {
    font-weight: 600;
  }

  .below-md\:focus\:font-bold:focus {
    font-weight: 700;
  }

  .below-md\:focus\:font-extrabold:focus {
    font-weight: 800;
  }

  .below-md\:focus\:font-black:focus {
    font-weight: 900;
  }

  .below-md\:h-0 {
    height: 0;
  }

  .below-md\:h-1 {
    height: 0.25rem;
  }

  .below-md\:h-2 {
    height: 0.5rem;
  }

  .below-md\:h-3 {
    height: 0.75rem;
  }

  .below-md\:h-4 {
    height: 1rem;
  }

  .below-md\:h-5 {
    height: 1.25rem;
  }

  .below-md\:h-6 {
    height: 1.5rem;
  }

  .below-md\:h-8 {
    height: 2rem;
  }

  .below-md\:h-10 {
    height: 2.5rem;
  }

  .below-md\:h-12 {
    height: 3rem;
  }

  .below-md\:h-16 {
    height: 4rem;
  }

  .below-md\:h-20 {
    height: 5rem;
  }

  .below-md\:h-24 {
    height: 6rem;
  }

  .below-md\:h-32 {
    height: 8rem;
  }

  .below-md\:h-40 {
    height: 10rem;
  }

  .below-md\:h-48 {
    height: 12rem;
  }

  .below-md\:h-56 {
    height: 14rem;
  }

  .below-md\:h-64 {
    height: 16rem;
  }

  .below-md\:h-auto {
    height: auto;
  }

  .below-md\:h-px {
    height: 1px;
  }

  .below-md\:h-full {
    height: 100%;
  }

  .below-md\:h-screen {
    height: 100vh;
  }

  .below-md\:leading-none {
    line-height: 1;
  }

  .below-md\:leading-tight {
    line-height: 1.25;
  }

  .below-md\:leading-snug {
    line-height: 1.375;
  }

  .below-md\:leading-normal {
    line-height: 1.5;
  }

  .


glabel EnNb_Draw
/* 034F0 80AB4280 27BDFFE8 */  addiu   $sp, $sp, 0xFFE8           ## $sp = FFFFFFE8
/* 034F4 80AB4284 AFBF0014 */  sw      $ra, 0x0014($sp)
/* 034F8 80AB4288 8C82027C */  lw      $v0, 0x027C($a0)           ## 0000027C
/* 034FC 80AB428C 04400008 */  bltz    $v0, .L80AB42B0
/* 03500 80AB4290 28410005 */  slti    $at, $v0, 0x0005
/* 03504 80AB4294 10200006 */  beq     $at, $zero, .L80AB42B0
/* 03508 80AB4298 00027080 */  sll     $t6, $v0,  2
/* 0350C 80AB429C 3C0380AB */  lui     $v1, %hi(D_80AB4F54)       ## $v1 = 80AB0000
/* 03510 80AB42A0 006E1821 */  addu    $v1, $v1, $t6
/* 03514 80AB42A4 8C634F54 */  lw      $v1, %lo(D_80AB4F54)($v1)
/* 03518 80AB42A8 14600006 */  bne     $v1, $zero, .L80AB42C4
/* 0351C 80AB42


uded_upper_bound])

    def and_predicates(self, predicates: List[Predicate]) -> Predicate:
        """Create an AND predicate from multiple predicates."""
        return Predicate(
            method='and',
            index=None,
            field=None,
            literals=predicates
        )

    def or_predicates(self, predicates: List[Predicate]) -> Predicate:
        """Create an OR predicate from multiple predicates."""
        return Predicate(
            method='or',
            index=None,
            field=None,
            literals=predicates
        )


4.0//",
	"-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//",
	"-//spyglass//dtd html 2.0 extended//",
	"-//sq//dtd html 2.0 hotmetal + extensions//",
	"-//sun microsystems corp.//dtd hotjava html//",
	"-//sun microsystems corp.//dtd hotjava strict html//",
	"-//w3c//dtd html 3 1995-03-24//",
	"-//w3c//dtd html 3.2 draft//",
	"-//w3c//dtd html 3.2 final//",
	"-//w3c//dtd html 3.2//",
	"-//w3c//dtd html 3.2s draft//",
	"-//w3c//dtd html 4.0 frameset//",
	"-//w3c//dtd html 4.0 transitional//",
	"-//w3c//dtd html experimental 19960712//",
	"-//w3c//dtd html experimental 970421//",
	"-//w3c//dtd w3 html//",
	"-//w3o//dtd w3 html 3.0//",
	"-//webtechs//dtd mozilla html 2.0//",
	"-//webtechs//dtd mozilla html//",
}
// Copyright 2010 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package html

import (
	"bytes"
	"strings"
	"unicode/utf8"
)

// These replacements permit compatibility with old numeric entities that
// assumed Windows-1252 encoding.
// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#consume-a-character-reference
var replacementTable = [...]rune{
	'\u20AC', // First entry is what 0x80 should be replaced with.
	'\u0081',
	'\u201A',
	'\u0192',
	'\u201E',
	'\u2026',
	'\u2020',
	'\u2021',
	'\u02C6',
	'\u2030',
	'\u0160',
	'\u2039',
	'\u0152',
	'\u008D',
	'\u017D',
	'\u008F',
	'\u0090',
	'\u2018',
	'\u2019',
	'\u201C',
	'\u201D',
	'\u2022',
	'\u2013',
	'\u2014',
	'\u02DC',
	'\u2122',
	'\u0161',
	'\u203A',
	'\u0153',
	'\u009D',
	'\u017E',
	'\u0178', // Last entry is 0x9F.
	// 0x00->'\uFFFD' is handled programmatically.
	// 0x0D->'\u000D' is a no-op.
}

// unescapeEntity reads an entity like "<" from b[src:] and writes the
// corresponding "<" to b[dst:], returning the incremented dst and src cursors.
// Precondition: b[src] == '&' && dst <= src.
// attribute should be true if parsing an attribute value.
func unescapeEntity(b []byte, dst, src int, attribute bool) (dst1, src1 int) {
	// http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html#consume-a-character-reference

	// i starts at 1 because we already know that s[0] == '&'.
	i, s := 1, b[src:]

	if len(s) <= 1 {
		b[dst] = b[src]
		return dst + 1, src + 1
	}

	if s[i] == '#' {
		if len(s) <= 3 { // We need to have at least "&#.".
			b[dst] = b[src]
			return dst + 1, src + 1
		}
		i++
		c := s[i]
		hex := false
		if c == 'x' || c == 'X' {
			hex = true
			i++
		}

		x := '\x00'
		for i < len(s) {
			c = s[i]
			i++