using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Mix.Database.EntityConfigurations.SQLSERVER.Quartz;
using Mix.Database.Services.MixGlobalSettings;

namespace Mix.Database.Entities.Quartz
{
    public partial class SQLServerQuartzDbContext : QuartzDbContext
    {
        public SQLServerQuartzDbContext(IHttpContextAccessor httpContextAccessor, IConfiguration configuration, DatabaseService databaseService)
            : base(httpContextAccessor, configuration)
        {
            DbProvider = MixDatabaseProvider.SQLSERVER;
            ConnectionString = databaseService.GetConnectionString(MixConstants.CONST_QUARTZ_CONNECTION);
        }
        public SQLServerQuartzDbContext(string connectionString)
                    : base(MixDat


69 1.118 1.118 0 011.797-1.334c.108.133.187.29.225.463a4.993 4.993 0 012.83-.87 4.993 4.993 0 012.83.87 1.098 1.098 0 01.458-.675 1.118 1.118 0 011.344 1.79 1.098 1.098 0 01-.462.225 4.2 4.2 0 01.3.517c.206.422.342.878.418 1.358a6.024 6.024 0 01.072.955v1.274a2.744 2.744 0 00-.723-.096h-1.105A1.17 1.17 0 009 17.226v1.1c0 .3.056.601.145.868.257-.167.469-.4.58-.7a1.247 1.247 0 012.333.878 3.915 3.915 0 01-.319.647 4.097 4.097 0 01-1.012 1.022c-.611.436-1.299.693-1.894.693h-2.09l.22.659c.803 2.405 3.05 3.627 5.597 3.627h3.94V26a.5.5 0 00.5-.5V23a5.5 5.5 0 015.5-5.5h.5a.5.5 0 00.5-.5v-1.25a.75.75 0 011.5 0V17a.5.5 0 001 0v-1.25c0-.461-.178-.88-.47-1.193v-.397a9.286 9.286 0 00-.156-1.688 8.387 8.387 0 00-.666-2.047c-.608-1.279-1.526-2.372-2.66-3.256a10.66 10.66 0 00-1.328-.887l-.044-.025-.046-.025-.04-.022-.24-.13Zm4.05 7.926a1.75 1.75 0 00-1.9 1.744v.75a6.489 6.489 0 00-5.124 2.5h-1.804a5.887 5.887 0 01.678-1.744 5.926 5.926 0 015.12-2.936h.79V13.2a1.118 1.118 0 011.12-1.12 1.118 1.118 0 011.12 1.12v.806ZM16.732 20A6.472 6.472 0 0016 23v2.02h-3.44c-1.962 0-3.573-.808-4.365-2.286h.638c.86 0 1.746-.36 2.475-.88a5.25 5.25 0 00.903-.814h.617A1.17 1.17 0 0013.993 20h2.74ZM14 18.771c0-.9-.437-1.695-1.111-2.189l.071-.002a1.356 1.356 0 011.36 1.36l-.001.06a1.354 1.354 0 01-.13.525l-.008.015c-.049.1-.11.192-.181.277v-.046Z"/></g><defs><clipPath id="svgIDa"><path fill="#fff" d="M0 0h32v32H0z"/></clipPath></defs></g></svg>';
  static const String outbox_tray =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><g fill="currentColor"><path d="M18.755 7.122v7.1c0 .26-.21.47-.46.47h-4.58a.47.47 0 01-.47-.47v-7.1a.28.28 0 00-.28-.28h-.98c-.62 0-.95-.74-.53-1.2l4.02-4.41a.72.72 0 011.06 0l4.01 4.41c.42.46.09 1.


  | "value"
  | "defaultValue"
  | "name"
  | "autoComplete"
  | "checked"
  | "placeholder"
  | CommonAttrKeys;

type ButtonAttrKeys = "disabled" | CommonAttrKeys;

type Attrs<Keys extends string> = Partial<Record<Keys, string>>;

//
// Elements
//

export interface PictureElement {
  type: "img";
  src: string;
  styles?: CSSProperties;
  attrs?: Attrs<PictureAttrKeys>;
}

/*
export interface SvgElement {
  type: "icon";
  src: string;
  styles?: CommonStyles;
  attrs?: Attrs<CommonAttrKeys>;
}
*/

export type ImageElement = PictureElement;

interface LinkTextElement {
  type: "text";
  tag: "a";
  value: string;
  styles?: CSSProperties;
  attrs?: Attrs<LinkAttrKeys>;
}

interface ButtonTextElement {
  type: "text";
  tag: "button";
  value: string;
  styles?: CSSProperties;
  attrs?: Attrs<ButtonAttrKeys>;
}

interface GenericTextElement {
  type: "text";
  /**
   * Default: "div"
   */
  tag?: Exclude<ContainerTags, "a" | "button">;
  value: string;
  styles?: CSSProperties;
  attrs?: Attrs<CommonAttrKeys>;
}

export type TextElement =
  | string
  | LinkTextElement
  | ButtonTextElement
  | GenericTextElement;

interface LinkContainerElement {
  type: "box" | "vbox" | "hbox";
  tag: "a";
  children?: PlasmicElement | PlasmicElement[];
  styles?: CSSProperties;
  attrs?: Attrs<LinkAttrKeys>;
}

interface ButtonContainerElement {
  type: "box" | "vbox" | "hbox";
  tag: "button";
  children?: PlasmicElement | PlasmicElement[];
  styles?: CSSProperties;
  attrs?: Attrs<ButtonAttrKeys>;
}

interface GenericContainerElement {
  type: "box" | "vbox" | "hbox";
  /**
   * Default: "div"
   */
  tag?: Exclude<ContainerTags, "a" | "button">;
  children?: PlasmicElement | PlasmicElement[];
  styles?: CSSProperties;
  attrs?: Attrs<CommonAttrKeys>;
}

export type ContainerElement =
  | LinkContainerElement
  | ButtonContainerElement
  | GenericContainerElement;

// Equivalent to ButtonTextElement
export interface ButtonElement {
  type: "button";
  value: string;
  styles?: CSSProperties;
  attrs?: Attrs<ButtonAttrKeys>;
}

interface InputElement {
  type: "input" | "password";
  styles?: CSSProperties;
  attrs?: Attrs<InputAttrKeys>;
}

interface TextAreaElement {
  type: "textarea";
  styles?: CSSProperties;
  attrs?: Attrs<TextAreaAttrKeys>;
}

export type TextInputElement = InputElement | TextAreaElement;

interface JsonElement {
  type: "json";
  value: any;
}

export interface CodeComponentElement<P> {
  type: "component";
  /**
   * The registered component name
   */
  name: string;
  styles?: CSSProperties;
  props?: {
    // For auto-completion
    [prop in keyof Partial<P>]:
      | number
      | string
      | boolean
      | null
      | undefined
      | JsonElement
      | PlasmicElement
      | PlasmicElement[];
  } & {
    [prop: string]:
      | number
      | string
      | boolean
      | null
      | undefined
      | JsonElement
      | PlasmicElement
      | PlasmicElement[];
  };
}

export type PlasmicElement =
  | ImageElement
  | TextElement
  | ContainerElement
  | ButtonElement
  | TextInputElement
  | CodeComponentElement<{}>;
/// <reference path="typings/lz-string/lz-string.d.ts"/>

namespace SourceUtils {
    export class Utils {
        static decompressFloat32Arra


lf._IncludeSubDomains = params.get("IncludeSubDomains")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))

class HttpHeaderPathRule(AbstractModel):
    """Http 头部设置规则，最多可设置 100 条

    """

    def __init__(self):
        r"""
        :param _HeaderMode: http 头部设置方式
set：设置。变更指定头部参数的取值为设置后的值；若设置的头部不存在，则会增加该头部；若存在多个重复的头部参数，则会全部变更，同时合并为一个头部。
del：删除。删除指定的头部参数
add：增加。增加指定的头部参数，默认允许重复添加，即重复添加相同的头部（注：重复添加可能会影响浏览器响应，请优先使用set操作）
注意：此字段可能返回 null，表示取不到有效值。
        :type HeaderMode: str
        :param _HeaderName: http 头部名称，最多可设置 100 个字符
注意：此字段可能返回 null，表示取不到有效值。
        :type HeaderName: str
        :param _HeaderValue: http 头部值，最多可设置 1000 个字符
Mode 为 del 时非必填
Mode 为 add/set 时必填
注意：此字段可能返回 null，表示取不到有效值。
        :type HeaderValue: str
        :param _RuleType: 规则类型：
all：所有文件生效
file：指定文件后缀生效
directory：指定路径生效
path：指定绝对路径生效
注意：此字段可能返回 null，表示取不到有效值。
        :type RuleType: str
        :param _RulePaths: RuleType 对应类型下的匹配内容：
all 时填充 *
file 时填充后缀名，如 jpg、txt
directory 时填充路径，如 /xxx/test/
path 时填充绝对路径，如 /xxx/test.html
注意：此字段可能返回 null，表示取不到有效值。
        :type RulePaths: list of str
        """
        self._HeaderMode = None
        self._HeaderName = None
        self._HeaderValue = None
        self._RuleType = None
        self._RulePaths = None

    @property
    def HeaderMode(self):
        """http 头部设置方式
set：设置。变更指定头部参数的取值为设置后的值；若设置的头部不存在，则会增加该头部；若存在多个重复的头部参数，则会全部变更，同时合并为一个头部。
del：删除。删除指定的头部参数
add：增加。增加指定的头部参数，默认允许重复添加，即重复添加相同的头部（注：重复添加可能会影响浏览器响应，请优先使用set操作）
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._HeaderMode

    @HeaderMode.setter
    def HeaderMode(self, HeaderMode):
        self._HeaderMode = HeaderMode

    @property
    def HeaderName(self):
        """http 头部名称，最多可设置 100 个字符
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._HeaderName

    @HeaderName.setter
    def HeaderName(self, HeaderName):
        self._HeaderName = HeaderName

    @property
    def HeaderValue(self):
        """http 头部值，最多可设置 1000 个字符
Mode 为 del 时非必填
Mode 为 add/set 时必填
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._HeaderValue

    @HeaderValue.setter
    def HeaderValue(self, HeaderValue):
        self._HeaderValue = HeaderValue

    @property
    def RuleType(self):
        """规则类型：
all：所有文件生效
file：指定文件后缀生效
directory：指定路径生效
path：指定绝对路径生效
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: str
        """
        return self._RuleType

    @RuleType.setter
    def RuleType(self, RuleType):
        self._RuleType = RuleType

    @property
    def RulePaths(self):
        """RuleType 对应类型下的匹配内容：
all 时填充 *
file 时填充后缀名，如 jpg、txt
directory 时填充路径，如 /xxx/test/
path 时填充绝对路径，如 /xxx/test.html
注意：此字段可能返回 null，表示取不到有效值。
        :rtype: list of str
        """
        return self._RulePaths

    @RulePaths.setter
    def RulePaths(self, RulePaths):
        self._RulePaths = RulePaths

    def _deserialize(self, params):
        self._HeaderMode = params.get("HeaderMode")
        self._HeaderName = params.get("HeaderName")
        self._HeaderValue = params.get("HeaderValue")
        self._RuleType = params.get("RuleType")
        self._RulePaths = params.get("RulePaths")
        memeber_set = set(params.keys())
        for name, value in vars(self).items():
            property_name = name[1:]
            if property_name in memeber_set:
                memeber_set.remove(property_name)
        if len(memeber_set) > 0:
            warnings.warn("%s fileds are useless." % ",".join(memeber_set))

class HttpHeaderRule(AbstractModel):
    """http头部设置规则。

    """

    def __init__(self):
        r"""
        :param _HeaderMode: http头部设置方式，支持add，set或del，分别表示新增，设置或删除头部。
        :type HeaderMode: str
        :param _HeaderName: http头部名称。
        :type HeaderName: str
        :param _HeaderValue: http头部值。
        :type HeaderValue: str
        """
        self._HeaderMode = None
        self._HeaderName = None
        self._HeaderValue = None

    @property
    def HeaderMode(self):
        """http头部设置方式，支持add，set或del，分别表示新增，设置或删除头部。
        :rtype: str
        """
        return self._HeaderMode

    @HeaderMode.setter
    def HeaderMode(self, HeaderMode):
        self._HeaderMode = HeaderM


          anchor_cross_representation_loss + positive_cross_representation_loss)
      encoder_total_loss += cross_representation_loss

    encoder_trainable_variables = (
        self.encoder.trainable_variables + self.subencoder.trainable_variables)
    encoder_grads = encoder_tape.gradient(encoder_total_loss,
                                          encoder_trainable_variables)
    encoder_optimizer.apply_gradients(
        zip(encoder_grads, encoder_trainable_variables))

    encoder_losses = dict(
        total_loss=encoder_total_loss,
        representation_loss=representation_loss,
        cross_representation_loss=cross_representation_loss,
        regularization_loss=regularization_loss)

    return dict(encoder=encoder_losses)


// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_SCRIPT_SCRIPT_SCHEDULING_TYPE_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_SCRIPT_SCRIPT_SCHEDULING_TYPE_H_

namespace blink {

// Type of <script>'s scheduling.
//
// In the spec, this is determined which clause of Step 25 of
// https://html.spec.whatwg.org/C/#prepare-a-script
// is taken.
//
// The enum values are used in histograms and thus do not change existing
// enum values when modifying.
enum class ScriptSchedulingType {
  // Because the sheduling type is determined slightly after PendingScript
  // creation, it is set to kNotSet before ScriptLoader::TakePendingScript()
  // is called. kNotSet should not be observed.
  kNotSet,

  // Deferred scripts controlled by HTMLParserScriptRunner.
  //
  // Spec: 1st Clause.
  //
  // Examples:
  // - <script defer> (parser inserted)
  // - <script type="module"> (parser inserted)
  kDefer,

  // Parser-blocking external scripts controlled by XML/HTMLParserScriptRunner.
  //
  // Spec: 2nd Clause.
  //
  // Examples:
  // - <script> (parser inserted)
  kParserBlocking,

  // Parser-blocking inline scripts controlled by XML/HTMLParserScriptRunner.
  //
  // Spec: 5th Clause.
  kParserBlockingInline,

  // In-order scripts controlled by ScriptRunner.
  //
  // Spec: 3rd Clause.
  //
  // Examples (either classic or module):
  // - Dynamically inserted <script>s with s.async = false
  kInOrder,

  // Async scripts controlled by ScriptRunner.
  //
  // Spec: 4nd Clause.
  //
  // Examples (either classic or module):
  // - <script async> and <script async defer> (parser inserted)
  // - Dynamically inserted <script>s
  // - Dynamically inserted <script>s with s.async = true
  kAsync,

  // Inline <script> executed immediately within prepare-a-script.
  kImmediate,

  // Force deferred scripts controlled by HTMLParserScriptRunner.
  // These are otherwise parser-blocking scripts that are being forced to
  // execute after parsing completes (due to a ForceDeferScriptIntervention).
  //
  // Spec: not yet spec'ed. https://crbug.com/976061
  kForceDefer
};

static const int kLastScriptSchedulingType =
    static_cast<int>(ScriptSchedulingType::kImmediate);

}  // namespace blink

#endif


ommit/b513e390bf349481e4009c2906c2a13986d3fa4d))
* adds verification for zksync block explorer  ([#599](https://github.com/matter-labs/foundry-zksync/issues/599)) ([15bec2f](https://github.com/matter-labs/foundry-zksync/commit/15bec2f861b3b4c71e58f85e2b2c9dd722585aa8))
* allow any config to be defined inline ([#9430](https://github.com/matter-labs/foundry-zksync/issues/9430)) ([3e6d3b8](https://github.com/matter-labs/foundry-zksync/commit/3e6d3b8b6b96a02df1264294320a840ddc88345b))
* **anvil:** add `anvil_getIntervalMining` API ([#9290](https://github.com/matter-labs/foundry-zksync/issues/9290)) ([9df5939](https://github.com/matter-labs/foundry-zksync/commit/9df593939b995b08eee7dbab585ec368f65c8116))
* build static binaries ([#844](https://github.com/matter-labs/foundry-zksync/issues/844)) ([d00f5ae](https://github.com/matter-labs/foundry-zksync/commit/d00f5ae4af2ffeb2ec9a5a0f3dfe376e75327550))
* bump alpine to `3.20.3` ([#9094](https://github.com/matter-labs/foundry-zksync/issues/9094)) ([7a9ebf9](https://github.com/matter-labs/foundry-zksync/commit/7a9ebf9ccbce2957762ef1b3f4623efb76ef0306))
* bump MSRV to 1.83 ([#9473](https://github.com/matter-labs/foundry-zksync/issues/9473)) ([2f56133](https://github.com/matter-labs/foundry-zksync/commit/2f56133ce2e7d0d0d8b1488c2784dbd799d01e16))
* **cast:** add --int flag to from-rlp ([#9210](https://github.com/matter-labs/foundry-zksync/issues/9210)) ([00415bb](https://github.com/matter-labs/foundry-zksync/commit/00415bbb0653c429c1e21dcd0405be3005a36cc6))
* **cast:** add `--rpc-timeout` option ([#9044](https://github.com/matter-labs/foundry-zksync/issues/9044)) ([2559899](https://github.com/matter-labs/foundry-zksync/commit/25598999a2b33ac6ccfa35c347f3c98aba8e0061))
* **cast:** add `json` flag in `cast wallet new-mnemonic` ([#9139](https://github.com/matter-labs/foundry-zksync/issues/9139)) ([7c1c019](https://github.com/matter-labs/foundry-zksync/commit/7c1c019455686cdb277cfb3d47c15e22a59ae985))
* **cast:** add artifact method ([#9249](https://github.com/matter-labs/foundry-zksync/issues/9249)) ([f8d9234](https://github.com/matter-labs/foundry-zksync/commit/f8d92341baa030675db135d08a574f4caeb96177))
* **cast:** add contract creation bytecodes to traces ([#8941](https://github.com/matter-labs/foundry-zksync/issues/8941)) ([df2203c](https://github.com/matter-labs/foundry-zksync/commit/df2203cbb7c7945025c80


match....";
MATCHMAKING_YOUR_AVG_RATING = "Your Team's Matchmaking Value: %s";
MATCHMAKING_YOUR_UPDATED_MATCHMAKING_VALUE = "Your Matchmaking Value: %s |TInterface\\CHATFRAME\\ChatFrameExpandArrow:16:16|t %s";
MAW_BUFF_QUALITY_STRING_COMMON = "|cffffffffCommon|r";
MAW_BUFF_QUALITY_STRING_EPIC = "|cffa335eeEpic|r";
MAW_BUFF_QUALITY_STRING_RARE = "|cff0070ddRare|r";
MAW_BUFF_QUALITY_STRING_UNCOMMON = "|cff1eff00Uncommon|r";
MAW_POWER = "Maw Power";
MAW_POWER_DESCRIPTION = "Anima Power";
MAXFPS = "Max Foreground FPS";
MAXFPSBK = "Max Background FPS";
MAXFPSBK_CHECK = "Max Background FPS Toggle";
MAXFPS_CHECK = "Max Foreground FPS Toggle";
MAXIMILLIAN_ARTIFACTACQUISITION = "Excaliberto!";
MAXIMUM = "Maximum";
MAXIMUM_REWARD = "Maximum Reward";
MAX_DAMAGE = "Max Damage";
MAX_FOLLOW_DIST = "Max Camera Distance";
MAX_HONOR_LEVEL = "Max Honor Level";
MAX_HP_TEMPLATE = "%d Max health";
MEETINGSTONE_LEVEL = "Level %d-%d";
MEETINGSTONE_TOOLTIP = "Looking for more for %s";
MELEE = "Melee";
MELEE_ATTACK = "Melee Attack";
MELEE_ATTACK_POWER = "Melee Attack Power";
MELEE_ATTACK_POWER_SPELL_POWER_TOOLTIP = "Increases damage with melee weapons by %s damage per second.\nIncreases Spell Power by %s.";
MELEE_ATTACK_POWER_TOOLTIP = "Increases damage with melee weapons by %s damage per second.";
MELEE_COMBATLOG_TOOLTIP = "Shows natural melee swings.";
MELEE_CRIT_CHANCE = "Crit Chance";
MELEE_RANGE = "Melee Range";
MEMBERS = "Members";
MEMBERS_COLON = "Members:";
MEMBERS_IN_PARTY_LIST = "Members in Party: %s";
MEMBER_COUNT_IN_RAID_LIST = "%d |4Member:Members; in Raid";
MERCHANT = "Merchant";
MERCHANT_ARENA_POINTS = "%d Arena Points";
MERCHANT_BUYBACK = "Merchant Buyback";
MERCHANT_HONOR_POINTS = "%d Honor";
MERCHANT_PAGE_NUMBER = "Page %s of %s";
MERCHANT_STOCK = "(%d)";
MESSAGE_SOURCES = "Message Sources";
MESSAGE_TYPES = "Message Types";
META_GEM = "Meta";
META_KEY_TEXT = "META";
META_KEY_TEXT_ABBR = "m";
METRIAL = "Metrial";
METRIAL_TREE_DESCRIPTION = "Core Systems";
MIDDLE_BUTTON_STRING = "Middle Button";
MILLISECONDS_ABBR = "ms";
MINIMAP_GARRISON_LANDING_PAGE_TOOLTIP = "Click to show the garrison report";
MINIMAP_LABEL = "Minimap";
MINIMAP_ORDER_HALL_LANDING_PAGE_TOOLTIP = "Click to show the Class Hall report";
MINIMAP_TRACKING_ACCOUNT_COMPLETED_QUESTS = "Warband Completed Quests";
MINIMAP_TRACKING_AUCTIONEER = "Auctioneer";
MINIMAP_TRACKING_BANKER = "Banker";
MINIMAP_TRACKING_BARBER = "Barber";
MINIMAP_TRACKING_BATTLEMASTER = "Battlemaster";
MINIMAP_TRACKING_DIGSITES = "Track Digsites";
MINIMAP_TRACKING_FLIGHTMASTER = "Flight Master";
MINIMAP_TRACKING_F


",
		[5479] = "武神",
		[8916] = "競技場觀眾",
		[15756] = "大型異種撕掠者",
		[9044] = "裂盾哨衛",
		[423] = "混血赤脊山豺狼人",
		[94] = "迪菲亞小偷",
		[9236] = "暗影獵手沃許加斯",
		[2392] = "德莉亞·維拉納",
		[1312] = "阿德溫·凱倫",
		[3952] = "艾歐琳",
		[513] = "撒網魚人",
		[8545] = "縫合的魔像",
		[9620] = "德雷卡蘇",
		[10366] = "狂爪龍人衛士",
		[3683] = "吉克尼庫",
		[3616] = "安努",
		[4555] = "伊林諾爾·拉斯克",
		[1426] = "河爪礦工",
		[5453] = "哈札里掘洞蠍",
		[1453] = "德溫·閃曦",
		[8910] = "熾熱火焰衛士",
		[10196] = "科巴塔恩將軍",
		[10260] = "基布雷爾",
		[5910] = "贊卡沙",
		[4192] = "塔爾丹",
		[1715] = "叛軍",
		[10516] = "不可寬恕者",
		[10580] = "惡臭殭屍",
		[10644] = "迷霧嚎叫者",
		[11146] = "埃隆努斯·冷鋼",
		[1846] = "保衛者洛瑞克",
		[4142] = "[Deprecated for 4.x]Sparkleshell Tortoise",
		[4846] = "影爐掘地工",
		[5644] = "黛琳達·瑪雷姆",
		[11028] = "耶瑪·迅移",
		[7852] = "普拉特·馬克格魯比",
		[11156] = "綠色骷髏戰馬",
		[5513] = "吉爾曼·石手",
		[5852] = "煉獄元素",
		[11348] = "狂熱者札斯",
		[12497] = "睡夢咆哮者",
		[11476] = "精靈貴族骷髏",
		[258] = "喬舒·馬科倫",
		[11604] = "白鬚地卜師",
		[11668] = "火焰之王",
		[11732] = "雷戈噴火者",
		[11796] = "貝薩尼·草風",
		[11860] = "縛地者馬格蘭",
		[2002] = "惡賴劣魔",
		[11988] = "『焚化者』古雷曼格",
		[12052] = "霜狼戰士",
		[5332] = "憎世御�


        CV_TS_SEQ_CHECK_CONDITION(graph.active_count == sgraph.vtx.max_count - sgraph.vtx.free_count &&
//            graph.total >= graph.active_count &&
//            (graph.total == 0 || graph.total >= prev_vtx_total),
//            "The total number of graph vertices is not correct");

//        CV_TS_SEQ_CHECK_CONDITION(graph.edges.total >= graph.edges.active_count &&
//            (graph.edges.total == 0 || graph.edges.total >= prev_edge_total),
//            "The total number of graph vertices is not correct");

//        // CvGraph and simple graph do not necessary have the same "total" (active & free) number,
//        // so pass "graph.total" (or "graph.edges.total") to skip that check
//        test_seq_block_consistence(struct_idx, (CvSeq *)graph, graph.total);
//        test_seq_block_consistence(struct_idx, (CvSeq *)graph.edges, graph.edges.total);
//        update_progressbar();
//    }

//    return 0;
//    }
//};

////////////// graph scan test //////////////

//class Core_GraphScanTest extends Core_DynStructBaseTest
//{
//    constructor() {
//        super();
//        iterations = 100;
//        struct_count = 1;
//    }

//    void run(int){
//        CvGraphScanner * scanner = 0;
//        try {
//            var rng = this.ts.get_rng();
//            Array < uchar > vtx_mask, edge_mask;
//            double t;
//            int i;

//            clear();
//            test_progress = -1;

//            cxcore_struct.resize(struct_count, 0);

//            for (gen = 0; gen < generations; gen++) {
//                struct_idx = iter = -1;
//                t = alvision.cvtest.randReal(rng) * (max_log_storage_block_size - min_log_storage_block_size) + min_log_storage_block_size;
//                int storage_blocksize = Math.round(exp(t * Math.LOG2E));
//                storage_blocksize = MAX(storage_blocksize, (int)(sizeof(CvGraph) + sizeof(CvMemBlock) + sizeof(CvSeqBlock)));
//                storage_blocksize = MAX(storage_blocksize, (int)(sizeof(CvGraphEdge) + sizeof(CvMemBlock) + sizeof(CvSeqBlock)));
//                storage_blocksize = MAX(storage_blocksize, (int)(sizeof(CvGraphVtx) + sizeof(CvMemBlock) + sizeof(CvSeqBlock)));
//                storage.reset(cvCreateMemStorage(storage_blocksize));

//                if (gen == 0) {
//                    // special regression test for one sample graph.
//                    // !!! ATTENTION !!! The test relies on the particular order of the inserted edges
//                    // (LIFO: the edge inserted last goes first in the list of incident edges).
//                    // if it is changed, the test will have to be modified.

//                    int vtx_count = -1, edge_count = 0, edges[][3] =
//                        {
//                    {0, 4, 'f' }, { 0, 1, 't' }, { 1, 4, 't' }, { 1, 2, 't' }, { 2, 3, 't' }, { 4, 3, 'c' }, { 3, 1, 'b' },
//                    { 5, 7, 't' }, { 7, 5, 'b' }, { 5, 6, 't' }, { 6, 0, 'c' }, { 7, 6, 'c


onst cellMap = [];\n  let startIndex = 0;\n  sizes.forEach((_ref2, index) => {\n    let {\n      width,\n      height\n    } = _ref2;\n    if (width > cols) {\n      if (true) {\n        throw new Error(\"[Floating UI]: Invalid grid - item width at index \" + index + \" is greater than grid columns\");\n      }\n    }\n    let itemPlaced = false;\n    if (dense) {\n      startIndex = 0;\n    }\n    while (!itemPlaced) {\n      const targetCells = [];\n      for (let i = 0; i < width; i++) {\n        for (let j = 0; j < height; j++) {\n          targetCells.push(startIndex + i + j * cols);\n        }\n      }\n      if (startIndex % cols + width <= cols && targetCells.every(cell => cellMap[cell] == null)) {\n        targetCells.forEach(cell => {\n          cellMap[cell] = index;\n        });\n        itemPlaced = true;\n      } else {\n        startIndex++;\n      }\n    }\n  });\n\n  // convert into a non-sparse array\n  return [...cellMap];\n}\n\n/** Gets cell index of an item's corner or -1 when index is -1. */\nfunction getCellIndexOfCorner(index, sizes, cellMap, cols, corner) {\n  if (index === -1) return -1;\n  const firstCellIndex = cellMap.indexOf(index);\n  const sizeItem = sizes[index];\n  switch (corner) {\n    case 'tl':\n      return firstCellIndex;\n    case 'tr':\n      if (!sizeItem) {\n        return firstCellIndex;\n      }\n      return firstCellIndex + sizeItem.width - 1;\n    case 'bl':\n      if (!sizeItem) {\n        return firstCellIndex;\n      }\n      return firstCellIndex + (sizeItem.height - 1) * cols;\n    case 'br':\n      return cellMap.lastIndexOf(index);\n  }\n}\n\n/** Gets all cell indices that correspond to the specified indices */\nfunction getCellIndices(indices, cellMap) {\n  return cellMap.flatMap((index, cellIndex) => indices.includes(index) ? [cellIndex] : []);\n}\nfunction isDisabled(list, index, disabledIndices) {\n  if (disabledIndices) {\n    return disabledIndices.includes(index);\n  }\n  const element = list[index];\n  return element == null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}\n\nvar index = typeof document !== 'undefined' ? react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect : react__WEBPACK_IMPORTED_MODULE_0__.useEffect;\n\nfunction sortByDocumentPosition(a, b) {\n  const position = a.compareDocumentPosition(b);\n  if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n    return -1;\n  }\n  if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n    return 1;\n  }\n  return 0;\n}\nfunction areMapsEqual(map1, map2) {\n  if (map1.size !== map2.size) {\n    return false;\n  }\n  for (const [key, value] of map1.entries()) {\n    if (value !== map2.get(key)) {\n      return false;\n    }\n  }\n  return true;\n}\nconst FloatingListContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext({\n  register: () => {},\n  unregister: () => {},\n  map: /*#__PURE__*/new Map(),\n  elementsRef: {\n    current: []\n  }\n});\n/**\n * Provides context for a list of items within the floating element.\n * @see https://floating-ui.com/docs/FloatingList\n */\nfunction FloatingList(props) {\


from __future__ import annotations

from enum import IntEnum, StrEnum

__all__ = (
    "GIElement",
    "Game",
    "HSRElement",
    "HSREndgameType",
    "HSRPath",
    "Language",
    "ZZZAttackType",
    "ZZZElement",
    "ZZZSkillType",
    "ZZZSpecialty",
)

class Game(StrEnum):
    """Represent games supported by the Hakushin API."""

    GI = "gi"
    """Genshin Impact."""
    HSR = "hsr"
    """Honkai: Star Rail."""
    ZZZ = "zzz"
    """Zenless Zone Zero."""

class Language(StrEnum):
    """Represent languages supported by the Hakushin API."""

    EN = "en"
    """English."""
    ZH = "zh"
    """Simple Chinese."""
    KO = "ko"
    """Korean."""
    JA = "ja"
    """Japanese."""

class GIElement(StrEnum):
    """Represent a Genshin Impact element."""

    HYDRO = "Hydro"
    PYRO = "Pyro"
    CRYO = "Cryo"
    ELECTRO = "Electro"
    ANEMO = "Anemo"
    GEO = "Geo"
    DENDRO = "Dendro"

class HSRElement(StrEnum):
    """Represent an HSR element."""

    ICE = "Ice"
    FIRE = "Fire"
    THUNDER = "Thunder"
    WIND = "Wind"
    PHYSICAL = "Physical"
    QUANTUM = "Quantum"
    IMAGINARY = "Imaginary"

class HSRPath(StrEnum):
    """Represent an HSR character path."""

    PRESERVATION = "Knight"
    THE_HUNT = "Rogue"
    DESTRUCTION = "Warrior"
    ERUDITION = "Mage"
    HARMONY = "Shaman"
    NIHILITY = "Warlock"
    ABUNDANCE = "Priest"
    REMEMBRANCE = "Memory"

class HSREndgameType(StrEnum):
    """Represent an HSR endgame."""

    MEMORY_OF_CHAOS = "maze"
    PURE_FICTION = "story"
    APOCALYPTIC_SHADOW = "boss"

class ZZZSpecialty(IntEnum):
    """Represent a ZZZ character specialty."""

    ATTACK = 1
    STUN = 2
    ANOMALY = 3
    SUPPORT = 4
    DEFENSE = 5
    RUPTURE = 6

class ZZZElement(IntEnum):
    """Represent a ZZZ character element."""

    PHYSICAL = 200
    FIRE = 201
    ICE = 202
    ELECTRIC = 203
    ETHER = 205

class ZZZAttackType(IntEnum):
    """Represent a ZZZ character attack type."""

    SLASH = 101
    STRIKE = 102
    PIERCE = 103

class ZZZSkillType(StrEnum):
    """Represent a ZZZ character skill type."""

    BASIC = "Basic"
    DODGE = "Dodge"
    SPECIAL = "Special"
    CHAIN = "Chain"
    ASSIST = "Assist"


ousel-item {
  height: 10rem;
}
.carousel-item > img {
  position: absolute;
  top: 0;
  left: 0;
  min-width: auto;
  height: 10rem;
}

.marketing .col-lg-4 {
  margin-bottom: 1.5rem;
  text-align: center;
}
.marketing h2 {
  font-weight: 400;
}
.marketing .col-lg-4 p {
  margin-right: .75rem;
  margin-left: .75rem;
}

/* Featurettes
------------------------- */

.featurette-divider {
  margin: 2rem 0; /* Space out the Bootstrap <hr> more */
}

/* Thin out the marketing headings */
.featurette-heading {
  font-weight: 300;
  line-height: 1;
  letter-spacing: -.05rem;
}

/* RESPONSIVE CSS
-------------------------------------------------- */

@media (min-width: 40em) {
  /* Bump up size of carousel content */
  .carousel-caption p {
    margin-bottom: 1.25rem;
    font-size: 1.25rem;
    line-height: 1.4;
  }

  .featurette-heading {
    font-size: 50px;
  }
}

@media (min-width: 62em) {
  .featurette-heading {
    margin-top: 1rem;
  }
}
/*!
 * WeUI v0.4.0 (https://github.com/weui/weui)
 * Copyright 2016 Tencent, Inc.
 * Licensed under the MIT license
 */
html {
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}
body {
  line-height: 1.6;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
* {
  margin: 0;
  padding: 0;
}
a img {
  border: 0;
}
a {
  text-decoration: none;
}
@font-face {
  font-weight: normal;
  font-style: normal;
  font-family: "weui";
  src: url('data:application/octet-stream;base64,AAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzJAKEx1AAABfAAAAFZjbWFw64JcfgAAAhQAAAI0Z2x5ZvCBJt8AAARsAAAHLGhlYWQIuM5WAAAA4AAAADZoaGVhCC0D+AAAALwAAAAkaG10eDqYAAAAAAHUAAAAQGxvY2EO3AzsAAAESAAAACJtYXhwAR4APgAAARgAAAAgbmFtZeNcHtgAAAuYAAAB5nBvc3RP98ExAAANgAAAANYAAQAAA+gAAABaA+gAAP//A+kAAQAAAAAAAAAAAAAAAAAAABAAAQAAAAEAAKZXmK1fDzz1AAsD6AAAAADS2MTEAAAAANLYxMQAAAAAA+kD6QAAAAgAAgAAAAAAAAABAAAAEAAyAAQAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQOqAZAABQAIAnoCvAAAAIwCegK8AAAB4AAxAQIAAAIABQMAAAAAAAAAAAAAAAAAA


5%B0%81%E9%9D%A2.jpg/320px-%E4%B8%9C%E6%96%B9%E5%AE%B5%E6%B5%B7%E6%A0%BC_%EF%BD%9E_the_Unvisible_Wing%E5%B0%81%E9%9D%A2.jpg 2x" data-file-width="512" data-file-height="512">

剧情

剧情文本

故事背景

游戏对话

西行寺幽幽子&魂魄妖梦 • 夜雨刃

音乐
Music Room

符卡
符卡


ounced)
 BGP group RR-NODES type Internal
     Route Distinguisher: 62.0.0.1:0
     Nexthop: Self
     Flags: Nexthop Change
     Localpref: 100
     AS path: [6262] I
     Communities: target:100:100 esi-label:000493a0(label 299936)
```

# Community

Вот он — один из самых интересных аспектов BGP, вот где проявляется его гибкость — возможность помимо самих маршрутов, передавать дополнительную информацию.
С помощью атрибута Community можно из своей AS управлять поведением маршрутизаторов другой AS.
Я долгое время по непонятной сейчас для себя причине недооценивал мощь этого инструмента.
Управление своими анонсами в чужой AS с помощью community поддерживается подавляющим большинством вендоров. Но на самом деле говорить тут надо не о вендорах, а, скорее, о операторах/провайдерах — именно от них зависит, от их конфигурации, сможете ли вы управлять или нет.
# Правила работы RR

*   Если RR получил маршрут от клиента, он отправляет его всем своим клиентам, не-клиентам-соседям и внешним (EBGP) соседям.

    ![](http://habrastorage.org/storage3/d8e/ef1/72e/d8eef172ea5a66f7c7336659fd36c90c.gif)

*   Если RR получил маршрут от не-клиента, он отправляет его всем клиентам и EBGP-соседям. Не-клиентам маршруты НЕ отправляются (потому что они эти маршруты уже получили напрямую от исходного маршрутизатора).

    ![](http://habrastorage.org/storage3/935/7b0/709/9357b070908dee13d1ee17aeb37541d8.gif)

*   Если RR получил маршрут от EBGP-соседа, он отправляет его всем своим клиентам, не-клиентам-соседям и внешним соседям.

    ![](http://habrastorage.org/storage3/849/16c/5de/84916c5de42918394c999fdea5aad280.gif)

*   Если клиент получил маршрут от RR, он его может отправить только EBGP-соседу.

Как мы сказали выше, в сети может быть несколько Route-reflector’ов. Это нормально, это не вызовет образование петли, потому что существует атрибут Originator ID — как только RR получит маршрут, где указан он сам, как отправитель этого маршрута, он его отбросит. Каждый RR в таком случае будет иметь таблицу маршрутов BGP точно такую же, как у других. Это вынужденная избыточность, позволяющая значительно увеличить стабильность, но при этом у вас должна быть достаточная производительность самих у


 */

package hatchet

import (
	"encoding/base64"
	"encoding/hex"
	"fmt"
	"log"
	"strings"

	"go.mongodb.org/mongo-driver/bson"
	"go.mongodb.org/mongo-driver/bson/primitive"
)

// AddLegacyString converts log to legacy format
func AddLegacyString(doc *Logv2Info) error {
	var err error
	var arr []string
	attrMap := BsonD2M(doc.Attr)

	if doc.Msg != "Slow query" {
		if doc.Msg == "Connection ended" {
			arr = append(arr, "end connection")
		} else if doc.Msg == "Connection accepted" {
			arr = append(arr, "connection accepted")
		} else if doc.Msg == "Authentication succeeded" {
			arr = append(arr, "Successfully authenticated")
		} else {
			arr = append(arr, doc.Msg)
		}
	}

	if doc.Component == "CONTROL" && attrMap["host"] != nil {
		arr = append(arr, fmt.Sprintf("pid=%v port=%v %v host=%v",
			attrMap["pid"], attrMap["port"], attrMap["architecture"], attrMap["host"]))
	} else if doc.Component == "ACCESS" {
		for _, attr := range doc.Attr {
			if attr.Key == "authenticationDatabase" {
				arr = append(arr, fmt.Sprintf("on %v", attr.Value))
			} else if attr.Key == "principalName" {
				arr = append(arr, fmt.Sprintf("as principal %v", attr.Value))
			} else if attr.Key == "remote" {
				arr = append(arr, fmt.Sprintf("from client %v", attr.Value))
			} else if attr.Key == "durationMillis" {
				arr = append(arr, fmt.Sprintf("%vms", attr.Value))
			}
		}
	} else if doc.Component == "NETWORK" {
		remote := RemoteClient{}
		for _, attr := range doc.Attr {
			if attr.Key == "remote" {
				toks := strings.Split(attr.Value.(string), ":")
				remote.IP = toks[0]
				remote.Port = toks[1]
				if doc.Msg == "Connection ended" {
					remote.Ended = 1
					arr = append(arr, fmt.Sprintf("%v", attr.Value))
				} else if doc.Msg == "Connection accepted" {
					remote.Accepted = 1
					arr = append(arr, fmt.Sprintf("from %v", attr.Value))
				} else {
					arr = append(arr, fmt.Sprintf(`"%v":"%v"`, attr.Key, attr.Value))
				}
			} else if attr.Key == "client" {
				arr = append(arr, fmt.Sprintf(`"%v":"%v"`, attr.Key, attr.Value))
			} else if attr.Key == "connectionId" { // && doc.Msg != "Connection ended" {
				arr = append(arr, fmt.Sprintf("#%v", attr.Value))
			} else if attr.Key == "connectionCount" {
				arr = append(arr, fmt.Sprintf("(%v connections now open)", attr.Value))
				remote.Conns = ToInt(attr.Value)
			} else if attr.Key == "doc" {
				b, _ := bson.MarshalExtJSON(attr.Value, false, false)
				arr = append(arr, fmt.Sprintf(`"%v":"%v"`, attr.Key, string(b)))
				if doc.Msg == "client metadata" {
					data, ok := attr.Value.(bson.D)
					if ok {
						dataMap := BsonD2M(data)
						driver, ok := dataMap["driver"].(bson.M)
						if ok {
							remote.Driver, _ = driver["name"].(string)
							remote.Version, _


0-4.129-1.123-7.986-3.07-11.256Z" clip-rule="evenodd"/></svg>';
  static const String cannabis_outline =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"><path fill="currentColor" fill-rule="evenodd" d="M24.86 5.488a1 1 0 00-1.72 0C21.149 8.834 20 12.78 20 17c0 .407.01.812.032 1.213A19.175 19.175 0 009.326 11.9a1 1 0 00-1.184 1.184 19.175 19.175 0 007.94 11.954A15.857 15.857 0 0015 25c-3.531 0-6.819 1.176-9.588 3.191a1 1 0 000 1.618C8.182 31.824 11.469 33 15 33a15.74 15.74 0 003.14-.316l-.006.012c-1.215 2.105-1.644 4.466-1.396 6.801a1 1 0 001.4.809c1.96-.87 3.657-2.24 4.862-4.074V41h2v-4.768c1.205 1.834 2.902 3.203 4.862 4.074a1 1 0 001.4-.809c.248-2.335-.18-4.696-1.396-6.801l-.007-.012A15.74 15.74 0 0033 33c3.532 0 6.819-1.176 9.588-3.191a1 1 0 000-1.618C39.818 26.176 36.532 25 33 25c-.364 0-.724.012-1.083.037a19.175 19.175 0 007.94-11.954 1 1 0 00-1.182-1.183 19.175 19.175 0 00-10.707 6.313c.021-.401.032-.806.032-1.213 0-4.22-1.148-8.166-3.14-11.512ZM24 25.791a19.38 19.38 0 011.345-3.597A20.77 20.77 0 0026 17c0-3.196-.72-6.213-2-8.884-1.28 2.671-2 5.688-2 8.884 0 1.798.228 3.539.655 5.194A19.38 19.38 0 0124 25.79Zm9.222-4.427a17.103 17.103 0 01-6.895 4.204 22.33 22.33 0 00.9-2.666c.8-1.58 1.855-3.055 3.166-4.367a17.11 17.11 0 017.097-4.267 17.11 17.11 0 01-4.268 7.096Zm-12.448 1.538c.245.915.546 1.805.899 2.666a17.103 17.103 0 01-6.895-4.204 17.11 17.11 0 01-4.268-7.096 17.11 17.11 0 017.097 4.267 17.076 17.076 0 013.167 4.367Zm1.985 8.072a16.76 16.76 0 01-1.172.59 8.846 8.846 0 00-1.72 2.132 8.95 8.95 0 00-1.184 4.05 8.95 8.95 0 002.915-3.05 8.92 8.92 0 001.161-3.722ZM15 27c2.464 0 4.804.656 6.901 1.837-.493.305-.963.646-1.404 1.022A13.843 13.843 0 0115 31c-2.576 0-5.015-.716-7.183-2 2.168-1.284 4.607-2 7.183-2Zm12.503 2.859a11.26 11.26 0 00-1


local rootSize = (aliveplr.HumanoidRootPart.Size.X * 1200) * (cam.ViewportSize.X / 1920)
									local headPos, headVis = cam:WorldToViewportPoint(aliveplr.HumanoidRootPart.Position + vec3(0, 1 + (rigcheck and 2 or aliveplr.Humanoid.HipHeight), 0))
									local legPos, legVis = cam:WorldToViewportPoint(aliveplr.HumanoidRootPart.Position - vec3(0, 1 + (rigcheck and 2 or aliveplr.Humanoid.HipHeight), 0))
									rootPos = rootPos
									if rootVis then
										thing.Visible = rootVis
										thing.Size = UDim2.new(0, rootSize / rootPos.Z, 0, headPos.Y - legPos.Y)
										thing.Position = UDim2.new(0, rootPos.X - thing.Size.X.Offset / 2, 0, (rootPos.Y - thing.Size.Y.Offset / 2) - 36)
									end
								end
							end
						end
					end
				end)
			else
				RunLoops:UnbindFromRenderStep("ESP")
				ESPFolder:ClearAllChildren()
				for i,v in pairs(espfolderdrawing) do
					pcall(function()
						espfolderdrawing[i].Quad1:Remove()
						espfolderdrawing[i].Quad2:Remove()
						espfolderdrawing[i].Quad3:Remove()
						espfolderdrawing[i].Quad4:Remove()
						espfolderdrawing[i] = nil
					end)
					pcall(function()
						espfolderdrawing[i].Head:Remove()
						espfolderdrawing[i].Head2:Remove()
						espfolderdrawing[i].Torso:Remove()
						espfolderdrawing[i].Torso2:Remove()
						espfolderdrawing[i].Torso3:Remove()
						espfolderdrawing[i].LeftArm:Remove()
						espfolderdrawing[i].RightArm:Remove()
						espfolderdrawing[i].LeftLeg:Remove()
						espfolderdrawing[i].RightLeg:Remove()
						espfolderdrawing[i] = nil
					end)
				end
			end
		end,
		["HoverText"] = "Extra Sensory Perception\nRenders an ESP on players."
	})
	ESPMethod = ESP.CreateDropdown({
		["Name"] = "Mode",
		["List"] = {"2D", "Skeleton", "VideoFrame"},
		["Function"] = function(val)
			ESPFolder:ClearAllChildren()
			for i,v in pairs(espfolderdrawing) do
				pcall(function()
					espfolderdrawing[i].Quad1:Remove()
					espfolderdrawing[i].Quad2:Remove()
					espfolderdrawing[i].Quad3:Remove()
					espfolderdrawing[i].Quad4:Remove()
					espfolderdrawing[i] = nil
				end)
				pcall(function()
					espfolderdrawing[i].Head:Remove()
					espfolderdrawing[i].Head2:Remove()
					espfolderdrawing[i].Torso:Remove()
					espfolderdrawing[i].Torso2:Remove()
					espfolderdrawing[i].Torso3:Remove()
					espfolderdrawing[i].LeftArm:Remove()
					espfolderdrawing[i].RightArm:Remove()
					espfolderdrawing[i].LeftLeg:Remove()
					espfolderdrawing[i].RightLeg:Remove()
					espfolderdrawing[i] = nil
				end)
			end
			ESPHealthBar["Object"].Visible = (val == "2D")
		end,
	})
	ESPColor = ESP.CreateColorSlider({
		["Name"] = "Player Color",
		["Function"] = function(val) end
	})
	ESPHealthBar = ESP.CreateToggle({
		["Name"] = "Health Bar",
		["Function"] = function(callback)
			if callback then


GBB.PopupDynamic:AddItem( GBB.L[ "CboxDontTrunicate" ], false, GBB.DB, "DontTrunicate" )
  GBB.PopupDynamic:AddItem( "", true )
  GBB.PopupDynamic:AddItem( GBB.L[ "CboxNotifySound" ], false, GBB.DB, "NotifySound" )
  GBB.PopupDynamic:AddItem( GBB.L[ "CboxNotifyChat" ], false, GBB.DB, "NotifyChat" )
  GBB.PopupDynamic:AddItem( "", true )
  GBB.PopupDynamic:AddItem( GBB.L[ "HeaderSettings" ], false, GBB.Options.Open, 1 )

  GBB.PopupDynamic:AddItem( GBB.L[ "PanelAbout" ], false, GBB.Options.Open, 6 )
  GBB.PopupDynamic:AddItem( GBB.L[ "BtnCancel" ], false )
  GBB.PopupDynamic:Show()
end

function GBB.ClickFrame( self, button )
  if button == "LeftButton" then
  else
    createMenu()
  end
end

function GBB.ClickDungeon( self, button )
  local id = string.match( self:GetName(), "GBB.Dungeon_(.+)" )
  if id == nil or id == 0 then return end

  if button == "LeftButton" then
    if GBB.FoldedDungeons[ id ] then
      GBB.FoldedDungeons[ id ] = false
    else
      GBB.FoldedDungeons[ id ] = true
    end
    GBB.UpdateList()
  else
    createMenu( id )
  end
end

function GBB.ClickRequest( self, button )
  local id = string.match( self:GetName(), "GBB.Item_(.+)" )
  if id == nil or id == 0 then return end

  local req = GBB.RequestList[ tonumber( id ) ]
  if button == "LeftButton" then
    if IsShiftKeyDown() then
      WhoRequest( req.name )
      --SendWho( req.name )
    elseif IsControlKeyDown() then
      InviteRequest( req.name )
    else
      WhisperRequest( req.name )
    end
  else
    createMenu( nil, req )
  end
end

function GBB.RequestShowTooltip( self )
  for id in string.gmatch( self:GetName(), "GBB.Item


l ich Euch beibringen, wie man die Hilfe eines der kleinsten Wesen in der Natur für diese Aufgabe in Anspruch nehmen kann.$B$BWenn Ihr einen einfachen Rhythmus auf dieser Trommel spielt, könnt Ihr ein Murmeltier so beeinflussen, dass es Euren Befehlen gehorcht.$B$BIn der Nähe des Lagers der Blutschläger gibt es einen Murmeltierbau. Er befindet sich im Norden in der Dolchrachenklamm hinter dem Zirkel des Blutes.$B$BBenutzt ein Murmeltier dazu, das Gift in den Fässern der Blutschläger zu verteilen, sobald Ihr es beeinflussen könnt.",
    ["O"] = "Use the Kodohide Drum at the Marmot Den. While controlling the Marmot, poison the three kegs in the Bloodmaul Camp. When that is completed, return to Rexxar at Thunderlord Stronghold in the Blade\'s Edge Mountains.",
    ["T"] = "Die kleinsten Wesen",
  },
  [10721] = {
    ["D"] = "$N, ich habe einen Eber namens Grummel als Haustier. Er möchte Euch dabei helfen, ein wenig Spaß mit einem der Söhne Gruuls in der Nähe zu treiben.$B$BGrulloc lebt an einem Ort namens Verfluchtes Dunkel. Begebt Euch dorthin und lasst Grummel dann frei. Der Gronn wird es lustig finden, ihn umher zu jagen. Ihr könnt in der Zwischenzeit den Sack, den er bewacht, stehlen und zu Baron Zobelmähne beim Zirkel des Blutes bringen.$B$BIhr gelangt zum Verfluchten Dunkel, indem Ihr den nördlichen Pfad hinunter geht und dann nach Osten durch Drachenend hindurch geht. Das Dunkel befindet sich am östlichen Rand.",
    ["O"] = "Obtain Grulloc\'s Sack and deliver it to Baron Sablemane at the Circle of Blood in the Blade\'s Edge Mountains.",
    ["T"] = "Grulloc einen Eber aufbinden",
  },
  [10722] = {
    ["D"] = "Ich weiß, was zu tun ist! $N, Ihr müsst Euch als Aufseher Nuaar ausgeben und an diesem Treffen teilnehmen!$B$BDie Wyrmkultisten tragen alle ein Standardgewand. Sammelt ein paar Fetzen davon. Wenn Ihr genügend zusammen habt, können wir eine Verkleidung herstellen, in der Ihr an dem Treffen teilnehmen könnt.$B$BSprecht mit Kolphis Dunkelschuppe und hört Euch an, was er zu sagen hat. Kehrt danach zu mir zurück.$B$BIhr findet den Koven indem Ihr durch den Tunnel des Wyrmschädels geht und dem Pfad durch den Rabenwald Richtung Grishnath bis zum Ende folgt.",
    ["O"] = "Gather up enough Costume Scraps from the various wyrmcultists to create an Overseer Disguise.  Use the disguise to attend the meeting with Kolphis Darkscale, and report your findings back to Tree Warden Chawn at Evergrove in the Blade\'s Edge Mountains.",
    ["T"] = "Treffen am Pechschwingenkoven",
  },
  [10723] = {
    ["D"] = "Der Gronn, den wir suchen, heißt Gorgrom der Drachenfresser. Mit Zobelmähnes Falle werdet Ihr ihm kurzen Prozess machen können. Ihr könnt ihn wahrscheinlich antreffen, wenn er die Opfer der Oger von Fels\'mok entgegen nimmt.$B$BFolgt der Straße, die nach Norden vom Zirkel des Blutes weg führt, und wendet


	.align 2, 0
_02007C28: .4byte sub_02001C68
_02007C2C:
	movs r0, #0xc0
	lsls r0, r0, #0x12
_02007C30:
	adds r4, r1, r0
	ldr r0, _02007CE8 @ =0xFFFF0000
	ands r6, r0
	movs r0, #5
	orrs r6, r0
	ldr r0, _02007CEC @ =0xFF00FFFF
	ands r6, r0
	movs r0, #0x80
	lsls r0, r0, #9
	orrs r6, r0
	movs r7, #0
	str r7, [r4]
	adds r0, r4, #0
	adds r0, #0x50
	strh r7, [r0]
	adds r1, r4, #0
	adds r1, #0x52
	strh r7, [r1]
	movs r0, #0xf0
	lsls r0, r0, #1
	str r0, [r4, #0x48]
	subs r0, #0xa0
	str r0, [r4, #0x4c]
	ldrh r1, [r1]
	movs r0, #2
	ands r0, r1
	lsls r0, r0, #0x10
	lsrs r5, r0, #0x10
	adds r1, r4, #4
	lsls r0, r6, #8
	mov r8, r0
	movs r2, #0x20
	adds r2, r2, r4
	mov sb, r2
	movs r0, #0x23
	adds r0, r0, r4
	mov sl, r0
	cmp r5, #0
	beq _02007CF8
	str r7, [sp, #4]
	ldr r2, _02007CF0 @ =0x05000011
	add r0, sp, #4
	bl CpuSet
	ldr r0, _02007CF4 @ =0x06010000
	str r0, [r4, #4]
	movs r0, #0x80
	lsls r0, r0, #3
	strh r0, [r4, #0x18]
	strh r6, [r4, #0x10]
	mov r1, r8
	lsrs r0, r1, #0x18
	strb r0, [r4, #0x1e]
	strh r7, [r4, #0x1a]
	movs r0, #0xff
	strb r0, [r4, #0x1f]
	movs r0, #0x10
	mov r2, sb
	strb r0, [r2]
	movs r0, #4
	mov r1, sl
	strb r0, [r1]
	ldr r3, [r4]
	ldr r2, [r4, #0x48]
	ldr r0, [r3, #0x28]
	adds r0, r2, r0
	asrs r0, r0, #2
	strh r0, [r4, #0x14]
	ldr r1, [r4, #0x4c]
	ldr r0, [r3, #0x2c]
	adds r0, r1, r0
	asrs r0, r0, #2
	strh r0, [r4, #0x16]
	movs r0, #0xc0
	lsls r0, r0, #0xc
	str r0, [r4, #0xc]
	ldr r0, [r3, #0x28]
	adds r2, r2, r0
	str r2, [r4, #0x2c]


"""Testing formula 2.2 from EN 1993-1-1:2005: Chapter 2: Basis of design."""

import pytest

from blueprints.codes.eurocode.en_1993_1_1_2005.chapter_2_basic_of_design.formula_2_2 import Form2Dot2CharacteristicValueResistance
from blueprints.validations import NegativeValueError

class TestForm2Dot2CharacteristicValueResistance:
    """Validation for formula 2.2 from EN 1993-1-1:2005."""

    def test_evaluation(self) -> None:
        """Test the evaluation of the result."""
        # example values
        r_d = 100  # kN
        gamma_mi = 1.1  # [-]

        form_2_2 = Form2Dot2CharacteristicValueResistance(r_d=r_d, gamma_mi=gamma_mi)
        # manually calculated result
        manually_calculated_result = 110

        assert form_2_2 == pytest.approx(expected=manually_calculated_result, rel=1e-9)

    def test_raise_error_if_negative_r_d(self) -> None:
        """Test that a NegativeValueError is raised when a negative value is passed for r_d."""
        r_d = -1
        gamma_mi = 1.1
        with pytest.raises(NegativeValueError):
            Form2Dot2CharacteristicValueResistance(r_d=r_d, gamma_mi=gamma_mi)

    def test_raise_error_if_negative_gamma_mi(self) -> None:
        """Test that a NegativeValueError is raised when a negative value is passed for gamma_mi."""
        r_d = 100
        gamma_mi = -1.1
        with pytest.raises(NegativeValueError):
            Form2Dot2CharacteristicValueResistance(r_d=r_d, gamma_mi=gamma_mi)

    def test_latex_complete(self) -> None:
        """Tests the latex representation of the formula."""
        r_d = 100
        gamma_mi = 1.1
        form_2_2 = Form2Dot2CharacteristicValueResistance(r_d=r_d, gamma_mi=gamma_mi)
        assert form_2_2.latex().complete == r"R_{k} = R_d \cdot \gamma_{Mi} = 100.00 \cdot 1.10 = 110.00"


--[[
-- Name: yuhao_pop_candidate.lua
-- 名稱: 頂出候選項
-- Version: 20250722
-- Author: forFudan 朱宇浩 <dr.yuhao.zhu@outlook.com>
-- Github: https://github.com/forFudan/
-- Purpose: 出現韻碼時,下一碼頂出前序首位候選項.
-- 版權聲明：
-- 專爲宇浩輸入法製作 <https://shurufa.app>
-- 轉載請保留作者名和出處
-- Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International
---------------------------------------

版本:
20250722: 初版.
---------------------------
--]]

local function filter(input, env)

    if (env.engine.context.input:match("^%L")) then
        for cand in input:iter() do


ressLint("ConstantLocale")
val LOCAL_NAME = Locale.getDefault().toString()
val SCREEN_INFO = Info(0, 0, 1, 200)

data class Info(
    var width: Int, var height: Int, var scale: Int, var dpi: Int
)

fun isSupportVoiceCall(): Boolean {
    // https://developer.android.com/reference/android/media/MediaRecorder.AudioSource#VOICE_COMMUNICATION
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
}

fun requestPermission(context: Context, type: String) {
    XXPermissions.with(context)
        .permission(type)
        .request { _, all ->
            if (all) {
                Handler(Looper.getMainLooper()).post {
                    MainActivity.flutterMethodChannel?.invokeMethod(
                        "on_android_permission_result",
                        mapOf("type" to type, "result" to all)
                    )
                }
            }
        }
}

fun startAction(context: Context, action: String) {
    try {
        context.startActivity(Intent(action).apply {
            addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
            // don't pass package name when launch ACTION_ACCESSIBILITY_SETTINGS
            if (ACTION_ACCESSIBILITY_SETTINGS != action) {
                data = Uri.parse("package:" + context.packageName)
            }
        })
    } catch (e: Exception) {
        e.printStackTrace()
    }
}

class AudioReader(val bufSize: Int, private val maxFrames: Int) {
    private var currentPos = 0
    private val bufferPool: Array<ByteBuffer>

    init {
        if (maxFrames < 0 || maxFrames > 32) {
            throw Exception("Out of bounds")
        }
        if (bufSize <= 0) {
            throw Exception("Wrong bufSize")
        }
        bufferPool = Array(maxFrames) {
            ByteBuffer.allocateDirect(bufSize)
        }
    }

    private fun next() {
        currentPos++
        if (currentPos >= maxFrames) {
            currentPos = 0
        }
    }

    @RequiresApi(Build.VERSION_CODES.M)
    fun readSync(audioRecord: AudioRecord): ByteBuffer? {
        val buffer = bufferPool[currentPos]
        val res = audioRecord.read(buffer, bufSize, READ_BLOCKING)
        return if (res > 0) {
            next()
            buffer
        } else {
            null
        }
    }
}

fun getScreenSize(windowManager: WindowManager) : Pair<Int, Int>{
    var w = 0
    var h = 0
    @Suppress("DEPRECATION")
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
        val m = windowManager.maximumWindowMetrics
        w = m.bounds.width()
        h = m.bounds.height()
    } else {
        val dm = DisplayMetrics()
        windowManager.defaultDisplay.getRealMetrics(dm)
        w = dm.widthPixels
        h = dm.heightPixels
    }
    return Pair(w, h)
}

 fun translate(input: String): String {
    Log.d("common", "translate:$LOCAL_NAME")
    return FFI.translateLocale(LOCAL_NAME, input)
}package com.example.login_page

import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity() {
}
package com.example.flutter_demo_1

import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity() {
}
package com.example.animations_demo

import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity()
package com.example.form_demo_project

import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity() {
}
package com.example.scapp_firestore

import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity()
package com.example.flutter_application_1

import io.flutter.embedding.android.FlutterActivity


onfirmBox.boxfadeout{-webkit-animation-name:boxfadeout;opacity:0;}
@-webkit-keyframes boxfadeout{
	from{opacity:1;}
	to{opacity:0;}
}
#confirmBox .child{margin:5px;border:1px solid #d7dfe6;border-radius:8px;background:#fff;width:268px;height:118px;}
#confirmBox .child h3{color:#27b;line-height:40px;text-align:center;font-size:18px;}
#confirmBox .child .content{color:#707070;text-align:center;height:33px;}
#confirmBox .child .operate{height:38px;letter-spacing:-5px;}
#confirmBox .child .operate em{border-radius:5px;display:inline-block;width:118px;height:33px;box-shadow:0 1px 0 #fff inset;font-weight:bold;margin-left:9px;letter-spacing:0;text-align:center;line-height:33px;}
#confirmBox .child .operate .cancel{border:1px solid #b6c5d4;color:#496ea3;background:#dce6f1;text-shadow:0 1px 0 #fff;-webkit-box-shadow:0 1px 0 #fff inset;}
#confirmBox .child .operate .confirm{border:1px solid #d1a96e;color:#fff;background:#ff9b2b;text-shadow:0 1px 0 #c46a0a;-webkit-box-shadow:0 1px 0 #fdb771 inset;}
#confirmBox .child .operate .cancel.taped{background:#abbaca;}
#confirmBox .child .operate .confirm.taped{background:#e87c00;}

/* Calendar */
.widgetCalendar{width:232px;background:#fff;padding:4px;border:1px solid #cfc2b0;-webkit-tap-highlight-color: rgba(0,0,0,0);}

.widgetCalendar .widgetHd{line-height:26px;background:#5190ce;color:#fff;text-align: center;}
.widgetCalendar .widgetHd em{color:#fff;width:35px;}
.widgetCalendar .widgetHd em.widgetPrev{float:left;margin-left:5px;text-align:left;}
.widgetCalendar .widgetHd em.widgetNext{float: right;margin-right:5px;text-align:right;}

.widgetCalendar .widgetBd{margin-top: 4px;}
.widgetCalendar .widgetDay{overflow:hidden;background:#dfd9cc;color:#786867;}
.widgetCalendar .widgetDay span{float:left;width:30px;line-height:22px;text-align:center;}

.widgetCalendar .widgetDate{overflow:hidden;padding-top:4px;color:#333;}
.widgetCalendar .widgetDate em{float: left;width:30px;height:22px;line-height:22px;text-align:center;}
.widgetCalendar .widgetDate em.select{background:#f4810f;color:#fff;}
.widgetCalendar .widgetDate em.cur{color:#5190ce;font-size:12px;font-weight:bold;}
.widgetCalendar .widgetDate em.disabled{color:#686868;}

/*issueList */
#issueList{display:none;width:232px;text-align:center;background:#fff;padding:4px;border:1px solid #cfc2b0;-webkit-tap-highlight-color: rgba(0,0,0,0);border-radius: 4px 4px 4px 4px;position:absolute;position:fixed;top:10px;left:50%;margin-left:-120px;z-index:100;}
#issueList dt{height:32px;line-height:32px;background:#5190ce;color:#fff;margin-bottom:2px;}
#issueList dd{height:24px;line-height:24px;color:#000;}
#issueList dd.cur{color:#5190ce


, B>(fa: HK<F, A>, f: HK<F, (a: A) => B>): Equiv<HK<F, B>> {
    const F = this.F
    return Equiv.of(
      F.ap(fa, f),
      F.map(F.product(f, fa), p => { const [f, a] = p; return f(a) })
    )
  }

  applyMap2Consistency<A, B>(fa: HK<F, A>, f: HK<F, (a: A) => B>): Equiv<HK<F, B>> {
    const F = this.F
    return Equiv.of(
      F.ap(fa, f),
      F.map2(f, fa, (f, a) => f(a))
    )
  }

  /** Mixed-in from {@link FunctorLaws.covariantIdentity}. */
  covariantIdentity: <A>(fa: HK<F, A>) => Equiv<HK<F, A>>
  /** Mixed-in from {@link FunctorLaws.covariantComposition}. */
  covariantComposition: <A, B, C>(fa: HK<F, A>, f: (a: A) => B, g: (b: B) => C) => Equiv<HK<F, C>>
}

applyMixins(ApplyLaws, [FunctorLaws])

/**
 * Given a {@link Constructor} reference, returns its associated
 * {@link Apply} instance if it exists, or throws a `NotImplementedError`
 * in case there's no such association.
 *
 * ```typescript
 * import { Option, Apply, applyOf } from "funfix"
 *
 * const F: Apply<Option<any>> = applyOf(Option)
 * ```
 */
export const applyOf: <F>(c: Constructor<F>) => Apply<F> =
  getTypeClassInstance(Apply)

/**
 * Given an {@link Apply} instance, returns the {@link ApplyLaws}
 * associated with it.
 */
export function applyLawsOf<F>(instance: Apply<F>): ApplyLaws<F> {
  return new (class extends ApplyLaws<F> { public readonly F = instance })()
}

/**
 * `Applicative` functor type class.
 *
 * Allows application of a function in an Applicative context to a
 * value in an `Applicative` context.
 *
 * References:
 *
 * - [The Essence of the Iterator Pattern]{@link https://www.cs.ox.ac.uk/jeremy.gibbons/publications/iterator.pdf}
 * - [Applicative programming with effects]{@link http://staff.city.ac.uk/~ross/papers/Applicative.pdf}
 *
 * Example:
 *
 * ```typescript
 * const F = applicativeOf(Option)
 *
 * F.ap(F.pure(1), F.pure((x: number) => x + 1)) // Some(2)
 * ```
 *
 * Note that having an `Applicative` instance implies
 * {@link Functor} and {@link Apply} implementations are also
 * available, which is why `Applicative` is a subtype of
 * `Functor` and `Apply`.
 *
 * ## Implementation notes
 *
 * Even though in TypeScript the Funfix library is using `abstract class` to
 * express type classes, when implementing this type class it is recommended
 * that you implement it as a mixin using "`implements`", instead of extending
 * it directly with "`extends`". See
 * [TypeScript: Mixins]{@link https://www.typescriptlang.org/docs/handbook/mixins.html}
 * for details and note that we already have `applyMixins` defined.
 *
 * Implementation example:
 *
 * ```typescript
 * import {
 *   HK, Applicative,
 *   registerTypeClassInstance,
 *   applyMixins
 * } from "funfix"
 *
 * // Type alias defined for readability.
 * // HK is our encoding for higher-kinded types.
 * type BoxK<T> = HK<Box<any>, T>
 *
 * class Box<T> imple


sample;
       for (int j=0; j < sample; j++){
            auto is = is0+j;
            for (unsigned long i=0; i < ns-is; i++){  // loob from evaluation point till the head of the bunch
               wakeint.at(ic)+=current.at(is+i)*(wakeres.at(i)+wakerou.at(i));
               wakeint.at(ic)+=dcurrent.at(is+i)*wakegeo.at(i);
            }
       }
       wakeint.at(ic)/=static_cast<double>(sample);  // since the current is weighted multiple times when looping over sample
  }

  /*
  for (int ic = 0; ic <nsNode; ic++){
    count.at(ic)=0;
    wakeint.at(ic)=0;
  }

  double sc0=dscur*(nsNode*rank);     // s positions of the timewindow slice for a given rank.
  double sc1=dscur*(nsNode*(rank+1));
  int is0=static_cast<int>(round(sc0/ds));
  int is1=static_cast<int>(round(sc1/ds));

  for (int is=is0; is< is1; is++){  // loop the evaluation point from back to front
    double s=is*ds;
    double wakeloc=0;
    for (unsigned long i=icut; i < ns-is; i++){  // loob from evaluation point till the head of the bunch
      wakeloc+=current.at(is+i)*(wakeres.at(i)+wakerou.at(i));
      wakeloc+=dcurrent.at(is+i)*wakegeo.at(i);
    }
    int idx = floor((s-sc0)/dscur);
    if ((idx < 0) or (idx >= count.size())){
        cout << "Idx out of range " << idx << " rank: " << rank << endl;
        cout << "s: " << s << endl;
        cout << "sc0: " << sc0 << endl;
        cout << "dscur: " << dscur << endl;
    }
    count.at(idx)++;
    wakeint.at(idx)+=wakeloc;
  }

  for (int ic = 0; ic <nsNode; ic++){
    if (count.at(ic) > 0) {
      wakeint.at(ic)/=static_cast<double>(count.at(ic));
    } else {
      wakeint.at(ic)=0;
    }
  }
  */

  needsUpdate=false;
}

#include "Beam.h"
#include "Field.h"
#include "Sorting.h"

#include <mpi.h>

extern bool MPISingle;

Beam::~Beam()= default;
Beam::Beam(){
      do_global_stat=false;
      doCurrent=false;
      doSpatial=true;
      doEnergy=true;
      doAux=true;
      beam_write_filter=false;
      beam_write_slices_from=-1;
      beam_write_slices_to=-1;
      beam_write_slices_inc=1;
}

void Beam::init(int nsize, int nbins_in, double reflen_in, double slicelen_in, double s0_in, bool one4one_in ) {

    nbins = nbins_in;
    reflength = reflen_in;  // the length corresponding to 2pi in ponderomotive phase.
    slicelength = slicelen_in;  // reflength times samplerate.
    s0 = s0_in;
    one4one = one4one_in;
    do_global_stat = false;

    current.resize(nsize);
    eloss.resize(nsize);
    longESC.resize(nsize);  // array to hold long range space charge field
    for (int i = 0; i < nsize; i++) {
        eloss[i] = 0;
        longESC[i] = 0;
    }
    beam.resize(nsize);
}

double Beam::getSize(i


id="MxNet_SymContribApi_Dequantize_" data-uid="MxNet.SymContribApi.Dequantize*">

Dequantize(Symbol, Symbol, Symbol, ContribDequantizeOutType, String)

Dequantize the input tensor into a float tensor.

min_range and max_range are scalar floats that specify the range for

the output data.

When input data type is `uint8`, the output is calculated using the following equation:

`out[i] = in[i] * (max_range - min_range) / 255.0`,

When input data type is `int8`, the output is calculate using the following equation

by keep zero centered for the quantized value:

`out[i] = in[i] * MaxAbs(min_range, max_range) / 127.0`,

.. Note::

    This operator only supports forward propogation. DO NOT use it in training.

Defined in C:\Jenkins\workspace\mxnet\mxnet\src\operator\quantization\dequantize.cc:L83

Declaration

public Symbol Dequantize(Symbol data, Symbol min_range, Symbol max_range, ContribDequantizeOutType out_type = ContribDequantizeOutType.Float32, string symbol_name = "")

Parameters

        Type
        Name
        Description

        Symbol
        data

A ndarray/symbol of type uint8

        Symbol
        min_range

The minimum scalar value possibly produced for the input in float32

        Symbol
        max_range

The maximum scalar value possibly produced for the input in float32

        ContribDequantizeOutType
        <td


�","UpgradedToTeamSuccess.completeTitle":"কর্মক্ষেত্রের সেটআপ সম্পূর্ণ করুন","UpgradedToTeamSuccess.continue":"চালিয়ে যান","UpgradedToTeamSuccess.continueToChatgpt":"ChatGPT-এ চালিয়ে যান","UpgradedToTeamSuccess.description":"আপনার দল তৈরি করা হয়েছে। আপনি সহযোগিতা শুরু করতে সদস্যদের কর্মক্ষেত্রে যোগদানের জন্য আমন্ত্রণ জানাতে পারেন।","UpgradedToTeamSuccess.inviteTitle":"সদস্যদের আমন্ত্রণ জানান {workspaceName}","UpgradedToTeamSuccess.setupSubtitle":"কর্মক্ষেত্রের নাম","UpgradedToTeamSuccess.setupTitle":"একটি দলের কর্মক্ষেত্র সেট আপ করুন","UpgradedToTeamSuccess.skipAddMembers":"এড়িয়ে যান","UpgradedToTeamSuccess.trial":"পেমেন্ট সফল হয়েছে","UpgradeInviteModal.inviteValidUntilFooter":"আপনার আমন্ত্রণ {date} পর্যন্ত বৈধ","UpgradeInviteModal.title":"আপনি প্লাসে আমন্ত্রিত হয়েছেন","UpgradeInviteModal.upgradeButton":"আপগ্রেড করুন","uqD7Y8":"অ্যাক্সেস","useFilePickerState.maxUploadsAtATime":"আপলোড করতে অক্ষম {fileName}৷ একবারে সর্বোচ্চ {maxUploads}টি আপলোড করে থাকে","useFilePickerState.retrievalSkippedFile":"\\"{fileName}\\" থেকে পাঠ্য বের করতে অক্ষম","userContexModal.tools.browserTooltip":"উত্তর খুঁজতে ইন্টারনেট ব্রাউজ করুন","userContexModal.tools.codeInterpreterTooltip":"কোড ইন্টারপ্রেটা


= nullptr
      && (aobj->length() == 2)) {
    // Profile is int[2] where [0] and [1] correspond to false and true value occurrences respectively.
    jint false_cnt = aobj->element_value(0).as_int();
    jint  true_cnt = aobj->element_value(1).as_int();

    if (C->log() != nullptr) {
      C->log()->elem("observe source='profileBoolean' false='%d' true='%d'",
                     false_cnt, true_cnt);
    }

    if (false_cnt + true_cnt == 0) {
      // According to profile, never executed.
      uncommon_trap_exact(Deoptimization::Reason_intrinsic,
                          Deoptimization::Action_reinterpret);
      return true;
    }

    // result is a boolean (0 or 1) and its profile (false_cnt & true_cnt)
    // is a number of each value occurrences.
    Node* result = argument(0);
    if (false_cnt == 0 || true_cnt == 0) {
      // According to profile, one value has been never seen.
      int expected_val = (false_cnt == 0) ? 1 : 0;

      Node* cmp  = _gvn.transform(new CmpINode(result, intcon(expected_val)));
      Node* test = _gvn.transform(new BoolNode(cmp, BoolTest::eq));

      IfNode* check = create_and_map_if(control(), test, PROB_ALWAYS, COUNT_UNKNOWN);
      Node* fast_path = _gvn.transform(new IfTrueNode(check));
      Node* slow_path = _gvn.transform(new IfFalseNode(check));

      { // Slow path: uncommon trap for never seen value and then reexecute
        // MethodHandleImpl::profileBoolean() to bump the count, so JIT knows
        // the value has been seen at least once.
        PreserveJVMState pjvms(this);
        PreserveReexecuteState preexecs(this);
        jvms()->set_should_reexecute(true);

        set_control(slow_path);
        set_i_o(i_o());

        uncommon_trap_exact(Deoptimization::Reason_intrinsic,
                            Deoptimization::Action_reinterpret);
      }
      // The guard for never seen value enables sharpening of the result and
      // returning a constant. It allows to eliminate branches on the same value
      // later on.
      set_control(fast_path);
      result = intcon(expected_val);
    }
    // Stop profiling.
    // MethodHandleImpl::profileBoolean() has profiling logic in its bytecode.
    // By replacing method body with profile data (represented as ProfileBooleanNode
    // on IR level) we effectively disable profiling.
    // It enables full speed execution once optimized code is generated.
    Node* profile = _gvn.transform(new ProfileBooleanNode(result, false_cnt, true_cnt));
    C->record_for_igvn(profile);
    set_result(profile);
    return true;
  } else {
    // Continue profiling.
    // Profile data isn't available at the moment. So, execute method's bytecode version.
    // Usually, when GWT LambdaForms are profiled it means that a stand-alone nmethod
    // is compiled and counters aren't available since corresponding MethodHandle
    // isn't a compile-time constant.
    return false;
  }
}

bool LibraryCallKit::inline_isCompileConstant() {
  Node* n = argument(0);
  set_result(n->is_Con() ? intcon(1) : intcon(0));
  return true;
}

//------------------------------- inline_getObjectSize --------------------------------------
//
// Calculate the runtime size of the object


Core profile
     */
    public static void glMultiTexCoord4dv(@NativeType("GLenum") int texture, @NativeType("GLdouble const *") DoubleBuffer v) {
        if (CHECKS) {
            check(v, 4);
        }
        nglMultiTexCoord4dv(texture, memAddress(v));
    }

    // --- [ glLoadTransposeMatrixf ] ---

    /** Unsafe version of: {@link #glLoadTransposeMatrixf LoadTransposeMatrixf} */
    public static native void nglLoadTransposeMatrixf(long m);

    /**
     * Sets the current matrix to a 4 × 4 matrix in row-major order.
     *
     *
The matrix is stored as 16 consecutive values, i.e. as:

     *
     *

     *
a1	a2	a3	a4

     *
a5	a6	a7	a8

     *
a9	a10	a11	a12

     *
a13	a14	a15	a16

     *

     *
     * @param m the matrix data
     *
     * @see Reference Page - This function is deprecated and unavailable in the Core profile
     */
    public static void glLoadTransposeMatrixf(@NativeType("GLfloat const *") FloatBuffer m) {
        if (CHECKS) {
            check(m, 16);
        }
        nglLoadTransposeMatrixf(memAddress(m));
    }

    // --- [ glLoadTransposeMatrixd ] ---

    /** Unsafe version of: {@link #glLoadTransposeMatrixd LoadTransposeMatrixd} */
    public static native void nglLoadTransposeMatrixd(long m);

    /**
     * Double version of {@link #glLoadTransposeMatrixf LoadTransposeMatrixf}.
     *
     * @param m the matrix data
     *
     * @see Reference Page - This function is deprecated and unavailable in the Core profile
     */
    public static void glLoadTransposeMatrixd(@NativeType("GLdouble const *") DoubleBuffer m) {
        if (CHECKS) {
            check(m, 16);
        }
        nglLoadTransposeMatrixd(memAddress(m));
    }

    // --- [ glMultTransposeMatrixf ] ---

    /** Unsafe version of: {@link #glMultTransposeMatrixf MultTransposeMatrixf} */
    public static native void nglMultTransposeMatrixf(long m);

    /**
     * Multiplies the current matrix with a 4 × 4 matrix in row-major order. See {@link #glLoadTransposeMatrixf LoadTransposeMatrixf} for details.
     *
     * @param m the matrix data
     *
     * @see Reference Page - This function is deprecated and unavailable in the Core profile
     */
    public static void glMultTransposeMatrixf(@NativeType("GLfloat const *") FloatBuffer m) {
        if (CHECKS) {
            check(m, 16);
        }
        nglMultTransposeMatrixf(memAddress(m));
    }

    // --- [ glMultTransposeMatrixd ] ---

    /** Unsafe version of: {@link #glMultTransposeMatrixd MultTransposeMatrixd} */
    public static native void nglMultTransposeMatrixd(long m);

    /**
     * Double version of {@link #glMultTransposeMatrixf MultTransposeMatrixf}.
     *
     * @param m the matrix data
     *
     * @see <a target="_blank" href="http://docs.gl/gl3/glMultTransposeMatri


CIG_JbeqEnatr,%function
b__MAX13PCJY_RqvgVzcy12TrgEnatrGrkgREX14PCIG_JbeqEnatr:
nop
.text
.weak b__MAFg3__16irpgbeVAF_10havdhr_cgeVA13PCJY_YvfgPgey4VgrzRAF_14qrsnhyg_qryrgrVF3_RRRRAF_9nyybpngbeVF6_RRR21__chfu_onpx_fybj_cnguVF6_RRiBG_
.type b__MAFg3__16irpgbeVAF_10havdhr_cgeVA13PCJY_YvfgPgey4VgrzRAF_14qrsnhyg_qryrgrVF3_RRRRAF_9nyybpngbeVF6_RRR21__chfu_onpx_fybj_cnguVF6_RRiBG_,%function
b__MAFg3__16irpgbeVAF_10havdhr_cgeVA13PCJY_YvfgPgey4VgrzRAF_14qrsnhyg_qryrgrVF3_RRRRAF_9nyybpngbeVF6_RRR21__chfu_onpx_fybj_cnguVF6_RRiBG_:
nop
.text
.globl b__MA22PCQSFQX_ONNaabgUnaqyre15TrgFryrpgrqGrkgRC13PCQSFQX_Naabg
.type b__MA22PCQSFQX_ONNaabgUnaqyre15TrgFryrpgrqGrkgRC13PCQSFQX_Naabg,%function
b__MA22PCQSFQX_ONNaabgUnaqyre15TrgFryrpgrqGrkgRC13PCQSFQX_Naabg:
nop
.text
.globl b__MA16PSK_PGGTFHOGnoyr12GEnatrErpbeqP2Ri
.type b__MA16PSK_PGGTFHOGnoyr12GEnatrErpbeqP2Ri,%function
b__MA16PSK_PGGTFHOGnoyr12GEnatrErpbeqP2Ri:
nop
.text
.globl b__MA3ntt10iptra_qnfu10qnfu_fgnegRs
.type b__MA3ntt10iptra_qnfu10qnfu_fgnegRs,%function
b__MA3ntt10iptra_qnfu10qnfu_fgnegRs:
nop
.text
.globl b_bcw_qjg_trgtnva
.type b_bcw_qjg_trgtnva,%function
b_bcw_qjg_trgtnva:
nop
.text
.globl b__MA27PCQSFQX_SbezSvyyRaivebazrag11TrgCntrIvrjRv
.type b__MA27PCQSFQX_SbezSvyyRaivebazrag11TrgCntrIvrjRv,%function
b__MA27PCQSFQX_SbezSvyyRaivebazrag11TrgCntrIvrjRv:
nop
.text
.globl b__MA14PCQS_VagreSbez29PbhagSvryqfVaPnyphyngvbaBeqreRi
.type b__MA14PCQS_VagreSbez29PbhagSvryqfVaPnyphyngvbaBeqreRi,%function
b__MA14PCQS_VagreSbez29PbhagSvryqfVaPnyphyngvbaBeqreRi:
nop
.data
.globl b__MGI11PSKRH_Pyrne
.type b__MGI11PSKRH_Pyrne,%object
b__MGI11PSKRH_Pyrne:
.space __SIZEOF_POINTER__
.text
.globl b_bcw_zhgrk_haybpx
.type b_bcw_zhgrk_hay


.dart';

import '/gen/test/TbDetectCsvEncoding.dart';

import '/gen/test/TbItem2.dart';

import '/gen/test/TbTestIndex.dart';

import '/gen/test/TbTestMap.dart';

import '/gen/test/TbExcelFromJson.dart';

import '/gen/test/TbCompositeJsonTable1.dart';

import '/gen/test/TbCompositeJsonTable2.dart';

import '/gen/test/TbCompositeJsonTable3.dart';

import '/gen/test/TbExcelFromJsonMultiRow.dart';

import '/gen/test/TbTestScriptableObject.dart';

import '/gen/test/TbPath.dart';

import '/gen/test/TbTestFieldAlias.dart';

import '/gen/test/TbTestFieldVariant.dart';

import '/gen/test/TbTestFieldVariant2.dart';

import '/gen/test/TbTestMapper.dart';

import '/gen/test/TbDefineFromExcel2.dart';

import '/gen/TbAutoImport1.dart';

import '/gen/test/TbAutoImport2.dart';

final class Tables
{
    final Future<dynamic> Function(String filePath) _asyncloadFunction;
    Tables(this._asyncloadFunction);

    TbBlackboard? _TbBlackboard;
    TbBehaviorTree? _TbBehaviorTree;
    TbGlobalConfig? _TbGlobalConfig;
    //道具表
    TbItem? _TbItem;
    TbL10NDemo? _TbL10NDemo;
    TbPatchDemo? _TbPatchDemo;
    TbTestTag? _TbTestTag;
    TbFullTypes? _TbFullTypes;
    TbSingleton? _TbSingleton;
    TbNotIndexList? _TbNotIndexList;
    TbMultiUnionIndexList? _TbMultiUnionIndexList;
    TbMultiIndexList? _TbMultiIndexList;
    TbDataFromMisc? _TbDataFromMisc;
    TbMultiRowRecord? _TbMultiRowRecord;
    TbTestMultiColumn? _TbTestMultiColumn;
    TbMultiRowTitle? _TbMultiRowTitle;
    TbTestNull? _TbTestNull;
    TbDemoPrimitive? _TbDemoPrimitive;
    TbTestString? _TbTestString;
    TbDemoGroup? _TbDemoGroup;
    TbDemoGroup_C? _TbDemoGroupC;
    TbDemoGroup_S? _TbDemoGroupS;
    TbDemoGroup_E? _TbDemoGroupE;
    TbTestGlobal? _TbTestGlobal;
    TbTestBeRef? _TbTestBeRef;
    TbTestBeRef2? _TbTestBeRef2;
    TbTestRef? _TbTestRef;
    TbTestSize? _TbTestSize;
    TbTestSet? _TbTestSet;
    TbTestRange? _TbTestRange;
    TbDetectCsvEncoding? _TbDetectCsvEncoding;
    TbItem2? _TbItem2;
    TbTestIndex? _TbTestIndex;
    TbTestMap? _TbTestMap;
    TbExcelFromJson? _TbExcelFromJson;
    TbCompositeJsonTable1? _TbCompositeJsonTable1;
    TbCompositeJsonTable2? _TbCompositeJsonTable2;
    TbCompositeJsonTable3? _TbCompositeJsonTable3;
    TbExcelFromJsonMultiRow? _TbExcelFromJsonMultiRow;
    TbTestScriptableObject? _TbTestScriptableObject;
    TbPath? _TbPath;
    TbTestFieldAlias? _TbTestFieldAlias;
    TbTestFieldVariant? _TbTestFieldVariant;
    TbTestFieldVariant2? _TbTestFieldVariant2;
    TbTestMapper? _TbTestMapper;
    TbDefineFromExcel2? _TbDefineFromExcel2;
    TbAutoImport1? _TbAutoImport1;
    TbAutoImport2? _TbAutoImport2;

    Future<void> waitLoad() async {
        var results = await Future.wait([
            _asyncloadFunction("ai_tbblackboard"),
            _asyncloadFunction("ai_tbbehaviortree"),


in optimizer.param_groups:
    #    param_group['lr'] = lr

def accuracy(output, target, topk=(1,)):
    """Computes the accuracy over the k top predictions for the specified values of k"""
    with torch.no_grad():
        maxk = max(topk)
        batch_size = target.size(0)

        _, pred = output.topk(maxk, 1, True, True)
        pred = pred.t()
        correct = pred.eq(target.view(1, -1).expand_as(pred))

        res = []
        for k in topk:
            correct_k = correct[:k].view(-1).float().sum(0, keepdim=True)
            res.append(correct_k.mul_(100.0 / batch_size))
        return res

if __name__ == '__main__':
    main()


，因为 Ghost 具有操作工具单一且一致的优点——无需额外的封装，而 WordPress 需要依赖 Apache / Nginx 和 PHP 之间的集成，这可能会导致显著的性能缺陷。

除此之外，PHP 距 Node.js 之间还有一个显著的性能落差，后者更佳，我将在下面简要介绍一下，可能会出现一些与初衷大相径庭的结果。

#### PHP 与 Node.js 的对决

为了比较 WordPress 和 Ghost，我们必须首先考虑一个影响到两者的基本组件。

基本上，WordPress 是一个基于 PHP 的 CMS，而 Ghost 是基于 Node.js（JavaScript）的。与 PHP 不同，Node.js 有以下优点：

* 非阻塞的 I/O
* 事件驱动
* 更新颖、更少的残旧代码

由于有大量的测评文章解释和演示了 Node.js 的原始速度超过 PHP（包括 PHP 7），我不会再进一步阐述这个主题，请你自行用谷歌搜索相关内容。

因此，考虑到 Node.js 的性能优于 PHP，一个 Node.js 的网站的速度要比 Apache / Nginx 和 PHP 的网站快吗？

### WordPress 和 Ghost 对决

当比较 WordPress 和 Ghost 时，有些人会说这就像比较苹果和橘子，大多数情况下我同意这个观点，因为 WordPress 是一个完全成熟的 CMS，而 Ghost 基本上只是一个博客平台。

然而，两者仍然有共同竞争的市场，这两者都可以用于向世界发布你的个人文章。

制定一个前提，我们怎么比较两个完全基于不同的代码来运行的平台，包括风格主题和核心功能。

事实上，一个科学的实验测试条件是很难设计的。然而，在这个测试中我对更接近生活的情景更感兴趣，所以 WordPress 和 Ghost 都将保留其主题。因此，这里的目标是使两个平台的网页大小尽可能相似，让 PHP 和 Node.js 在幕后斗智斗勇。

由于结果是根据不同的标准进行测量的，最重要的是尺度不一样，因此在图表中并排显示它们是不公平的。因此，我改为使用表：

[![Node、Nginx 和 Apache 性能比较表](http://iwf1.com/wordpress/wp-content/uploads/2016/11/Node-vs-Nginx-vs-Apache-comparison-table-730x185.jpg)
][8]

*Node、Nginx、Apache 以及运行 WordPress 和 Ghost 的比较。前两行是 WordPress，底部的两行是 Ghost*

正如你所见，尽管事实上 Ghost（Node.js）正在加载一个更小的页面（你可能会惊讶 1kb 可以产生这么大的差异），它仍然比同时使用 Nginx 和 Apache 的 WordPress 要慢。

此外，使用 Nginx 代理作为负载均衡器来接管每个 Node 服务器的请求实际上会提升还是降低性能？

那么，根据上面的表格，如果说它产生什么效果的话，它造成了更慢的效果——这是一个合理的结果，因为额外封装一层理所当然会使其变得更慢。当然，上面的数字也表明这点差异可以忽略不计。

但是上表中最重要的一点是，即使 Node.js 比 PHP 快，HTTP 服务器的作用也可能超过某个 web 平台使用的编程语言的重要性。

当然，另一方面，如果加载的页面更多地依赖于服务器端的脚本处理，那么我怀疑结果可能会有点不同。


]
    fn decrypt_ecb_128(aes: &mut Aes) {
        let mut total_elapsed: u32 = 0;

        for (plaintext, ciphertext) in ECB_PT_CT_128.iter() {
            let mut output_plaintext: [u32; 4] = [0; 4];
            total_elapsed += stopwatch(|| {
                unwrap!(aes.decrypt_ecb(&ZERO_16B, ciphertext, &mut output_plaintext))
            });
            defmt::assert_eq!(&output_plaintext, plaintext);
        }

        for (key, ciphertext) in ECB_KEY_CT_128.iter() {
            let mut output_plaintext: [u32; 4] = [0; 4];
            total_elapsed +=
                stopwatch(|| unwrap!(aes.decrypt_ecb(key, ciphertext, &mut output_plaintext)));
            defmt::assert_eq!(output_plaintext, ZERO_16B);
        }

        defmt::info!(
            "Average cycles per 128-bit decrypt: {}",
            total_elapsed / NUM_ECB_128
        );
    }

    #[test]
    fn decrypt_ecb_inplace_128(aes: &mut Aes) {
        let mut total_elapsed: u32 = 0;

        for (plaintext, ciphertext) in ECB_PT_CT_128.iter() {
            let mut output_plaintext: [u32; 4] = *ciphertext;
            total_elapsed +=
                stopwatch(|| unwrap!(aes.decrypt_ecb_inplace(&ZERO_16B, &mut output_plaintext)));
            defmt::assert_eq!(&output_plaintext, plaintext);
        }

        for (key, ciphertext) in ECB_KEY_CT_128.iter() {
            let mut output_plaintext: [u32; 4] = *ciphertext;
            total_elapsed +=
                stopwatch(|| unwrap!(aes.decrypt_ecb_inplace(key, &mut output_plaintext)));
            defmt::assert_eq!(output_plaintext, ZERO_16B);
        }

        defmt::info!(
            "Average cycles per 128-bit decrypt: {}",
            total_elapsed / NUM_ECB_128
        );
    }

    #[test]
    fn decrypt_ecb_256(aes: &mut Aes) {
        let mut total_elapsed: u32 = 0;

        for (plaintext, ciphertext) in ECB_PT_CT_256.iter() {
            let mut output_plaintext: [u32; 4] = [0; 4];
            total_elapsed += stopwatch(|| {
                unwrap!(aes.decrypt_ecb(&ZERO_32B, ciphertext, &mut output_plaintext))
            });
            defmt::assert_eq!(&output_plaintext, plaintext);
        }

        for (key, ciphertext) in ECB_KEY_CT_256.iter() {
            let mut output_plaintext: [u32; 4] = [0; 4];
            total_elapsed +=
                stopwatch(|| unwrap!(aes.decrypt_ecb(key, ciphertext, &mut output_plaintext)));
            defmt::assert_eq!(output_plaintext, ZERO_16B);
        }

        defmt::info!(
            "Average cycles per 256-bit decrypt: {}",
            total_elapsed / NUM_ECB_256
        );
    }

    #[test]
    fn decrypt_ecb_inplace_256(aes: &mut Aes) {
        let mut total_elapsed: u32 = 0;

        for (plaintext, ciphertext) in ECB_PT_CT_256.iter() {
            let mut output_plaintext: [u32; 4] = *ciphertext;
            total_elapsed +=
                stopwatch(|| unwrap!(aes.decrypt_ecb_inplace(&ZERO_32B, &mut output_plaintext)));
            defmt::assert_eq!(&output_plaintext, plaintex


to your project, if you want to use the default example drivers, add the /example directory to your project.

### Usage

You can refer to the examples in the /example directory to complete your own driver. If you want to use the default programming examples, here's how to use them.

#### example basic

```C
#include "driver_hmc5883l_basic.h"

uint8_t res;
uint8_t i;
float m_gauss[3];

res = hmc5883l_basic_init();
if (res != 0)
{
    return 1;
}

...

for (i = 0; i < 3; i++)
{
    hmc5883l_interface_delay_ms(1000);
    res = hmc5883l_basic_read((float *)m_gauss);
    if (res != 0)
    {
        (void)hmc5883l_basic_deinit();

        return 1;
    }
    hmc5883l_interface_debug_print("hmc5883l: x is %0.3f.\n", m_gauss[0]);
    hmc5883l_interface_debug_print("hmc5883l: y is %0.3f.\n", m_gauss[1]);
    hmc5883l_interface_debug_print("hmc5883l: z is %0.3f.\n", m_gauss[2]);

    ...

}

...

(void)hmc5883l_basic_deinit();

return 0;
```

#### example shot

```C
#include "driver_hmc5883l_shot.h"

uint8_t res;
uint8_t i;
float m_gauss[3];

res = hmc5883l_shot_init();
if (res != 0)
{
    return 1;
}

...

for (i = 0; i < 3; i++)
{
    hmc5883l_interface_delay_ms(1000);
    res = hmc5883l_shot_read((float *)m_gauss);
    if (res != 0)
    {
        (void)hmc5883l_shot_deinit();

        return 1;
    }
    hmc5883l_interface_debug_print("hmc5883l: x is %0.3f.\n", m_gauss[0]);
    hmc5883l_interface_debug_print("hmc5883l: y is %0.3f.\n", m_gauss[1]);
    hmc5883l_interface_debug_print("hmc5883l: z is %0.3f.\n", m_gauss[2]);

    ...

}

...

(void)hmc5883l_shot_deinit();

return 0;
```

### Document

Online documents: [https://www.libdriver.com/docs/hmc5883l/index.html](https://www.libdriver.com/docs/hmc5883l/index.html).

Offline documents: /doc/html/index.html.

### Contributing

Please refer to CONTRIBUTING.md.

### License

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

Permission is hereby granted, free of charge, to any person obtaining a copy

of this software and associated documentation files (the "Software"), to deal

in the Software without restriction, including without limitation the rights

to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

copies of the Software, and to permit persons to whom the Software is

furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all

copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER


-text-color: #777700;
@summary-label-discarded-bg: #DDDDDD;
@summary-label-discarded-border-color: darken(@summary-label-discarded-bg, 25%);
@summary-label-discarded-text-color: #555555;
@summary-label-archived-bg: #FAFAFA;
@summary-label-archived-border-color: darken(@summary-label-archived-bg, 25%);
@summary-label-archived-text-color: #555555;
@summary-label-muted-bg: #DDDDDD;
@summary-label-muted-border-color: darken(@summary-label-muted-bg, 25%);
@summary-label-muted-text-color: #555555;

// New review request page
@new-review-request-bg: #FFFFFF;
@new-review-request-commit-icon-color: #888;
@new-review-request-commit-info-color: #666;
@new-review-request-jump-to-commit-color: #71A6E2;
@new-review-request-summary-posted-color: #777;

/**
 * Mobile sidebar definitions.
 *
 * Deprecated:
 *     4.0:
 *     These have been replaced by definitions in
 *     ``#rb-ns-ui.page-sidebar.mobile-menu`` or by the page theme.
 */
@mobile-menu-bg-color: transparent;
@mobile-menu-text-color: black;
@mobile-menu-border-color: transparent;
@mobile-menu-header-bg-color: transparent;
@mobile-menu-header-border-color: transparent;
@mobile-menu-footer-height: #rb-ns-ui.page-sidebar.mobile-menu[@footer-height];
@mobile-menu-header-height: #rb-ns-ui.page-sidebar.mobile-menu[@header-height];
@mobile-navbar-width: #rb-ns-ui.page-sidebar.mobile-menu[@width];

@mobile-back-forward-link-color: #444;
@mobile-medium-width-720: 720px;

// Trophy banner
@trophy-banner-bg-color: #fdf2a0;

// Infoboxes
@infobox-padding: 0.75em;
@infobox-bg-color: #F9F9F9;
@infobox-border-color: #666666;
@infobox-border-radius: 3px;
@infobox-inner-border-radius: 2px;
@infobox-header-font-size: 1.4em;
@infobox-hover-item-content-padding-horiz: 6px;
@infobox-hover-item-content-padding-vert: 4px;
@infobox-hover-item-content-offset-top: 20px;
@infobox-item-small-icon-size: 16px;

@user-infobox-avatar-size: 128px;

// Drag-and-drop overlays
@dnd-overlay-background: rgba(0, 0, 0, 0.8);
@dnd-overlay-border: solid 2px grey;
@dnd-overlay-text-color: #dddddd;
@dnd-overlay-font-size: 150%;

// Deprecated as of Review Board 4.0
@dark-blue: #3465A4;
@dark-grey: #5C5C5C;
@dark-yellow: #A89C00;
@grey: #D0D0D0;
@light-blue: #rb-ns-ui.colors[@blue-70];
@light-grey: #EAEAEA;
@light-yellow: #FFF47C;

@import (reference) "mixins/gradients.less";
@import (reference) "mixins/style.less";
/**
 * Styles, variables, and mixins for the rb-c-content-header component.
 */
@import (reference) "rb/css/ui/colors.less";
@import (reference) "rb/css/ui/page-content-box.less";

#rb-ns-ui() {
  .content-header() {
    @mobile-main-font-size: 130%;
    @main-font-size: 120%;
    @sub-font-size: 110%;

    @spacing: 1em;

    @title-color: #rb-ns-ui.colors[@grey-20];

    /**
     * Add styles to the current element to make it resemble a header title.
     *
     * This is available to other components where usi


// Copyright (c) 2003-2013 SIL International
// This software is licensed under the LGPL, version 2.1 or later
// (http://www.gnu.org/licenses/lgpl-2.1.html)
//
// File: VectorReferenceView.cs
// Responsibility: Steve McConnel
// Last reviewed:
//
// <remarks>
// borrowed and hacked from PhoneEnvReferenceView
// </remarks>

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using System.Diagnostics;
using System.Xml;
using SIL.LCModel;
using SIL.LCModel.DomainServices;
using SIL.LCModel.Infrastructure;
using SIL.LCModel.Application;
using SIL.FieldWorks.Common.RootSites;
using SIL.FieldWorks.Common.ViewsInterfaces;
using SIL.FieldWorks.Common.Framework.DetailControls.Resources;
using SIL.LCModel.Core.Cellar;
using SIL.LCModel.Core.Text;
using SIL.LCModel.Core.KernelInterfaces;
using SIL.FieldWorks.Common.FwUtils;
using SIL.Utils;
using XCore;

namespace SIL.FieldWorks.Common.Framework.DetailControls
{
	/// <summary>
	/// Main class for displaying the VectorReferenceSlice.
	/// </summary>
	public class VectorReferenceView : ReferenceViewBase
	{
		#region Constants and data members

		// View frags.
		public const int kfragTargetVector = 1;
		public const int kfragTargetObj = 2;

		protected VectorReferenceVc m_VectorReferenceVc;
		protected string m_displayWs;

		internal XmlNode ConfigurationNode { get; set; }

		private string m_textStyle;

		/// <summary>
		/// This allows the view to communicate size changes to the embedding slice.
		/// </summary>
		public event FwViewSizeChangedEventHandler ViewSizeChanged;

		#endregion // Constants and data members

		#region Construction, initialization, and disposal

		public VectorReferenceView()
		{
			// This call is required by the Windows Form Designer.
			InitializeComponent();
		}

		public void Initialize(ICmObject rootObj, int rootFlid, string rootFieldName, LcmCache cache, string displayNameProperty,
			Mediator mediator, string displayWs)
		{
			CheckDisposed();
			m_displayWs = displayWs;
			Initialize(rootObj, rootFlid, rootFieldName, cache, displayNameProperty, mediator);
		}

		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		protected override void Dispose(bool disposing)
		{
			//Debug.WriteLineIf(!disposing, "****************** " + GetType().Name + " 'disposing' is false. ******************");
			// Must not be run more than once.
			if (IsDisposed)
				return;

			base.Dispose(disposing);

			if (disposing)
			{
			}
			m_VectorReferenceVc = null;
			m_rootObj = null;
			m_displayNameProperty = null;
		}

		public void OnMoveTargetDownInSequence(object commandObject)
		{

		}

		public void OnMoveTargetUpInSequence(object commandObject)
		{

		}

		/// <summary>
		/// Reload the vector in the root box, presumably after it's been modified by a chooser.
		/// </summary>
		public virtual void ReloadVector()
		{
			CheckDisposed();
			m_rootb.SetRootObject(m_rootObj == null ? 0 : m_rootObj.Hvo, m_VectorReferenceVc, kfragTargetVector, m_rootb.Stylesheet);
		}

		/// <summary>
		/// Get any text styles from configuration node (which is now available; it was not at construction)
		/// </summa


务将都是云原生应用，并将为在 CI/CD 管道中使用定义 Kubernetes 部署规范。此外，每个服务将在容器内运行，并可以根据负载进行横向扩展。

gRPC 需要一个服务器地址来拨打以调用服务功能。Kubernetes 的发现系统非常适合查找正确的地址，因为服务器地址是服务规范中定义的微服务的服务名称。假设您对服务有一个合适的命名约定。在这种情况下，消费者和服务之间也有完美的集成，无需依赖服务发现产品来查看特定服务的实际地址。

每个服务可以有不同的行为，例如资源请求、缩放因子、语言运行时等。再次强调，它们只是 Kubernetes 部署中的配置，可以为每个服务进行适当配置。例如，假设产品服务需要比其他服务更多的容量或缩放因子，因为大多数客户在白天搜索和查看产品。您不需要像在单体应用程序中那样同时扩展 Kubernetes 中的所有服务。这可以通过为特定服务添加缩放因子和资源容量来处理。

每个服务的主要输出将是一个云原生应用，这意味着您可以将此服务部署到任何其他容器运行时，例如 华为云 CCE、阿里云容器服务等，甚至用于本地开发的 Docker，只需稍作修改。

CI/CD

在微服务环境中，有许多操作适合自动化。服务工件构建、特定语言的 gRPC 存根生成、测试、代码质量检查和服务部署都是一些众所周知的例子。对于这个分布式系统，自动化程度越高，开发生命周期中的压力就越小。

您可以轻松使用 gRPC 工具在本地环境中生成存根，但在将更改推送到远程仓库时生成它们不是更好吗？您还可以生成工件，以便在将它们合并到主分支后将其部署到实验或稳定环境。现代版本控制系统（VCS）提供商，如 GitHub、GitLab 和 Gitee，已经具备这种集成，因此对于这种自动化级别，所需的自定义实现并不多。

CI/CD 作业执行后绿色勾选并不意味着一切正常；应该有办法检查是否使用了正确的机制。良好的单元测试覆


> list = await engine.getSpeaker(
        MLTtsConstants.TTS_EN_US,
      );
      for (MLTtsSpeaker item in list) {
        setState(() => _events.add(item.name));
      }
    } on Exception catch (e) {
      exceptionDialog(context, e.toString());
    }
  }

  void getSpeakers() async {
    try {
      final List<MLTtsSpeaker> list = await engine.getSpeakers();
      for (MLTtsSpeaker item in list) {
        setState(() => _events.add(item.name));
      }
    } on Exception catch (e) {
      exceptionDialog(context, e.toString());
    }
  }

  void isLangAvailable() async {
    try {
      final int res = await engine.isLanguageAvailable(
        MLTtsConstants.TTS_EN_US,
      );
      setState(() => _events.add(res.toString()));
    } on Exception catch (e) {
      exceptionDialog(context, e.toString());
    }
  }

  void pause() {
    try {
      engine.pause();
    } on Exception catch (e) {
      exceptionDialog(context, e.toString());
    }
  }

  void resume() {
    try {
      engine.resume();
    } on Exception catch (e) {
      exceptionDialog(context, e.toString());
    }
  }

  void stop() {
    try {
      engine.stop();
    } on Exception catch (e) {
      exceptionDialog(context, e.toString());
    }
  }

  void shutdown() {
    try {
      engine.shutdown();
    } on Exception catch (e) {
      exceptionDialog(context, e.toString());
    }
  }

  void speak(String text) async {
    final MLTtsConfig config = MLTtsConfig(
      language: MLTtsConstants.TTS_EN_US,
      synthesizeMode: MLTtsConstants.TTS_ONLINE_MODE,
      text: text,
    );
    try {
      final String res = await engine.speak(config);
      setState(() => _events.add('speak result: $res'));
    } on Exception catch (e) {
      exceptionDialog(context, e.toString());
    }
  }

  // Listeners
  void _onError(String taskId, MLTtsError err) {
    setState(() {
      _events.add(
        'onError: $taskId  ${err.errorMsg}  ${err.errorId}',
      );
    });
  }

  void _onEvent(String taskId, int eventId) {
    setState(() {
      _events.add(
        'onEvent: $taskId  $taskId  $eventId',
      );
    });
  }

  void _onAudioAvailable(
    String taskId,
    MLTtsAudioFragment audioFragment,
    int offset,
  ) {
    setState(() {
      _events.add(
        'audio available: ${audioFragment.audioFormat}  offset: $offset',
      );
    });
  }

  void _onRangeStart(String taskId, int start, int end) {
    setState(() {
      _events.add(
        'range start & end: $start  $end',
      );
    });
  }

  void _onWarn(String taskId, MLTtsWarn warn) {
    setState(() {
      _events.add(
        'onWarn: ${warn.warnMsg}',
      );
    });
  }
}
/*
    Copyright 2020-2024. Huawei Technologies Co., Ltd. All rights reserved.

    Licensed under the Apache License, Version 2.0 (the "License")
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        https://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific lan


WidgetsBlank object to its proto representation.
func MonitoringAlphaDashboardGridLayoutWidgetsBlankToProto(o *alpha.DashboardGridLayoutWidgetsBlank) *alphapb.MonitoringAlphaDashboardGridLayoutWidgetsBlank {
	if o == nil {
		return nil
	}
	p := &alphapb.MonitoringAlphaDashboardGridLayoutWidgetsBlank{}
	return p
}

// DashboardGridLayoutWidgetsLogsPanelToProto converts a DashboardGridLayoutWidgetsLogsPanel object to its proto representation.
func MonitoringAlphaDashboardGridLayoutWidgetsLogsPanelToProto(o *alpha.DashboardGridLayoutWidgetsLogsPanel) *alphapb.MonitoringAlphaDashboardGridLayoutWidgetsLogsPanel {
	if o == nil {
		return nil
	}
	p := &alphapb.MonitoringAlphaDashboardGridLayoutWidgetsLogsPanel{}
	p.SetFilter(dcl.ValueOrEmptyString(o.Filter))
	sResourceNames := make([]string, len(o.ResourceNames))
	for i, r := range o.ResourceNames {
		sResourceNames[i] = r
	}
	p.SetResourceNames(sResourceNames)
	return p
}

// DashboardMosaicLayoutToProto converts a DashboardMosaicLayout object to its proto representation.
func MonitoringAlphaDashboardMosaicLayoutToProto(o *alpha.DashboardMosaicLayout) *alphapb.MonitoringAlphaDashboardMosaicLayout {
	if o == nil {
		return nil
	}
	p := &alphapb.MonitoringAlphaDashboardMosaicLayout{}
	p.SetColumns(dcl.ValueOrEmptyInt64(o.Columns))
	sTiles := make([]*alphapb.MonitoringAlphaDashboardMosaicLayoutTiles, len(o.Tiles))
	for i, r := range o.Tiles {
		sTiles[i] = MonitoringAlphaDashboardMosaicLayoutTilesToProto(&r)
	}
	p.SetTiles(sTiles)
	return p
}

// DashboardMosaicLayoutTilesToProto converts a DashboardMosaicLayoutTiles object to its proto representation.
func MonitoringAlphaDashboardMosaicLayoutTilesToProto(o *alpha.DashboardMosaicLayoutTiles) *alphapb.MonitoringAlphaDashboardMosaicLayoutTiles {
	if o == nil {
		return nil
	}
	p := &alphapb.MonitoringAlphaDashboardMosaicLayoutTiles{}
	p.SetXPos(dcl.ValueOrEmptyInt64(o.XPos))
	p.SetYPos(dcl.ValueOrEmptyInt64(o.YPos))
	p.SetWidth(dcl.ValueOrEmptyInt64(o.Width))
	p.SetHeight(dcl.ValueOrEmptyInt64(o.Height))
	p.SetWidget(MonitoringAlphaDashboardMosaicLayoutTilesWidgetToProto(o.Widget))
	return p
}

// DashboardMosaicLayoutTilesWidgetToProto converts a DashboardMosaicLayoutTilesWidget object to its proto representation.
func MonitoringAlphaDashboardMosaicLayoutTilesWidgetToProto(o *alpha.DashboardMosaicLayoutTilesWidget) *alphapb.MonitoringAlphaDashboardMosaicLayoutTilesWidget {
	if o == nil {
		return nil
	}
	p := &alphapb.MonitoringAlphaDashboardMosaicLayoutTilesWidget{}
	p.SetTitle(dcl.ValueOrEmptyString(o.Title))
	p.SetXyChart(MonitoringAlphaDashboardMosaicLayoutTilesWidgetXyChartToProto(o.XyChart))
	p.SetScorecard(MonitoringAlphaDashboardMosaicLayoutTilesWidgetScorecardToProto(o.Scorecard))
	p.SetText(MonitoringAlphaDashboardMosaicLayoutTilesWidgetTextToProto(o.Text))
	p.SetBlank(MonitoringAlphaDashboardMosaicLayoutTilesWidgetBlankToProto(o.Blank))
	p.SetLogsPanel(MonitoringAlphaDashboardMosaicLayoutTilesWidgetLogsPanelToProto(o.LogsPanel))
	return p
}

// DashboardMosaicLayoutTilesWidgetXyChartToProto co


	events, _, err := client.Issues.ListIssueTimeline(ctx, "o", "r", 1, opt)
	if err != nil {
		t.Errorf("Issues.ListIssueTimeline returned error: %v", err)
	}

	want := []*Timeline{{ID: Ptr(int64(1))}}
	if !cmp.Equal(events, want) {
		t.Errorf("Issues.ListIssueTimeline = %+v, want %+v", events, want)
	}

	const methodName = "ListIssueTimeline"
	testBadOptions(t, methodName, func() (err error) {
		_, _, err = client.Issues.ListIssueTimeline(ctx, "\n", "\n", -1, opt)
		return err
	})

	testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
		got, resp, err := client.Issues.ListIssueTimeline(ctx, "o", "r", 1, opt)
		if got != nil {
			t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
		}
		return resp, err
	})
}

func TestSource_Marshal(t *testing.T) {
	t.Parallel()
	testJSONMarshal(t, &Source{}, "{}")

	u := &Source{
		ID:  Ptr(int64(1)),
		URL: Ptr("url"),
		Actor: &User{
			Login:     Ptr("l"),
			ID:        Ptr(int64(1)),
			NodeID:    Ptr("n"),
			URL:       Ptr("u"),
			ReposURL:  Ptr("r"),
			EventsURL: Ptr("e"),
			AvatarURL: Ptr("a"),
		},
		Type:  Ptr("type"),
		Issue: &Issue{ID: Ptr(int64(1))},
	}

	want := `{
		"id": 1,
		"url": "url",
		"actor": {
			"login": "l",
			"id": 1,
			"node_id": "n",
			"avatar_url": "a",
			"url": "u",
			"events_url": "e",
			"repos_url": "r"
		},
		"type": "type",
		"issue": {
			"id": 1
		}
	}`

	testJSONMarshal(t, u, want)
}

func TestTimeline_Marshal(t *testing.T) {
	t.Parallel()
	testJSONMarshal(t, &Timeline{}, "{}")

	u := &Timeline{
		ID:        Ptr(int64(1)),
		URL:       Ptr("url"),
		CommitURL: Ptr("curl"),
		Actor: &User{
			Login:           Ptr("l"),
			ID:              Ptr(int64(1)),
			URL:             Ptr("u"),
			AvatarURL:       Ptr("a"),
			GravatarID:      Ptr("g"),
			Name:            Ptr("n"),
			Company:         Ptr("c"),
			Blog:            Ptr("b"),
			Location:        Ptr("l"),
			Email:           Ptr("e"),
			Hireable:        Ptr(true),
			Bio:             Ptr("b"),
			TwitterUsername: Ptr("t"),
			PublicRepos:     Ptr(1),
			Followers:       Ptr(1),
			Following:       Ptr(1),
			CreatedAt:       &Timestamp{referenceTime},
			SuspendedAt:     &Timestamp{referenceTime},
		},
		Event:     Ptr("event"),
		CommitID:  Ptr("cid"),
		CreatedAt: &Timestamp{referenceTime},
		Label:     &Label{ID: Ptr(int64(1))},
		Assignee: &User{
			Login:           Ptr("l"),
			ID:              Ptr(int64(1)),
			URL:             Ptr("u"),
			Avat


e, 10241, 9728 );
			gl.texParameteri( type, 10240, 9728 );

			for ( let i = 0; i < count; i ++ ) {

				gl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );

			}

			return texture;

		}

		const emptyTextures = {};
		emptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );
		emptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );

		// init

		colorBuffer.setClear( 0, 0, 0, 1 );
		depthBuffer.setClear( 1 );
		stencilBuffer.setClear( 0 );

		enable( 2929 );
		depthBuffer.setFunc( LessEqualDepth );

		setFlipSided( false );
		setCullFace( CullFaceBack );
		enable( 2884 );

		setBlending( NoBlending );

		//

		function enable( id ) {

			if ( enabledCapabilities[ id ] !== true ) {

				gl.enable( id );
				enabledCapabilities[ id ] = true;

			}

		}

		function disable( id ) {

			if ( enabledCapabilities[ id ] !== false ) {

				gl.disable( id );
				enabledCapabilities[ id ] = false;

			}

		}

		function useProgram( program ) {

			if ( currentProgram !== program ) {

				gl.useProgram( program );

				currentProgram = program;

				return true;

			}

			return false;

		}

		const equationToGL = {
			[ AddEquation ]: 32774,
			[ SubtractEquation ]: 32778,
			[ ReverseSubtractEquation ]: 32779
		};

		if ( isWebGL2 ) {

			equationToGL[ MinEquation ] = 32775;
			equationToGL[ MaxEquation ] = 32776;

		} else {

			const extension = extensions.get( 'EXT_blend_minmax' );

			if ( extension !== null ) {

				equationToGL[ MinEquation ] = extension.MIN_EXT;
				equationToGL[ MaxEquation ] = extension.MAX_EXT;

			}

		}

		const factorToGL = {
			[ ZeroFactor ]: 0,
			[ OneFactor ]: 1,
			[ SrcColorFactor ]: 768,
			[ SrcAlphaFactor ]: 770,
			[ SrcAlphaSaturateFactor ]: 776,
			[ DstColorFactor ]: 774,
			[ DstAlphaFactor ]: 772,
			[ OneMinusSrcColorFactor ]: 769,
			[ OneMinusSrcAlphaFactor ]: 771,
			[ OneMinusDstColorFactor ]: 775,
			[ OneMinusDstAlphaFactor ]: 773
		};

		function setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {

			if ( blending === NoBlending ) {

				if ( currentBlendingEnabled ) {

					disable( 3042 );
					currentBlendingEnabled = false;

				}

				return;

			}

			if ( ! currentBlendingEnabled ) {

				enable( 3042 );
				currentBlendingEnabled = true;

			}

			if ( blending !== CustomBlending ) {

				if ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {

					if ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {

						gl.blendEquation( 32774 );

						currentBlendEquation = AddEquation;
						currentBlendEquationAlpha = AddEquation;

					}

					if ( premultipliedAlpha ) {

						switch ( blending ) {

							case NormalBlending:
								gl.blendFuncSeparate( 1, 771, 1, 771 );
								break;

							case AdditiveBlending:
								gl.blendFunc( 1, 1 );
								break;

							case SubtractiveBlending:
								gl.blendFuncSeparate( 0, 0, 769, 771 );
								break;

							case MultiplyBlending:
								gl.blendFuncSeparate( 0, 768, 0, 770 );
								break;

							default:
								console.error( 'THREE.Web