|
|搜索引擎|请列举三家国内的互联网公司名称。|
|营养学|列出10种最常见的富含蛋白质的食物|
|电影|请列举5部由克里斯托弗·诺兰执导的电影|
|历史|请简述南非种族隔离制度的历史背景和相关事件|
|人工智能|你认为人工智能会对就业市场产生怎样的影响？|
|健身|请推荐适合女性练习的增肌训练计划|
|时尚|介绍一下今年春季最流行的发型款式|
|旅游|请推荐三个适合全家出行的境外旅游目的地|
|医学|什么是高血压，有哪些可能引起该疾病的因素？|
|音乐|请推荐三首值得一听的蓝调音乐|
|心理学|如何帮助社交恐惧症患者减轻症状？|
|时间管理|请列举五种帮助人们提高时间管理能力的方法。|
|旅游规划|如何在一个月内计划一次完美的欧洲之旅？|
|医学研究|针对癌症患者的新型药物研究中，哪些关键因素有可能导致实验失败？|
|科技趋势|未来5年中，人工智能领域的哪些趋势将成为关注焦点，并产生重大影响？|
|投资理财|在目前的市场环境下，应该如何合理配置个人的投资组合？|
|品牌营销|如果你是一家刚刚创立的小型企业，如何通过社交媒体平台制定具有吸引力的品牌营销策略？|
|教育改革|当前国内的教育体制存在哪些问题，应该如何进行有效改革？|
|人际沟通|如何提高自己的人际沟通能力，让自己更加受人欢迎并获得成功？|
|健康生活|在日常生活中，有哪些简单易行的方法可以帮助人们保持健康的生活方式？|
|环境保护|当前全球气候变化对人类造成了严重威胁，我们应该采取哪些措施来保护环境和地球？|
| 商品推荐 | 帮我推荐一款适合夏天穿的清爽连衣裙。 |
| 文化了解 | 你能介绍一下西班牙的传统饮食文化吗？ |
| 知识查询 | 请问明代的青花瓷为什么能够成为世界陶瓷史上的经典之作？ |
| 音乐推荐 | 最近有哪些值得一听的华语新歌推荐吗？ |
| 编辑修改 | 请�


void> test_namedArg_plainText() async {
    content = '''
class A { const A({int one}); }
@A(^)
void f() { }
''';

    await initialize();

    await openFile(mainFileUri, code.code);
    var res = await getCompletion(mainFileUri, code.position.position);
    expect(res.any((c) => c.label == 'one: '), isTrue);
    var item = res.singleWhere((c) => c.label == 'one: ');
    expect(
      item.insertTextFormat,
      anyOf(equals(InsertTextFormat.PlainText), isNull),
    );
    expect(item.insertText, isNull);
    var textEdit = toTextEdit(item.textEdit!);
    expect(textEdit.newText, item.label);
    var updated = applyTextEdits(code.code, [toTextEdit(item.textEdit!)]);
    expect(updated, contains('one: '));
  }

  Future<void> test_namedArg_snippetStringSelection_endOfString() async {
    content = '''
class A { const A({int one}); }
@A(^)
void f() { }
''';

    setCompletionItemSnippetSupport();
    await initialize();

    await openFile(mainFileUri, code.code);
    var res = await getCompletion(mainFileUri, code.position.position);
    expect(res.any((c) => c.label == 'one: '), isTrue);
    var item = res.singleWhere((c) => c.label == 'one: ');
    // As the selection is the end of the string, there's no need for a snippet
    // here. Since the insert text is also the same as the label, it does not
    // need to be provided.
    expect(item.insertTextFormat, isNull);
    expect(item.insertText, isNull);
    var textEdit = toTextEdit(item.textEdit!);
    expect(textEdit.newText, equals('one: '));
    expect(
      textEdit.range,
      equals(Range(start: code.position.position, end: code.position.position)),
    );
  }

  Future<void>
  test_namedArgTrailing_snippetStringSelection_insideString() async {
    content = '''
void f({int one, int two}) {
  f(
    ^
    two: 2,
  );
}
''';

    setCompletionItemSnippetSupport();
    await initialize();

    await openFile(mainFileUri, code.code);
    var res = await getCompletion(mainFileUri, code.position.position);
    expect(res.any((c) => c.label == 'one: '), isTrue);
    var item = res.singleWhere((c) => c.label == 'one: ');
    // Ensure the snippet comes through in the expected format with the expected
    // placeholder.
    expect(item.insertTextFormat, equals(InsertTextFormat.Snippet));
    expect(item.insertText, isNull);
    var textEdit = toTextEdit(item.textEdit!);
    expect(textEdit.newText, equals(r'one: $0,'));
    expect(
      textEdit.range,
      equals(Range(start: code.position.position, end: code.position.position)),
    );
  }

  Future<void> test_nonAnalyzedFile() async {
    var readmeFilePath = convertPath(join(projectFolderPath, 'README.md'));
    newFile(readmeFilePath, '');
    await initialize();

    var res = await getCompletion(
      pathContext.toUri(readmeFilePath),
      startOfDocPos,
    );
    expect(res, isEmpty);
  }

  Future<void> test_noOperators_propertyAccessExternal() async {
    content = '''
class A {
  int operator-() => 0;
  int operator-(int other) => 0;
}

void f() {
  A().^
}
''';

    await initialize();

    await openFile(mainFileUri, code.code);
    var completions = await getCompletion(mainFileUri, code.position.position);


WLWXGHFRPPDQGVDUH XVHG IRU 5$V '$$ YHUWLFDO JXLGDQFH PD\ LQYROYH DOWLWXGH '$$ JXLGDQFH EXW
ZRXOGQHHGWREHFRQVLVWHQWZLWKWKH5$WRHQVXUHWLPHO\FRPSOLDQFHZLWKWKH5$
)RU&ODVVV\VWHPVKRUL]RQWDO'$$JXLGDQFH**VKDOO**WDNHRZQ7&$6,,&RUUHFWLYH
5$PDQHXYHUVLQWRDFFRXQWWRHQVXUHLQPXOWLDLUFUDIWHQFRXQWHUKRUL]RQWDOJXLGDQFHLV
SURYLGHGFRQWLQXRXVO\WKURXJKWKH&RUUHFWLYH5$IRUUHPDLQLQJWUDIILFQRWFDXVLQJWKH &RUUHFWLYH5$
2QH PHDQV RI DFKLHYLQJ WKHVH UHTXLUHPHQWV LV GXULQJ DQ DFWLYH &RUUHFWLYH 5$ WKH LQWUXGHUVFDXVLQJWKH5$LVH[FOXGHGIURPWKHKRUL]RQWDODQGYHUWLFDO'$$JXLGDQFH SURFHVVLQJDVGRFXPHQWHGLQWKHUHIHUHQFHLPSOHPHQWDWLRQ$SSHQGL[*

## Note:

7KHVH UHTXLUHPHQWV DUH LQWHQGHG WR DFFRXQW IRU PXOWLDLUFUDIW HQFRXQWHUV
SDUWLFXODUO\WKRVHLQYROYLQJDLUFUDIWQRWGHWHFWHGE\WKH7&$6V\VWHPDQGWR HQVXUHFRPSOLDQFHZLWK7&$6,,5$V7KHUDWLRQDOHIRULQKLELWLQJKRUL]RQWDO JXLGDQFHIRUWKHDLUFUDIWFDXVLQJWKH&RUUHFWLYH5$LVWKHDVVXPSWLRQWKDWWKH 3,&ZLOOUHVROYHWKHHQFRXQWHUZLWKWKDWDLUFUDIWE\IROORZLQJWKH5$YHUWLFDO

YHORFLW\ JXLGDQFH 7KHUHIRUH '$$ KRUL]RQWDO JXLGDQFH ZLOO EH SURYLGHG FRQWLQXRXVO\ WKURXJK WKH &RUUHFWLYH 5$ SUREOHP IRU UHPDLQLQJ WUDIILF QRW FDXVLQJWKH&RUUHFWLYH5$7KHUDWLRQDOHIRULQKLELWLQJYHUWLFDO'$$JXLGDQFH LV WR DYRLG SURYLGLQJ FRQWUDGLFWLQJ JXLGDQFH EHWZHHQ WKH '$$ DQG 7&$6 V\VWHPV )RU H[DPSOH LQ D PXOWLLQWUXGHU HQFRXQWHU '$$ YHUWLFDO JXLGDQFH FRXOG SURYLGH GHVFHQGLQJ WUDMHFWRULHV DV LQYDOLG PDQHXYHUV GXH WR D QRQ FRRSHUDWLYHWDUJHWEHORZWKHRZQVKLSZKLOHWKH7&$65$LVWRGHVFHQG

   7&$6,,UHJXODWLRQVDQGJXLGDQFHDOORZEXWGRQRWUHTXLUHSLORWVWRPDQHXYHU
   KRUL]RQWDOO\ GXULQJ D YHUWLFDO 5$ DV ORQJ DV WKH 7&$6,,GLUHFWHG YHUWLFDO
   YHORFLW\FDQEHPDLQWDLQHG

   7KH GHSLFWLRQ RI SUHGLFWHG FRQIOLFW VSDFH LQ


X
	movhpd	0 * SIZE(X), %xmm0
	addl	INCX, X
	mulpd	ALPHA, %xmm0

	movsd	0 * SIZE(YY), %xmm6
	addl	INCY, YY
	movhpd	0 * SIZE(YY), %xmm6
	addl	INCY, YY
	addpd	%xmm6, %xmm0

	movsd	0 * SIZE(X), %xmm1
	addl	INCX, X
	movhpd	0 * SIZE(X), %xmm1
	addl	INCX, X
	mulpd	ALPHA, %xmm1

	movsd	0 * SIZE(YY), %xmm6
	addl	INCY, YY
	movhpd	0 * SIZE(YY), %xmm6
	addl	INCY, YY
	addpd	%xmm6, %xmm1

	movsd	0 * SIZE(X), %xmm2
	addl	INCX, X
	movhpd	0 * SIZE(X), %xmm2
	addl	INCX, X
	mulpd	ALPHA, %xmm2

	movsd	0 * SIZE(YY), %xmm6
	addl	INCY, YY
	movhpd	0 * SIZE(YY), %xmm6
	addl	INCY, YY
	addpd	%xmm6, %xmm2

	movsd	0 * SIZE(X), %xmm3
	addl	INCX, X
	movhpd	0 * SIZE(X), %xmm3
	addl	INCX, X
	mulpd	ALPHA, %xmm3

	movsd	0 * SIZE(YY), %xmm6
	addl	INCY, YY
	movhpd	0 * SIZE(YY), %xmm6
	addl	INCY, YY
	addpd	%xmm6, %xmm3

	movsd	%xmm0, 0 * SIZE(Y)
	addl	INCY, Y
	movhpd	%xmm0, 0 * SIZE(Y)
	addl	INCY, Y
	movsd	%xmm1, 0 * SIZE(Y)
	addl	INCY, Y
	movhpd	%xmm1, 0 * SIZE(Y)
	addl	INCY, Y
	movsd	%xmm2, 0 * SIZE(Y)
	addl	INCY, Y
	movhpd	%xmm2, 0 * SIZE(Y)
	addl	INCY, Y
	movsd	%xmm3, 0 * SIZE(Y)
	addl	INCY, Y
	movhpd	%xmm3, 0 * SIZE(Y)
	addl	INCY, Y

	decl	%eax
	jg	.L41
	ALIGN_3

.L45:
	movl	M,  %eax
	andl	$7, %eax
	jle	.L47
	ALIGN_3

.L46:
	movsd	(X), %xmm0
	addl	INCX, X
	mulsd	ALPHA, %xmm0
	addsd	(Y), %xmm0
	movsd	%xmm0, (Y)
	addl	INCY, Y
	decl	%eax
	jg	.L46
	ALIGN_3

.L47:
	popl	%ebp
	popl	%ebx
	popl	%esi
	popl	%edi
	ret

	EPILOGUE


es;
		const inputs = pollutionByInputs * effectOn.inputPollution;
		const investment = (producerInvestment + modules.cost) * time * effectOn.producerTime / Math.max(state.amortizeOver * 3600, 600);
		const producer = pollutionByProducer * effectOn.producerPollution;
		const energy = pollutionByEnergy * effectOn.energyPollution;
		const perItem = (inputs + investment + producer + energy) / items;
		return {
			inputs,
			investment,
			producer,
			energy,
			perItem,
		}
	}

	const availableModules = modules.filter(module => state.available[module.name] && !(module.name.startsWith("productivity") && info.placeable));
	const minIndexForBeacon = availableModules.findIndex(module => !module.name.startsWith("productivity"));
	const slots = producer.slots;
	const beaconSlots = state.beaconSlots[product] || 0;
	for (const module of availableModules) {
		module.cost = getPreviousReport(module.name).pollution.perItem;
	}

	let bestPollution = Infinity;
	let bestModules: ModuleSet = null!;
	const explore = (index: number, size: number, currentModules: ModuleSet) => {
		const pollution = calculatePollution(currentModules);
		if (pollution.perItem < bestPollution) {
			bestPollution = pollution.perItem;
			bestModules = currentModules;
		}

		if (size < slots + beaconSlots) {
			if (size >= slots) {
				index = Math.max(index, minIndexForBeacon);
			}
			for (let i = index; i < availableModules.length; i++) {
				const module = availableModules[i];
				explore(i, size + 1, currentModules.plus(module));
			}
		}
	}
	explore(0, 0, new NoModule());

	return {
		producerName,
		product,
		time,
		pollution: calculatePollution(bestModules),
		bestModules: bestModules.elements,
	}
}class cScore {
    public div: HTMLElement
    private game: Game
    public score: number
    constructor() {
        this.div = document.createElement('score')

        document.body.appendChild(this.div)

    }
    public update() {
        this.score++
        this.div.innerHTML = "Score: " + this.score
        document.cookie = "score=" + this.score
        if(this.score < 0){
            this.score = 0

        }
    }
    public showScore() {

    }
}function applyOperations (nums: number[]): number[] {
    let index = 0;
    for (let i = 0; i < nums.length - 1; i++) {
        if (nums[i] === 0) {
            continue;
        }

        if (nums[i] === nums[i + 1]) {
            nums[index++] = nums[i] * 2;
            nums[i + 1] = 0;
        } else {
            nums[index++] = nums[i];
        }
    }
    if (nums[nums.length - 1] !== 0) {
        nums[index++] = nums[nums.length - 1];
    }

    while (index < nums.length) {
        nums[index++] = 0;
    }
    return nums;
}
import {Tabuleiro } from './gameServer/tabuleiro';
import {Navio, TipoNavio, Orientacao } from './gameServer/navio';
import {Game } from './gameServer/game';
import {Posicao } from './gameServer/posicao';
import {Celula, TipoCelula } from './gameServer/celula';

const io = require('socket.io');

export class WebSocketServer {
    socketsIds : string [] = [];
    players : Player [] = [];
    public io: any;

    public init = (server: any) => {
        this.io = io.listen(server);

        this.io


094d, 0x094d},  // Devanagari Sign Virama  ..Devanagari Sign Virama
        {0x0951, 0x0957},  // Devanagari Stress Sign U..Devanagari Vowel Sign Uu
        {0x0962, 0x0963},  // Devanagari Vowel Sign Vo..Devanagari Vowel Sign Vo
        {0x0981, 0x0981},  // Bengali Sign Candrabindu..Bengali Sign Candrabindu
        {0x09bc, 0x09bc},  // Bengali Sign Nukta      ..Bengali Sign Nukta
        {0x09c1, 0x09c4},  // Bengali Vowel Sign U    ..Bengali Vowel Sign Vocal
        {0x09cd, 0x09cd},  // Bengali Sign Virama     ..Bengali Sign Virama
        {0x09e2, 0x09e3},  // Bengali Vowel Sign Vocal..Bengali Vowel Sign Vocal
        {0x0a01, 0x0a02},  // Gurmukhi Sign Adak Bindi..Gurmukhi Sign Bindi
        {0x0a3c, 0x0a3c},  // Gurmukhi Sign Nukta     ..Gurmukhi Sign Nukta
        {0x0a41, 0x0a42},  // Gurmukhi Vowel Sign U   ..Gurmukhi Vowel Sign Uu
        {0x0a47, 0x0a48},  // Gurmukhi Vowel Sign Ee  ..Gurmukhi Vowel Sign Ai
        {0x0a4b, 0x0a4d},  // Gurmukhi Vowel Sign Oo  ..Gurmukhi Sign Virama
        {0x0a51, 0x0a51},  // Gurmukhi Sign Udaat     ..Gurmukhi Sign Udaat
        {0x0a70, 0x0a71},  // Gurmukhi Tippi          ..Gurmukhi Addak
        {0x0a75, 0x0a75},  // Gurmukhi Sign Yakash    ..Gurmukhi Sign Yakash
        {0x0a81, 0x0a82},  // Gujarati Sign Candrabind..Gujarati Sign Anusvara
        {0x0abc, 0x0abc},  // Gujarati Sign Nukta     ..Gujarati Sign Nukta
        {0x0ac1, 0x0ac5},  // Gujarati Vowel Sign U   ..Gujarati Vowel Sign Cand
        {0x0ac7, 0x0ac8},  // Gujarati Vowel Sign E   ..Gujarati Vowel Sign Ai
        {0x0acd, 0x0acd},  // Gujarati Sign Virama    ..Gujarati Sign Virama
        {0x0ae2, 0x0ae3},  // Gujarati Vowel Sign Voca..Gujarati Vowel Sign Voca
        {0x0b01, 0x0b01},  // ||iya Sign Candrabindu  ..||iya Sign Candrabindu
        {0x0b3c, 0x0b3c},  // ||iya Sign Nukta        ..||iya Sign Nukta
        {0x0b3f, 0x0b3f},  // ||iya Vowel Sign I      ..||iya Vowel Sign I
        {0x0b41, 0x0b44},  // ||iya Vowel Sign U      ..||iya Vowel Sign Vocalic
        {0x0b4d, 0x0b4d},  // ||iya Sign Virama       ..||iya Sign Virama
        {0x0b56, 0x0b56},  // ||iya Ai Length Mark    ..||iya Ai Length Mark
        {0x0b62, 0x0b63},  // ||iya Vowel Sign Vocalic..||iya Vowel Sign Vocalic
        {0x0b82, 0x0b82},  // Tamil Sign Anusvara     ..Tamil Sign Anusvara


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

import numpy as np
import pytest
import scipy
from packaging.version import Version

from cuml.tsa.batched_lbfgs import batched_fmin_lbfgs_b

def rosenbrock(x, a=1, b=100):
    """Famous Rosenbrock example"""

    return (a - x[0]) ** 2 + b * (x[1] - x[0] ** 2) ** 2

def g_rosenbrock(x, a=1, b=100):
    """Gradietn of rosenbrock example"""

    g = np.array(
        [
            -2 * a - 4 * b * x[0] * (-x[0] ** 2 + x[1]) + 2 * x[0],
            b * (-2 * x[0] ** 2 + 2 * x[1]),
        ]
    )

    return g

def batched_rosenbrock(
    x: np.ndarray, num_batches: int, a: np.ndarray, b: np.ndarray
) -> np.ndarray:
    """A batched version of the rosenbrock example"""

    fall = np.zeros(num_batches)
    for i in range(num_batches):
        fall[i] = rosenbrock(x[i * 2 : (i + 1) * 2], a[i], b[i])

    return fall

def g_batched_rosenbrock(
    x: np.ndarray, num_batches: int, a: np.ndarray, b: np.ndarray
) -> np.ndarray:
    """Gradient of the batched rosenbrock example."""
    gall = np.zeros(2 * num_batches)
    for i in range(num_batches):
        gall[i * 2 : (i + 1) * 2] = g_rosenbrock(
            x[i * 2 : (i + 1) * 2], a[i], b[i]
        )

    return gall

@pytest.mark.xfail(
    condition=Version(scipy.__version__) >= Version("1.15"),
    reason="https://github.com/rapidsai/cuml/issues/6210",
)
def test_batched_lbfgs_rosenbrock():
    """Test batched rosenbrock using batched lbfgs implemtnation"""

    num_batches = 5
    np.random.seed(42)
    a = np.random.normal(1, scale=0.1, size=num_batches)
    b = np.random.normal(100, scale=10, size=num_batches)

    def f(x, n=None):
        nonlocal a
        nonlocal b
        nonlocal num_batches

        if n is not None:
            return rosenbrock(x, a[n], b[n])

        fb = batched_rosenbrock(x, num_batches, a, b)
        return fb

    def gf(x, n=None):
        nonlocal a
        nonlocal b
        nonlocal num_batches

        if n is not None:
            return g_rosenbrock(x, a[n], b[n])

        g = g_batched_rosenbrock(x, num_batches, a, b)
        return g

    x0 = np.zeros(2 * num_batches)
    x0[0] = 0.0
    x0[1] = 0.0

    # analytical minimum
    res_true = np.zeros(num_batches * 2)
    for i in range(num_batches):
        res_true[i * 2 : (i + 1) * 2] = np.array([a[i], a[i] ** 2])

    # our new batch-aware l-bfgs optimizer
    res_xk, _, _ = batched_fmin_lbfgs_b(
        f, x0, num_batches, gf, iprint=-1, factr=100
    )
    np.testing.assert_allclose(res_xk, res_true, rtol=1e-5)

if __name__ == "__main__":
    test_batched_lbfgs_rosenbrock()


ursive?(g=(()=>{const e=[];for(const r of t.storedPackages.values())t.tryWorkspaceByLocator(r)||l.structUtils.isVirtualLocator(r)||!o.some(e=>e(r))||e.push(r);return e})(),u="the project"):this.all?(g=s(t.workspaces),u="any workspace"):(g=s([r]),u="this workspace"),A.size>1)throw new p.UsageError(`Patterns ${l.formatUtils.prettyList(e,A,l.formatUtils.Type.CODE)} don't match any packages referenced by ${u}`);if(A.size>0)throw new p.UsageError(`Pattern ${l.formatUtils.prettyList(e,A,l.formatUtils.Type.CODE)} doesn't match any packages referenced by ${u}`);g=l.miscUtils.sortMap(g,e=>l.structUtils.stringifyLocator(e));return(await D.Pk.start({configuration:e,stdout:this.context.stdout,json:this.json},async r=>{var i;for(const n of g){const A=null!==(i=n.version)&&void 0!==i?i:"unknown";t.topLevelWorkspace.manifest.ensureDependencyMeta(l.structUtils.makeDescriptor(n,A)).unplugged=!0,r.reportInfo(c.b.UNNAMED,`Will unpack ${l.structUtils.prettyLocator(e,n)} to ${l.formatUtils.pretty(e,I(n,{configuration:e}),l.formatUtils.Type.PATH)}`),r.reportJson({locator:l.structUtils.stringifyLocator(n),version:A})}await t.topLevelWorkspace.persistManifest(),r.reportSeparator(),await t.install({cache:n,report:r})})).exitCode()}}M.usage=p.Command.Usage({description:"force the unpacking of a list of packages",details:"\n      This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n      A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n      Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n      By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n      This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n    ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies


log.warn("Header row is empty :" + binaryTextFile.getLogiNm());
							break;
						}

						int idx = 0;
						for(String s : hdata) {
							if(idx_binaryName < 0 && (s.trim().equalsIgnoreCase("Binary Name") || s.trim().equalsIgnoreCase("Binary"))) {
								idx_binaryName = idx;
							} else if(idx_checkSum < 0 && (s.trim().equalsIgnoreCase("checksum") || s.trim().equalsIgnoreCase("sha1sum"))) {
								idx_checkSum = idx;
							} else if(idx_tlsh < 0 && (s.trim().equalsIgnoreCase("tlsh"))) {
								idx_tlsh = idx;
							}
							idx ++;
						}
						isHeader = false;
						continue;
					}

					String binaryName, checkSum, tlsh;
					String[] data = line.split("\t", -1);

					if(idx_binaryName > -1 && idx_checkSum > -1 && idx_tlsh > -1) {
						if(data == null) {
							log.warn("unexpected format Bin binary text : " + line);
							continue;
						} else if(data.length < idx_binaryName + 1) {
							log.warn("unexpected format Bin binary text (idx_binaryName index): " + line); continue;
						} else if(data.length < idx_checkSum + 1) {
							log.warn("unexpected format Bin binary text (idx_checkSum index): " + line); continue;
						} else if(data.length < idx_tlsh + 1) {
							log.warn("unexpected format Bin binary text (idx_tlsh index): " + line); continue;
						}
						binaryName = data[idx_binaryName].trim();
						checkSum = data[idx_checkSum].trim();
						tlsh = data[idx_tlsh].trim();

						// OSC-1028 tils가 추출되지 않은 경우 공백
						if(isEmpty(binaryName) || isEmpty(checkSum)/* || isEmpty(tlsh)*/) {
							log.warn("unexpected format Bin binary text : " + line);
							continue;
						}
					} else {
						// binary name을 key로 sha256sum과 tlsh 를 격납한다.
						if(data == null || data.length !=3
								|| isEmpty(data[0]) || isEmpty(data[1])/* || isEmpty(data[2])*/) {
							log.warn("unexpected format Bin binary text : " + line);
							continue;
						}

						binaryName = data[0].trim();
						if(binaryName.endsWith("/") || binaryName.endsWith("\\")) {
							log.warn("unexpected format Bin binary text (is not file) : " + line);
							continue;
						}

						checkSum = data[1].trim();
						tlsh = data[2].trim();
					}

					if(!pathFlag){
						if(binaryName.indexOf("/") > -1) {
							binaryName = binaryName.substring(binaryName.lastIndexOf("/") + 1);
						}
						if(binaryName.indexOf("\\") > -1) {
							binaryName = binaryName.substring(binaryName.lastIndexOf("\\") + 1);
						}
					}
					if(isEmpty(binaryName)) {
						continue;
					}

					loadData.put(binaryName, new String[]{checkSum, avoidNull(tlsh, "0")});
				}
			}
		}
		return loadData;
	}

	@Transactional
	private void addOssComponentByBinaryInfo(List<OssComponents> componentList,
			Map<String, List<BinaryData>> binaryRegInfoMap) {

		for(OssComponents bean : componentList) {
			String binaryName = avoidNull(bean.getBinaryName());


og_line

                if not follow:
                    continue

        except Exception as e:
            logger.error(f"Error reading logs from {full_container_name}: {e}")
            yield f"Error: {str(e)}"
        finally:
            if "process" in locals():
                try:
                    process.terminate()
                    await process.wait()
                except:
                    pass

    async def get_logs_json(
        self,
        container_name: str = "backend_1",
        lines: int = 100,
        since_minutes: int = 60,
    ) -> List[Dict[str, any]]:
        """
        Docker 컨테이너 로그를 JSON 형태로 조회

        Args:
            container_name: 컨테이너 이름
            lines: 조회할 로그 라인 수
            since_minutes: 최근 N분 간의 로그

        Returns:
            파싱된 로그 엔트리 리스트
        """
        since_time = (datetime.now() - timedelta(minutes=since_minutes)).isoformat()

        logs = []
        async for line in self.get_logs(
            container_name=container_name, lines=lines, since=since_time, follow=False
        ):
            # 로그 라인 파싱
            log_entry = self._parse_log_line(line)
            if log_entry:
                logs.append(log_entry)

        return logs

    def _parse_log_line(self, line: str) -> Optional[Dict[str, any]]:
        """
        로그 라인을 파싱하여 구조화된 데이터로 변환

        Args:
            line: 로그 라인

        Returns:
            파싱된 로그 엔트리
        """
        try:
            # 기본 로그 구조
            log_entry = {
                "timestamp": datetime.now().isoformat(),
                "message": line,
                "level": "INFO",
            }

            # 로그 레벨 감지
            if "ERROR" in line or "Exception" in line:
                log_entry["level"] = "ERROR"
            elif "WARNING" in line or "WARN" in line:
                log_entry["level"] = "WARNING"
            elif "DEBUG" in line:
                log_entry["level"] = "DEBUG"
            elif "CRITICAL" in line or "FATAL" in line:
                log_entry["level"] = "CRITICAL"

            # 타임스탬프 추출 시도
            if line.startswith("[") and "]" in line:
                timestamp_end = line.index("]")
                timestamp_str = line[1:timestamp_end]
                try:
                    log_entry["timestamp"] = timestamp_str
                    log_entry["message"] = line[timestamp_end + 1 :].strip()
                except:
                    pass

            return log_entry

        except Exception as e:
            logger.error(f"Error parsing log line: {e}")
            return None

    async def search_logs(
        self, container_name: str, search_term: str, lines: int = 1000
    ) -> List[str]:
        """
        로그에서 특정 텍스트 검색

        Args:
            container_name: 컨테이너 이름
            search_term: 검색어
            lines: 검색할 로그 라인 수

        Returns:
            검색어가 포함된 로그 라인 리스트
        """
        matching_logs = []

        async for line in self.get_logs(
            container_name=container_name, lines=lines, follow=False
        ):
            if search_term.lower() in line.lower():
                matching_logs.append(line)

        return matching_logs

    async def get_error_logs(
        self, container_name: str = "backend_1", lines: int = 100
    ) -> List[str]:
        """
        에러 로그만 필터링하여 조회

        Args:
            container_name: 컨테이너 이름
            lines: 조회할 로그 라인 수

        Returns:
            에러 로그 라인 리스트
        """
        error_keywords = ["ERROR", "Exception", "Traceback", "CRITICAL", "FATAL"]
        error_logs = []

        async for line in self.get_logs(
            container_name=container_name,
            lines=lines * 10,  # 에러를 찾기 위해 더 많은 라인 검색
            follow=False,
        ):
            if any(keyword in line for keyword in error_keywords):
                error_logs.append(line)
                if len(error_logs) >= lines:
                    break

        return error_logs

    async def clear_logs(self, container_name: str) -> bool:
        """
        컨테이너 로그 초기화 (컨테이너 재시작)

        Args:
            container_name: 컨테이너 이름

        Returns:
            성공 여부
        """
        full_container_name = f"{self.container_prefix}_{container_name}"

        try:
            # Docker 컨테이너 재시작
            cmd = ["docker", "restart", full_container_name]
            process = await asyncio.create_subprocess_exec(
                *cmd, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE
            )


ificCode2:
	ld a,GLOBALFLAG_D3_CRYSTALS
	call checkGlobalFlag
	ret z
	; Create spinner if the flag is UNset
	jr ---

;;
roomSpecificCode3:
	call getThisRoomFlags
	bit 6,a
	ret nz
	ld a,TREASURE_MYSTERY_SEEDS
	call checkTreasureObtained
	ret nc
	ld hl,wcc05
	res 1,(hl)
	call getFreeInteractionSlot
	ret nz
	ld (hl),$40
	inc l
	ld (hl),$0a
	ld a,$01
	ld (wDiggingUpEnemiesForbidden),a
	ret

;;
roomSpecificCode7:
	ld a,GLOBALFLAG_GAVE_ROPE_TO_RAFTON
	call checkGlobalFlag
	ret z
	call getThisRoomFlags
	bit 6,a
	ret nz
	ld a,MUS_RALPH
	ld (wActiveMusic2),a
	ret

;;
roomSpecificCode5:
	ld a,GLOBALFLAG_SAVED_NAYRU
	call checkGlobalFlag
	ret nz
	ld a,MUS_SADNESS
	ld (wActiveMusic2),a
	ret

;;
; Something in ambi's palace
roomSpecificCode4:
	ld a,$06
	ld (wMinimapRoom),a
	ld hl,wPastRoomFlags+$06
	set 4,(hl)
	ret

;;
; Check to play ralph music for ralph entering portal cutscene
roomSpecificCode8:
	ld a,(wScreenTransitionDirection)
	cp DIR_RIGHT
	ret nz
	ld a, GLOBALFLAG_RALPH_ENTERED_PORTAL
	call checkGlobalFlag
	ret nz
	ld a, MUS_RALPH
	ld (wActiveMusic2),a
	ret

;;
; Play nayru music on impa's house screen, for some reason
roomSpecificCode9:
	ld a,GLOBALFLAG_FINISHEDGAME
	call checkGlobalFlag
	ret z
	ld a, MUS_NAYRU
	ld (wActiveMusic2),a
	ret

;;
; Correct minimap in mermaid's cave present
roomSpecificCodeA:
	ld hl,wMinimapGroup
	ld (hl),$00
	inc l
	ld (hl),$3c
	ret

;;
; Correct minimap in mermaid's cave past
roomSpecificCodeB:
	ld hl,wMinimapGroup
	ld (hl),$01
	inc l
	ld (hl),$3c
	ret

;;
; Something happening on vire black tower screen
roomSpecificCodeC:
	ld hl,wActiveMusic
	ld a,(hl)
	or a
	ret nz
	ld (hl),$ff
	ret


TL;
	uint32_t IC_SDA_HOLD;
	uint32_t IC_SLV_DATA_NACK_ONLY;
	uint32_t IC_DMA_TDLR;
	uint32_t IC_DMA_RDLR;
	uint32_t IC_SDA_SETUP;
	uint32_t IC_ACK_GENERAL_CALL;
	uint32_t IC_OUT_SMP_DLY;
	uint32_t IC_FILTER;
	uint32_t IC_SAR2;
} I2C_Backup;

_LONG_CALL_ bool I2C_Config_BackupBuf(u32 i2c_id, I2C_Backup *I2C_BackupStruct);
_LONG_CALL_ bool I2C_Suspend(u32 i2c_id);
_LONG_CALL_ bool I2C_Resume(u32 i2c_id);
_LONG_CALL_ void I2C_SuspendAll(void);
_LONG_CALL_ void I2C_ResumeAll(void);

/* Other Definitions --------------------------------------------------------*/
#if 1
//I2C Timing Parameters
#define I2C_SS_MIN_SCL_HTIME		4600    //the unit is ns.
#define I2C_SS_MIN_SCL_LTIME		5400    //the unit is ns.

#define I2C_FS_MIN_SCL_HTIME		800     //the unit is ns.
#define I2C_FS_MIN_SCL_LTIME		1700    //the unit is ns.

#define I2C_HS_MIN_SCL_HTIME_100    100      //the unit is ns, with bus loading = 100pf, Maximum supported speed=3.4M
#define I2C_HS_MIN_SCL_LTIME_100    194     //the unit is ns., with bus loading = 100pf, Maximum supported speed=3.4M

#define I2C_HS_MIN_SCL_HTIME_400    200     //the unit is ns, with bus loading = 400pf, Maximum supported speed=1.7M
#define I2C_HS_MIN_SCL_LTIME_400    388     //the unit is ns, with bus loading = 400pf, Maximum supported speed=1.7M

extern const I2C_DevTable I2C_DEV_TABLE[2];
extern u32 I2C_SLAVEWRITE_PATCH;
extern u32 IC_FS_SCL_HCNT_TRIM;
extern u32 IC_FS_SCL_LCNT_TRIM;
#define I2C_EARLY_RX_DONE 			-1
#define I2C_TRX_BUFFER_DEPTH 16
#define I2C_POLL_TIMEOUT_MS  1000

#endif

/* MANUAL_GEN_END */

#endif


   | [[paper](https://ieeexplore.ieee.org/document/9343727)]      |         |
| 7. A Multitask Bee Colony Band Selection Algorithm With Variable-Size Clustering for Hyperspectral Images  | TEVC  | 2022 | _He et al._   | [[paper](https://ieeexplore.ieee.org/document/9733922)]      |         |
| 8. Learning and Sharing: A Multitask Genetic Programming Approach to Image Feature Learning  | TEVC  | 2022 | _Bi et al._   | [[paper](https://ieeexplore.ieee.org/document/9484082)]      |         |
| 10. Multitask Particle Swarm Optimization with Heterogeneous Domain Adaptation   | TEVC  | 2023 | _Han et al._   | [[paper](https://ieeexplore.ieee.org/document/10075542)]      |         |
| 11. A Meta-Knowledge Transfer-Based Differential Evolution for Multitask Optimization   | TEVC  | 2022 | _Li et al._   | [[paper](https://ieeexplore.ieee.org/document/9627943)]      |         |
| 12. Privacy-Enhanced Multitasking Particle Swarm Optimization based on Homomorphic Encryption  | TEVC  | 2023 | _Li et al._   | [[paper](https://ieeexplore.ieee.org/document/10263995)]      |         |

# Multitasking Optimization in Complex Networks

| Paper Title                                                  | Venue | Year | Authors       | Materials                                                    | Comment |
| ------------------------------------------------------------ | ----- | ---- | ------------- | ------------------------------------------------------------ | ------- |
| 1. Evolutionary Multitasking Sparse Reconstruction Framework and Case Study | TEVC  | 2018 | _Li et al._  | [[paper](https://ieeexplore.ieee.org/document/8540026)]      |         |
| 2. MUMI Multitask Module Identification for Biological Networks | TEVC  | 2020 | _Chen et al._ | [[paper](https://ieeexplore.ieee.org/document/8894074)] [[code]( https://github.com/WeiqiChen/Mumimultitask-module-identification)] |         |
| 3. Evolutionary Multitasking Network Reconstruction from Time Series with Online Parameter Estimation | KBS   | 2021 | _Shen et al._ | [[paper](https://www.sciencedirect.com/science/article/pii/S0950705121002823)] |         |
| 4. Learning Large-Scale Fuzzy Cognitive Maps Using an Evolutionary Many-Task Algorithm | ASOC  | 2021 | _Wang et al._ | [[paper](https://www.sciencedirect.com/science/article/pii/S1568494621003641)] |         |
| 5. Evolutionary Multitasking Multilayer Network Reconstruction | TCYB  | 2021 | _Wang et al._ | [[paper](https://ieeexplore.ieee.org/document/9489377)] [[code](https://github.com/xiaofangxd/EM2MNR)] |         |
| 6. Community detection in multiplex networks based on evolutionary multi-task optimization and evolutionary clustering ensemble | TEVC  | 2022 | _Lyu et al._ | [[paper](https://ieeexplore.ieee.org/document/9802693)] |         |
| 7. A Multi-Transformation Evolutionary Framework for Influence Maximization in Social Networks | CIM  | 2023 | _Wang et al._ | [[paper](https://ieeexplore.ieee.org/document/10026148)] |         |
| 8. Enhancing the Robustness of Networks Against Multiple Damage Models Using a Multifactorial Evolutionary Algorithm | TSMC  | 2023 | _Wang et al._ | [[paper](https://ieeexplore.ieee.org/document/10049190)] |         |

# Multitasking Optimization in Machine Learning

| Paper Title                                                  | Venue | Year | Authors           | Materials                                                    | Comment |
| ------------------------------------------------------


.png">
<link rel="apple-touch-icon" type="image/png" sizes="76x76" href="../apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" type="image/png" sizes="60x60" href="../apple-touch-icon-60x60.png">
<script src="../deps/jquery-3.6.0/jquery-3.6.0.min.js"></script><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link href="../deps/bootstrap-5.2.2/bootstrap.min.css" rel="stylesheet">
<script src="../deps/bootstrap-5.2.2/bootstrap.bundle.min.js"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous">
<!-- bootstrap-toc --><script src="https://cdn.jsdelivr.net/gh/afeld/bootstrap-toc@v1.0.1/dist/bootstrap-toc.min.js" integrity="sha256-4veVQbu7//Lk5TSmc7YV48MxtMy98e26cf5MrgZYnwo=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><!-- search --><script src="https://cdnjs.cloudflare.com/ajax/libs/fuse.js/6.4.6/fuse.js" integrity="sha512-zv6Ywkjyktsohkbp9bb45V6tEMoWhzFzXis+LrMehmJZZSys19Yxf1dopHx7WzIKxr5tK2dVcYmaCk2uqdjF4A==" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/autocomplete.js/0.38.0/autocomplete.jquery.min.js" integrity="sha512-GU9ayf+66Xx2TmpxqJpliWbT5PiGYxpaG8rfnBEk1LL8l1KGkRShhngwdXK1UgqhAzWpZHSiYPc09/NwDQIGyg==" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mark.js/8.11.1/mark.min.js" integrity="sha512-5CYOlHXGh6QpOFA/TeTylKLWfB3ftPsde7AnmhuitiTX4K5SqCLBeKro6sPS8ilsz1Q4NRx3v8Ko2IBiszzdww==" crossorigin="anonymous"></script><!-- pkgdown --><script src="../pkgdown.js"></script><meta property="og:title" content="making_tables">
<meta property="og:description" con


LogCollectTaskDO> logCollectTaskList = new ArrayList<>(logCollectTaskPOList.size());
        for (LogCollectTaskPO logCollectTaskPO : logCollectTaskPOList) {
            LogCollectTaskDO logCollectTaskDO = logCollectTaskManageServiceExtension.logCollectTaskPO2LogCollectTaskDO(logCollectTaskPO);
            if (agentCollectConfigManageService.need2Deploy(logCollectTaskDO, hostDO)) {
                //根据日志采集任务id获取其关联的日志采集任务路径对象集
                List<FileLogCollectPathDO> fileLogCollectPathDOList = fileLogCollectPathManageService.getAllFileLogCollectPathByLogCollectTaskId(logCollectTaskDO.getId());
                /*
                 * 对于容器日志，进行日志路径转化 映射
                 */
                if (hostDO.getContainer().equals(HostTypeEnum.CONTAINER.getCode())) {
                    for (FileLogCollectPathDO fileLogCollectPathDO : fileLogCollectPathDOList) {
                        String path = fileLogCollectPathDO.getPath();
                        /*
                         * TODO：根据配置 path 获取容器实际 real path
                         */
                        fileLogCollectPathDO.setRealPath(path);
                    }
                }
                logCollectTaskDO.setFileLogCollectPathList(fileLogCollectPathDOList);
                logCollectTaskList.add(logCollectTaskDO);
            }
        }
        return logCollectTaskList;
    }

    @Override
    public List<LogCollectTaskDO> getLogCollectTaskListByServiceId(Long serviceId) {
        List<LogCollectTaskPO> logCollectTaskPOList = logCollectorTaskDAO.getLogCollectTaskListByServiceId(serviceId);
        return logCollectTaskPOList2LogCollectTaskDOListAndLoadRelationLogCollectPath(logCollectTaskPOList);
    }

    public boolean checkNotRelateAnyHost(Long logCollectTaskId) {
        List<HostDO> hostDOList = hostManageService.getHostListByLogCollectTaskId(logCollectTaskId);
        return !CollectionUtils.isNotEmpty(hostDOList);
    }

    @Override
    public List<LogCollectTaskDO> getByHealthLevel(Integer logCollectTaskHealthLevelCode) {
        List<LogCollectTaskPO> logCollectTaskPOList = logCollectorTaskDAO.getLogCollectTaskListByHealthLevel(logCollectTaskHealthLevelCode);
        return logCollectTaskManageServiceExtension.logCollectTaskPOList2LogCollectTaskDOList(logCollectTaskPOList);
    }

    @Override
    public List<LogCollectTaskDO> getAll() {
        List<LogCollectTaskPO> logCollectTaskPOList = logCollectorTaskDAO.queryAll();
        return logCollectTaskManageServiceExtension.logCollectTaskPOList2LogCollectTaskDOList(logCollectTaskPOList);
    }

    @Override
    public List<String> getDateTimeFormats() {
        // TODO：见 https://www.jb51.net/article/162825.htm 后续移至全局系统参数维护
        String[] dateTimeFormatArray = dateTimeFormats.split(CommonConstant.SEMICOLON);
        return Arrays.asList(dateTimeFormatArray);
    }

    @Override
    public LogSliceRuleVO getSliceRule(String content, Integer sliceDateTimeStringStartIndex, Integer sliceDateTimeStringEndIndex) {
        String sliceDateTimeString = content.substring(sliceDateTimeStringStartIndex, sliceDateTimeStringEndIndex+1);
        String sliceTimestampFormat = "";
        Integer sliceTimestampPrefixStringIndex = -1;
        String sliceTimestampPrefixString = "";
        List<String> dateTimeFormatList = getDateTimeFormats();
        for (String dateTimeFormat : dateTimeFormatList) {
            try {
                if(dateTimeFormat.replaceAll("'", "").length() != sliceDateTimeString.length()) {
                    continue;
                }
                Date date = new SimpleDateFormat(dateTimeFormat).parse(sliceDateTimeStrin


s = ConfigEnvsToMapString()
	assert.Equal(t, 1, len(envs))

	// Some more Vault KMS with one intruder
	t.Setenv("KMS_PROVIDER", "vault")
	t.Setenv("VAULT_ADDR", "1.1.1.1")
	t.Setenv("VAULT_SKIP_VERIFY", "true")
	t.Setenv("foo", "bar")
	envs = ConfigEnvsToMapString()
	assert.Equal(t, 3, len(envs))
	assert.True(t, envs["KMS_PROVIDER"] == "vault")
	clusterSpec := &cephv1.ClusterSpec{Security: cephv1.ClusterSecuritySpec{KeyManagementService: cephv1.KeyManagementServiceSpec{ConnectionDetails: envs}}}
	assert.True(t, clusterSpec.Security.KeyManagementService.IsEnabled())
}

func TestVaultConfigToEnvVar(t *testing.T) {
	type args struct {
		spec cephv1.ClusterSpec
	}
	tests := []struct {
		name string
		args args
		want []v1.EnvVar
	}{
		{
			"vault - no backend path",
			args{spec: cephv1.ClusterSpec{Security: cephv1.ClusterSecuritySpec{KeyManagementService: cephv1.KeyManagementServiceSpec{ConnectionDetails: map[string]string{"KMS_PROVIDER": "vault"}}}}},
			[]v1.EnvVar{
				{Name: "KMS_PROVIDER", Value: "vault"},
				{Name: "VAULT_BACKEND_PATH", Value: "secret/"},
			},
		},
		{
			"vault - with backend path",
			args{spec: cephv1.ClusterSpec{Security: cephv1.ClusterSecuritySpec{KeyManagementService: cephv1.KeyManagementServiceSpec{ConnectionDetails: map[string]string{"KMS_PROVIDER": "vault", "VAULT_BACKEND_PATH": "foo/"}}}}},
			[]v1.EnvVar{
				{Name: "KMS_PROVIDER", Value: "vault"},
				{Name: "VAULT_BACKEND_PATH", Value: "foo/"},
			},
		},
		{
			"vault - test with tls config",
			args{spec: cephv1.ClusterSpec{Security: cephv1.ClusterSecuritySpec{KeyManagementService: cephv1.KeyManagementServiceSpec{ConnectionDetails: map[string]string{"KMS_PROVIDER": "vault", "VAULT_CACERT": "my-secret-name"}}}}},
			[]v1.EnvVar{
				{Name: "KMS_PROVIDER", Value: "vault"},
				{Name: "VAULT_BACKEND_PATH", Value: "secret/"},
				{Name: "VAULT_CACERT", Value: "/etc/vault/vault.ca"},
			},
		},
		{
			"ibm kp - IBM_KP_SERVICE_API_KEY is removed from the details",
			args{spec: cephv1.ClusterSpec{Security: cephv1.ClusterSecuritySpec{KeyManagementService: cephv1.KeyManagementServiceSpec{ConnectionDetails: map[string]string{"KMS_PROVIDER": TypeIBM, "IBM_KP_SERVICE_API_KEY": "foo", "IBM_KP_SERVICE_INSTANCE_ID": "1"}, TokenSecretName: "ibm-kp-token"}}}},
			[]v1.EnvVar{
				{Name: "IBM_KP_SERVICE_API_KEY", ValueFrom: &v1.EnvVarSource{SecretKeyRef: &v1.SecretKeySelector{LocalObjectReference: v1.LocalObjectReference{Name: "ibm-kp-token"}, Key: "IBM_KP_SERVICE_API_KEY"}}},
				{Name: "IBM_KP_SERVICE_INSTANCE_ID", Value: "1"},
				{Name: "KMS_PROVID


/*
 * Userspace interface for AMD Secure Encrypted Virtualization (SEV)
 * platform management commands.
 *
 * Copyright (C) 2016-2017 Advanced Micro Devices, Inc.
 *
 * Author: Brijesh Singh <brijesh.singh@amd.com>
 *
 * SEV spec 0.14 is available at:
 * http://support.amd.com/TechDocs/55766_SEV-KM%20API_Specification.pdf
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#ifndef __PSP_SEV_USER_H__
#define __PSP_SEV_USER_H__

#include <linux/types.h>

/**
 * SEV platform commands
 */
enum {
	SEV_FACTORY_RESET = 0,
	SEV_PLATFORM_STATUS,
	SEV_PEK_GEN,
	SEV_PEK_CSR,
	SEV_PDH_GEN,
	SEV_PDH_CERT_EXPORT,
	SEV_PEK_CERT_IMPORT,
	SEV_GET_ID,

	SEV_MAX,
};

/**
 * SEV Firmware status code
 */
typedef enum {
	SEV_RET_SUCCESS = 0,
	SEV_RET_INVALID_PLATFORM_STATE,
	SEV_RET_INVALID_GUEST_STATE,
	SEV_RET_INAVLID_CONFIG,
	SEV_RET_INVALID_LEN,
	SEV_RET_ALREADY_OWNED,
	SEV_RET_INVALID_CERTIFICATE,
	SEV_RET_POLICY_FAILURE,
	SEV_RET_INACTIVE,
	SEV_RET_INVALID_ADDRESS,
	SEV_RET_BAD_SIGNATURE,
	SEV_RET_BAD_MEASUREMENT,
	SEV_RET_ASID_OWNED,
	SEV_RET_INVALID_ASID,
	SEV_RET_WBINVD_REQUIRED,
	SEV_RET_DFFLUSH_REQUIRED,
	SEV_RET_INVALID_GUEST,
	SEV_RET_INVALID_COMMAND,
	SEV_RET_ACTIVE,
	SEV_RET_HWSEV_RET_PLATFORM,
	SEV_RET_HWSEV_RET_UNSAFE,
	SEV_RET_UNSUPPORTED,
	SEV_RET_MAX,
} sev_ret_code;

/**
 * struct sev_user_data_status - PLATFORM_STATUS command parameters
 *
 * @major: major API version
 * @minor: minor API version
 * @state: platform state
 * @flags: platform config flags
 * @build: firmware build id for API version
 * @guest_count: number of active guests
 */
struct sev_user_data_status {
	__u8 api_major;				/* Out */
	__u8 api_minor;				/* Out */
	__u8 state;				/* Out */
	__u32 flags;				/* Out */
	__u8 build;				/* Out */
	__u32 guest_count;			/* Out */
} __packed;

/**
 * struct sev_user_data_pek_csr - PEK_CSR command parameters
 *
 * @address: PEK certificate chain
 * @length: length of certificate
 */
struct sev_user_data_pek_csr {
	__u64 address;				/* In */
	__u32 length;				/* In/Out */
} __packed;

/**
 * struct sev_user_data_cert_import - PEK_CERT_IMPORT command parameters
 *
 * @pek_address: PEK certificate chain
 * @pek_len: length of PEK certificate
 * @oca_address: OCA certificate chain
 * @oca_len: length of OCA certificate
 */
struct sev_user_data_pek_cert_import {
	__u64 pek_cert_address;			/* In */
	__u32 pek_cert_len;			/* In */
	__u64 oca_cert_address;			/* In */
	__u32 oca_cert_len;			/* In */
} __packed;

/**
 * struct sev_user_data_pdh_cert_export - PDH_CERT_EXPORT command parameters
 *
 * @pdh_address: PDH certificate address
 * @pdh_len: length of PDH certificate
 * @cert_chain_address: PDH certificate chain
 * @cert_chain_len: length of PDH certificate chain
 */
struct sev_user_data_pdh_cert_export {
	__u64 pdh_cert_address;			/* In */
	__u32 pdh_cert_len;			/* In/Out */
	__u64 cert_chain_address;		/* In */
	__u32 cert_chain_len;			/* In/Out */
} __packed;

/**
 * struct sev_user_data_get_id - GET_ID command parameters
 *
 * @socket1: Buffer to pass unique ID of first socket
 * @socket2: Buffer to pass unique ID of second socket
 */
struct sev_user_data_get_id {
	__u8 socket1[64];			/* Out */
	__u8 socket2[64];			/* Out */
} __packed;

/**
 * struct sev_issue_cmd - SEV ioctl parameters
 *
 * @cmd: SEV commands to execute
 * @opaque: pointer to the command structure
 * @error: SEV FW return code on failure
 */
struct sev_issue_cmd {
	__u32 cmd;				/* In */
	__u64 data;				/* In */
	__u32 error;				/* Out */
} __packed;

#define SEV_IOC_TYPE		'S'
#define SEV_ISSUE_CMD	_IOWR(SEV_IOC_TYPE, 0x0, struct sev_issue_cmd)

#endif /* __PSP_USER_SEV_H */


class Base {
     static isStart=false;
        static timev:number=60;
        static isPull=false;
        static srcx:number=0;
        static srcy:number=0;
        static seq:cc.ActionInterval;
        static isclick=false;
        static allcount=3;
        static currentcount=0;
        static score=0;
        static life=100;

        static setMove(y:number){

            this.seq=cc.repeatForever(
                cc.sequence(
                    cc.moveTo(5,cc.winSize.width/2+20, y),
                    cc.moveTo(5,-cc.winSize.width/2-20,y)
                ));
        }

        static getMove(){
            return this.seq;
        }

}
import { DialogActions, OPEN_DIALOG, CLOSE_DIALOG } from "./types";

export type DialogState = {
  isOpen: boolean;
  text: string;
};

const initDialogState = (): DialogState => {
  return {
    isOpen: false,
    text: ""
  };
};

const dialogReducer = (
  state: DialogState = initDialogState(),
  action: DialogActions
) => {
  switch (action.type) {
    case OPEN_DIALOG:
      return {
        isOpen: true,
        text: action.payload.text
      };
    case CLOSE_DIALOG:
      return {
        isOpen: false,
        text: ""
      };
    default:
      return state;
  }
};

export default dialogReducer;
export function renamePage() {
    const text = prompt('Enter new title');
    setPageTitle(text);
    if (text) localStorage.setItem('title', text);
    else localStorage.removeItem('title');
}

export function setPageTitle(text: string) {
    const h1 = document.querySelector('[data-rename-title]');
    h1.innerHTML = text;
    document.title = text;
}
import format from 'date-fns/format';
import parse from 'date-fns/parse';
import ru from 'date-fns/locale/ru';

export const formatBirthday = (dateString: string) => {
  try {
    const date = parse(dateString, 'yyyy-MM-dd', new Date());

    return format(date, 'dd MMMM yyyy г.', { locale: ru });
  } catch (error) {
    return '';
  }
};

export const formatBirthdayTwo = (dateString: string) => {
  try {
    const date = parse(dateString, 'yyyy-MM-dd', new Date());

    return format(date, 'dd.MM.yyyy', { locale: ru });
  } catch (error) {
    return '';
  }
};
export interface Hobby {
  id: number;
  imageUrl: string;
  details: HobbyDetails[];
}

export interface HobbyDetails {
  id: number;
  name: string;
  description: string;
  language: string;
}import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'time'
})
export class TimePipe implements PipeTransform {

  transform(value: number, ...args: unknown[]): unknown {
    let hours = 0;
    let minutes = 0;
    let seconds = 0;
    let centiseconds = 0;

    hours = Math.floor(value / 3600000);
    value = value % 3600000;
    minutes = Math.floor(value / 60000);
    value = value % 60000;
    seconds = Math.floor(value / 1000);
    value = value % 1000;
    centiseconds = Math.floor(value / 10);

    const hoursStr = hours === 0
      ? ''
      : `


eight)).r;\n      opacityG2.x = texture2D(otexture, vec2(opacityUCoords[1].x, opactityTextureHeight)).r;\n      opacityG2.y = texture2D(otexture, vec2(opacityUCoords[1].y, opactityTextureHeight)).r;\n      opacityG2.z = texture2D(otexture, vec2(opacityUCoords[1].z, opactityTextureHeight)).r;\n      opacityG1.xyz *= gradientOpacity;\n      opacityG2.xyz *= gradientOpacity;\n\n      vec4 opacityG = vec4(opacityG1 - opacityG2, 1.0f);\n      // divide by spacing\n      opacityG.xyz /= vSpacing;\n      opacityG.w = length(opacityG.xyz);\n      // rotate to View Coords\n      rotateToViewCoord(opacityG.xyz);\n      if (!all(equal(opacityG.xyz, vec3(0.0)))) {\n        return vec4(normalize(opacityG.xyz),opacityG.w);\n      } else {\n        return vec4(0.0);\n      }\n    }\n\n    vec4 computeNormalForDensity(vec3 pos, vec3 tstep, out vec3 scalarInterp[2], const int opacityComponent)\n    {\n      vec3 xvec = vec3(tstep.x, 0.0, 0.0);\n      vec3 yvec = vec3(0.0, tstep.y, 0.0);\n      vec3 zvec = vec3(0.0, 0.0, tstep.z);\n      vec3 texPosPVec[3];\n      texPosPVec[0] = pos + xvec;\n      texPosPVec[1] = pos + yvec;\n      texPosPVec[2] = pos + zvec;\n      vec3 texPosNVec[3];\n      texPosNVec[0] = pos - xvec;\n      texPosNVec[1] = pos - yvec;\n      texPosNVec[2] = pos - zvec;\n      vec3 g1, g2;\n\n      scalarInterp[0].x = getTextureValue(texPosPVec[0])[opacityComponent];\n      scalarInterp[0].y = getTextureValue(texPosPVec[1])[opacityComponent];\n      scalarInterp[0].z = getTextureValue(texPosPVec[2])[opacityComponent];\n      scalarInterp[1].x = getTextureValue(texPosNVec[0])[opacityComponent];\n      scalarInterp[1].y = getTextureValue(texPosNVec[1])[opacityComponent];\n      scalarInterp[1].z = getTextureValue(texPosNVec[2])[opacityComponent];\n\n      #ifdef vtkClippingPlanesOn\n        adjustClippedVoxelValues(pos, texPosPVec, scalarInterp[0]);\n        adjustClippedVoxelValues(pos, texPosNVec, scalarInterp[1]);\n      #endif\n      vec4 result;\n      result.x = scalarInterp[0].x - scalarInterp[1].x;\n      result.y = scalarInterp[0].y - scalarInterp[1].y;\n      result.z = scalarInterp[0].z - scalarInterp[1].z;\n      // divide by spacing\n      result.xyz /= vSpacing;\n      result.w = length(result.xyz);\n      // rotate to View Coords\n      rotateToViewCoord(result.xyz);\n      if (length(result.xyz) > 0.0) {\n        return vec4(normalize(result.xyz),result.w);\n      } else {\n        return vec4(0.0);\n      }\n    }\n  #endif\n\n  // only works with dependent components\n  vec4 computeNormal(vec3 pos, vec3 tstep)\n  {\n    vec3 xvec = vec3(tstep.x, 0.0, 0.0);\n    vec3 yvec = vec3(0.0, tstep.y, 0.0);\n    vec3 zvec = vec3(0.0, 0.0, tstep.z);\n    vec3 texPosPVec[3];\n    texPosPVec[0] = pos + xvec;\n    texPosPVec[1] = pos + yvec;\n    texPos


p-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-top .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem


 that trigger header/footer overlap.
   This hides the background of problematic split (not sliced) sections
   to prevent them from covering header/footer areas during printing.
   Real fix will be applied in html2pdf4doc in a future release. */
@media print {
  sdoc-node-content {
    background: none;
    background-color: transparent;
  }
}

sdoc-node-title {
  display: block;

  font-size: 1.125em;
  font-weight: 700;
}

sdoc-node-title:last-child {
  margin-bottom: 0;
}

sdoc-node-title * {
  /* affect H inside title, if applicable */
  margin: 0;
}

[node-style="card"] sdoc-node-title {
  font-size: 1em;
}

/* synonym to [node-view="inline"] */
sdoc-node-content[node-view="simple"] sdoc-node-title {
  padding-left: calc(var(--base-rhythm)*2);
  padding-right: calc(var(--base-rhythm)*2);
  padding-top: calc(var(--base-rhythm)*1);
  padding-bottom: calc(var(--base-rhythm)*1);

  word-break: break-word;
  overflow-wrap: break-word;
}

/* sdoc-node-content[node-view="simple"] sdoc-node-title, */
sdoc-node-content[node-view="table"] sdoc-node-title,
sdoc-node-content[node-view="zebra"] sdoc-node-title {
  padding-left: calc(var(--base-rhythm)*2);
  padding-right: calc(var(--base-rhythm)*2);
  padding-top: calc(var(--base-rhythm)*1);
  padding-bottom: calc(var(--base-rhythm)*1);

  border-top-right-radius: var(--requirement-border-radius);
  border-top-left-radius: var(--requirement-border-radius);

  background-color: var(--requirement-bg-dark-color);
  /* border-bottom: */
  outline: 1px solid var(--requirement-border-color);

  word-break: break-word;
  overflow-wrap: break-word;
}

sdoc-node-uid {
  display: block;
  padding-left: calc(var(--base-rhythm)*2);
  padding-right: calc(var(--base-rhythm)*2);
  padding-top: calc(var(--base-rhythm)*1);
  padding-bottom: calc(var(--base-rhythm)*1);
  font-size: var(--font-size-sm);
  font-family: var(--code-font-family);
  font-weight: 700;

  text-transform: uppercase;
  color: var(--requirement-label-color);

  word-break: break-word;
  overflow-wrap: break-word;
}

sdoc-node-field-label {
  display: flex;
  align-items:flex-start;

  padding-left: calc(var(--base-rhythm)*2);
  padding-right: calc(var(--base-rhythm)*2);
  padding-top: calc(var(--base-rhythm)*1.75);
  padding-bottom: calc(var(--base-rhythm)*1);

  font-size: var(--font-size-sm);
  font-family: var(--code-font-family);
  font-weight: 500;
  line-height: 1;
  color: var(--requirement-label-color);

  /* @mettta and @stanislaw are commenting this out because REQUIREMENT's field names
     were split apart, even though there was enough screen width
    word-break: break-word;
  */
  overflow-wrap: break-word;
}

sdoc-node-field {
  display: block;
  position: relative;

  pad


strong>: Milvus mendukung pustaka penyematan tambahan, memungkinkan penggunaan langsung model penyematan untuk mengubah data sumber menjadi vektor.

Tipe data: Milvus mendukung tipe data yang lebih luas daripada Pinecone, termasuk array dan JSON. Pinecone hanya mendukung struktur metadata datar dengan string, angka, boolean, atau daftar string sebagai nilai, sedangkan Milvus dapat menangani objek JSON apa pun, termasuk struktur bersarang, dalam bidang JSON. Pinecone membatasi ukuran metadata hingga 40KB per vektor.

Jenis metrik dan indeks: Milvus mendukung banyak pilihan jenis metrik dan indeks untuk mengakomodasi berbagai kasus penggunaan, sementara Pinecone memiliki pilihan yang lebih terbatas. Meskipun indeks untuk vektor adalah wajib di Milvus, opsi AUTO_INDEX tersedia untuk menyederhanakan proses konfigurasi.

Desain skema: Milvus menawarkan mode create_collection yang fleksibel untuk desain skema, termasuk pengaturan cepat dengan skema dinamis untuk pengalaman tanpa skema yang mirip dengan Pinecone dan pengaturan yang disesuaikan dengan bidang skema yang telah ditentukan sebelumnya dan indeks yang mirip dengan sistem manajemen basis data relasional (RDBMS).

Beberapa bidang vektor: Milvus memungkinkan penyimpanan beberapa bidang vektor dalam satu koleksi, yang dapat berupa bidang vektor yang jarang atau padat dan dapat bervariasi dalam hal dimensi. Pinecone tidak menawarkan fitur yang sebanding.

Alat: Milvus menawarkan pilihan alat yang lebih luas untuk manajemen dan pemanfaatan basis data, seperti Attu, Birdwatcher, Backup, CLI, CDC dan konektor Spark dan Kafka.

Apa selanjutnya<button data-href="#Whats-next" class="anchor-icon" translate="no">
      <svg translate="no"
        aria-hidden="true"
        focusable="false"
        height="20"
        version="1.1"
        viewBox="0 0 16 16"
        width="16"
      >
        <path
          fill="#0092E4"
          fill-rule="evenodd"
          d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"


7c,0x66,0x86,0x86,0x06]

v_cmpx_class_f32_sdwa s[6:7], flat_scratch_hi, v2 src0_sel:DWORD src1_sel:DWORD
// CHECK: [0xf9,0x04,0x22,0x7c,0x67,0x86,0x86,0x06]

v_cmpx_class_f32_sdwa s[6:7], vcc_lo, v2 src0_sel:DWORD src1_sel:DWORD
// CHECK: [0xf9,0x04,0x22,0x7c,0x6a,0x86,0x86,0x06]

v_cmpx_class_f32_sdwa s[6:7], vcc_hi, v2 src0_sel:DWORD src1_sel:DWORD
// CHECK: [0xf9,0x04,0x22,0x7c,0x6b,0x86,0x86,0x06]

v_cmpx_class_f32_sdwa s[6:7], m0, v2 src0_sel:DWORD src1_sel:DWORD
// CHECK: [0xf9,0x04,0x22,0x7c,0x7c,0x86,0x86,0x06]

v_cmpx_class_f32_sdwa s[6:7], exec_lo, v2 src0_sel:DWORD src1_sel:DWORD
// CHECK: [0xf9,0x04,0x22,0x7c,0x7e,0x86,0x86,0x06]

v_cmpx_class_f32_sdwa s[6:7], exec_hi, v2 src0_sel:DWORD src1_sel:DWORD
// CHECK: [0xf9,0x04,0x22,0x7c,0x7f,0x86,0x86,0x06]

v_cmpx_class_f32_sdwa s[6:7], 0, v2 src0_sel:DWORD src1_sel:DWORD
// CHECK: [0xf9,0x04,0x22,0x7c,0x80,0x86,0x86,0x06]

v_cmpx_class_f32_sdwa s[6:7], -1, v2 src0_sel:DWORD src1_sel:DWORD
// CHECK: [0xf9,0x04,0x22,0x7c,0xc1,0x86,0x86,0x06]

v_cmpx_class_f32_sdwa s[6:7], 0.5, v2 src0_sel:DWORD src1_sel:DWORD
// CHECK: [0xf9,0x04,0x22,0x7c,0xf0,0x86,0x86,0x06]

v_cmpx_class_f32_sdwa s[6:7], -4.0, v2 src0_sel:DWORD src1_sel:DWORD
// CHECK: [0xf9,0x04,0x22,0x7c,0xf7,0x86,0x86,0x06]

v_cmpx_class_f32_sdwa s[6:7], v1, v255 src0_sel:DWORD src1_sel:DWORD
// CHECK: [0xf9,0xfe,0x23,0x7c,0x01,0x86,0x06,0x06]

v_cmpx_class_f32_sdwa s[6:7], v1, v2 src1_sel:DWORD
// CHECK: [0xf9,0x04,0x22,0x7c,0x01,0x86,0x06,0x06]

v_cmpx_class_f32_sdwa s[6:7], v1, v2 src0_sel:BYTE_0 src1_sel:DWORD
// CHECK: [0xf9,0x04,0x


: 100%;
        padding: 10px;
        font-size: 12px;
        position: absolute;
        top: 0;
        right:0
    }

    #header > a {
        margin-left:25%
    }

    .charts-css.bar tbody tr td {
        clip-path:inset(0% round 0 10px 10px 0)
    }

    .charts-css {
        --color-1: #ea5545;
        --color-2: #f46a9b;
        --color-3: #ef9b20;
        --color-4: #edbf33;
        --color-5: #ede15b;
        --color-6: #bdcf32;
        --color-7: #87bc45;
        --color-8: #27aeef;
        --color-9: #b33dc6;
        --color-10: #912d50
    }
    </style>

        Your Overcast stats in SQLite

        <svg viewbox="0 0 24 24" height=24 width=24 xmlns=http://www.w3.org/2000/svg>
            <path d="M11.362 2c4.156 0 2.638 6 2.638 6s6-1.65 6 2.457v11.543h-16v-20h7.362zm.827-2h-10.189v24h20v-14.386c0-2.391-6.648-9.614-9.811-9.614zm-3.189 18v-7.02l6 3.527-6 3.493z" fill=#fff/>
        </svg>

            Export "
            All data
            " from

            your Overcast account

            then drop that file here

        <button>Upload File</button>
        <input hidden type=file>

            Your data is not uploaded anywhere.

            All processing happens on your computer.

    <svg enable-background="new 0 0 100 100" viewbox="0 0 100 100" id=loading-spinner version=1.1 x=0px xml:space=preserve xmlns=http://www.w3.org/2000/svg y=0px>
        <circle cx=50 cy=50 fill=none r=47 stroke=#fff stroke-dasharray=14.2472,14.2472 stroke-miterlimit=15 stroke-width=6>
            <animatetransform from="0 50 50" to="360 50 50" attributename=transform attributetype=XML dur=5s repeatcount=indefinite type=rotate/>
        </circle>
        <circle cx=50 cy=50 fill=none r=39 stroke=#fff stroke-dasharray=10,10 stroke-miterlimit=10 stroke-width=1>
            <animatetransform from="0 50 50" to="-360 50 50" attributename=transform attributetype=XML dur=5s repeatcount=indefinite type=rotate/>
        </circle>
        <g fill=#fff>
            <rect height=30 width=5 x=30 y=35>
                <animatetransform values="0 5 ; 0 -5; 0 5" attributename=transform begin=0.1 dur=1s repeatcount=indefinite type=translate/>
            </rect>
            <rect height=30 width=5 x=40 y=35>
                <animatetransform values="0 5 ; 0 -5; 0 5" attributename=transform begin=0.2 dur=1s repeatcount=indefinite type=translate/>
            </rect>
            <rect height=30 width=5 x=50 y=35>
                <animatetransform values="0 5 ; 0 -5; 0 5" attributename=transform begin=0.3 dur=1s repeatcount=indefinite type=translate/>
            </rect>
            <rect height=30 width=5 x=60 y=35>
                <anim


          channel.setMessageHandler(null);
        }
      }
    }
  }
  /** Generated interface from Pigeon that represents a handler of messages from Flutter. */
  public interface TXFlutterNativeAPI {
    /** 修改当前界面亮度 */
    void setBrightness(@NonNull DoubleMsg brightness);
    /** 恢复当前界面亮度 */
    void restorePageBrightness();
    /** 获得当前界面亮度 0.0 ~ 1.0 */
    @NonNull
    DoubleMsg getBrightness();
    /** 获取系统界面亮度，IOS系统与界面亮度一致，安卓可能会有差异 */
    @NonNull
    DoubleMsg getSysBrightness();
    /** 设置当前系统音量，0.0 ~ 1.0 */
    void setSystemVolume(@NonNull DoubleMsg volume);
    /** 获得当前系统音量，范围：0.0 ~ 1.0 */
    @NonNull
    DoubleMsg getSystemVolume();
    /** 释放音频焦点，只用于安卓端 */
    void abandonAudioFocus();
    /** 请求获得音频焦点，只用于安卓端 */
    void requestAudioFocus();
    /**
     * 当前设备是否支持画中画模式
     * @return [TXVodPlayEvent]
     *  0 可开启画中画模式
     *  -101  android版本过低
     *  -102  画中画权限关闭/设备不支持画中画
     *  -103  当前界面已销毁
     */
    @NonNull
    IntMsg isDeviceSupportPip();
    /**
     *
     * register or unregister system brightness
     *
     */
    void registerSysBrightness(@NonNull BoolMsg isRegister);

    /** The codec used by TXFlutterNativeAPI. */
    static @NonNull MessageCodec<Object> getCodec() {
      return PigeonCodec.INSTANCE;
    }
    /**Sets up an instance of `TXFlutterNativeAPI` to handle messages through the `binaryMessenger`. */
    static void setUp(@NonNull BinaryMessenger binaryMessenger, @Nullable TXFlutterNativeAPI api) {
      setUp(binaryMessenger, "", api);
    }
    static void setUp(@NonNull BinaryMessenger binaryMessenger, @NonNull String messageChannelSuffix, @Nullable TXFlutterNativeAPI api) {
      messageChannelSuffix = messageChannelSuffix.isEmpty() ? "" : "." + messageChannelSuffix;
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.super_player.TXFlutterNativeAPI.setBrightness" + messageChannelSuffix, getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                DoubleMsg brightnessArg = (DoubleMsg) args.get(0);
                try {
                  api.setBrightness(brightnessArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  wrapped = wrapError(exception);
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.super_player.TXFlutterNativeAPI.restorePageBrightness" + messageChannelSuffix, getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<>();
                try {
                  api.restorePageBrightness();
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  wrapped = wrapError(exception);
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.super_player.TXFlutterNativeAPI.getBrightness" + messageChannelSuffix, getCodec());
        i


      0.5,
                BatteryMaterials.PB_ACID_TEST,
                20.0,
                0.3
            )
        )
            .also { it.energy = it.model.energyCapacity * 0.9 }
    })

    val BATTERY_PART_100V =
        part("battery_part_100v", BasicPartProvider({ a, b -> BatteryPart(a, b, BATTERY_CELL_100V.get()) }, vec3(1.0)))

    val THERMOCOUPLE_CELL = cell("thermocouple_cell", BasicCellProvider { createInfo ->
        ThermocoupleCell(
            createInfo,
            dirActualMap(plusDir = Base6Direction3d.Front, minusDir = Base6Direction3d.Back),
            dirActualMap(plusDir = Base6Direction3d.Left, minusDir = Base6Direction3d.Right)
        ).also {
            it.generatorObj.ruleSet.withDirectionActualRule(DirectionMask.FRONT + DirectionMask.BACK)
            it.thermalBipoleObj.ruleSet.withDirectionActualRule(DirectionMask.LEFT + DirectionMask.RIGHT)
        }
    })
    val THERMOCOUPLE_PART = part("thermocouple_part", BasicPartProvider({ id, context ->
        ThermocouplePart(id, context)
    }, Vec3(0.5, 15.0 / 16.0, 0.5)))

    val HEAT_GENERATOR_CELL = cell("heat_generator_cell", BasicCellProvider(::HeatGeneratorCell))
    val HEAT_GENERATOR_PART = part("heat_generator_part", BasicPartProvider({ id, context ->
        BasicCellPart(
            id,
            context,
            vec3(1.0),
            HEAT_GENERATOR_CELL.get(),
            basicPartRenderer(PartialModels.THERMAL_WIRE_CROSSING_FULL, 0.0)
        )
    }, vec3(1.0)))
    val HEAT_GENERATOR_BLOCK = block("heat_generator", tab = null) { HeatGeneratorBlock() }
    val HEAT_GENERATOR_BLOCK_ENTITY =
        blockEntity("heat_generator", ::HeatGeneratorBlockEntity) { HEAT_GENERATOR_BLOCK.block.get() }
    val HEAT_GENERATOR_MENU = menu("heat_generator_menu", ::HeatGeneratorMenu)

    val PHOTOVOLTAIC_GENERATOR_CELL = cell("photovoltaic_cell", BasicCellProvider {
        PhotovoltaicGeneratorCell(it, PhotovoltaicModels.test24Volts())
    })

    val PHOTOVOLTAIC_PANEL_PART = part("photovoltaic_panel_part", BasicPartProvider({ id, context ->
        BasicCellPart(
            id,
            context,
            Vec3(1.0, bbSize(2.0), 1.0),
            PHOTOVOLTAIC_GENERATOR_CELL.get(),
            basicPartRenderer(
                PartialModels.SOLAR_PANEL_ONE_BLOCK,
                bbOffset(2.0)
            )
        )
    }, Vec3(1.0, bbSize(2.0), 1.0)))

    val LIGHT_CELL = cell("light_cell", BasicCellProvider {
        LightCell(
            it,
            LightModel({ pwr -> pwr / 100.0 }, 0.1)
        )
    })
    val LIGHT_PART =
        part("light_part", BasicPartProvider({ a, b -> LightPart(a, b, LIGHT_CELL.get()) }, bbVec(8.0, 4.0, 5.0)))

    val VOLTAGE_METER_ITEM = item("voltage_meter") { UniversalMeter(readVoltage = true) }
    val CURRENT_METER_ITEM = item("current_meter") { UniversalMeter(readCurrent = true) }
    val TEMPERATURE_METER_ITEM = item("temperature_meter") { UniversalMeter(readTemperature = true) }
    val UNIVERSAL_METER_ITEM = item("universal_meter") {
        UniversalMeter(
            readVoltage = true,
            readCurrent = true,
            readTemperature = true
        )


;GMc(d,-a.d,-a.d,a.d,a.d);FMc(i.d,d);NMc(d)}a.Ne();++f}XSc(c)}
function ITb(a,b){var c,d,e,f,g,h,i,j;VSc(b,'Comment post-processing',1);i=Srb(nA(LCb(a,(ygc(),hgc))));for(f=new Fdb(a.b);f.a<f.c.c.length;){e=kA(Ddb(f),25);d=new hdb;for(h=new Fdb(e.a);h.a<h.c.c.length;){g=kA(Ddb(h),9);j=kA(LCb(g,(Ybc(),Xbc)),15);c=kA(LCb(g,$ac),15);if(!!j||!!c){JTb(g,j,c,i);!!j&&Ycb(d,j);!!c&&Ycb(d,c)}}Ycb(e.a,d)}XSc(b)}
function huc(){huc=G4;cuc=oJc(new tJc,(iJb(),gJb),(SYb(),nYb));euc=oJc(new tJc,fJb,qYb);fuc=mJc(oJc(new tJc,fJb,EYb),hJb,DYb);buc=mJc(oJc(oJc(new tJc,fJb,hYb),gJb,iYb),hJb,jYb);guc=oJc(new tJc,fJb,LYb);duc=mJc(new tJc,hJb,oYb);_tc=mJc(oJc(oJc(oJc(new tJc,eJb,tYb),gJb,vYb),gJb,wYb),hJb,uYb);auc=mJc(oJc(oJc(new tJc,gJb,wYb),gJb,dYb),hJb,cYb)}
function TGc(){TGc=G4;SGc=new j4c(W_d);RGc=(iHc(),hHc);QGc=new l4c(__d,RGc);PGc=(tHc(),sHc);OGc=new l4c(X_d,PGc);NGc=(eGc(),aGc);MGc=new l4c(Y_d,NGc);IGc=new l4c(Z_d,null);LGc=(VFc(),TFc);KGc=new l4c($_d,LGc);EGc=(BFc(),AFc);DGc=new l4c(a0d,EGc);FGc=new l4c(b0d,(c5(),c5(),false));GGc=new l4c(c0d,G6(64));HGc=new l4c(d0d,(null,true));JGc=UFc}
function RDb(a){var b,c,d,e,f,g,h,i,j,k,l,m;e=uCb(a.d);g=kA(LCb(a.b,(TEb(),NEb)),116);h=g.b+g.c;i=g.d+g.a;k=e.d.a*a.e+h;j=e.b.a*a.f+i;pEb(a.b,new VMc(k,j));for(m=new Fdb(a.g);m.a<m.c.c.length;){l=kA(Ddb(m),527);b=l.g-e.a.a;c=l.i-e.c.a;d=FMc(PMc(new VMc(b,c),l.a,l.b),OMc(RMc(HMc(YDb(l.e)),l.d*l.a,l.c*l.b),-0.5));f=ZDb(l.e);_Db(l.e,SMc(d,f))}}


a Destruction spec thing...
    if I.TimeThiefsGambit:IsEquippedAndReady() and (VarCDsActive or BossFightRemains < 15 or ((Trinket1:Cooldown() < S.SummonDarkglare:CooldownRemains() + 5) and EnemiesCount10ySplash == 1) or (EnemiesCount10ySplash > 1)) then
      if Cast(I.TimeThiefsGambit, nil, Settings.CommonsDS.DisplayStyle.Trinkets) then return "time_thiefs_gambit items 10"; end
    end
    -- use_item,use_off_gcd=1,slot=trinket1,if=!variable.trinket_1_buffs&!variable.trinket_1_manual&(!variable.trinket_1_buffs&(trinket.2.cooldown.remains|!variable.trinket_2_buffs)|talent.summon_darkglare&cooldown.summon_darkglare.remains_expected>20|!talent.summon_darkglare)
    if Trinket1 and Trinket1:IsReady() and not VarTrinket1Ex and not Player:IsItemBlacklisted(Trinket1) and (not VarTrinket1Buffs and not VarTrinket1Manual and (not VarTrinket1Buffs and (Trinket2:CooldownDown() or not VarTrinket2Buffs) or S.SummonDarkglare:IsAvailable() and S.SummonDarkglare:CooldownRemains() > 20 or not S.SummonDarkglare:IsAvailable())) then
      if Cast(Trinket1, nil, Settings.CommonsDS.DisplayStyle.Trinkets, not Target:IsInRange(VarTrinket1Range)) then return "trinket1 (" .. Trinket1:Name() .. ") items 12"; end
    end
    -- use_item,use_off_gcd=1,slot=trinket2,if=!variable.trinket_2_buffs&!variable.trinket_2_manual&(!variable.trinket_2_buffs&(trinket.1.cooldown.remains|!variable.trinket_1_buffs)|talent.summon_darkglare&cooldown.summon_darkglare.remains_expected>20|!talent.summon_darkglare)
    if Trinket2 and Trinket2:IsReady() and not VarTrinket2Ex and not Player:IsItemBlacklisted(Trinket2) and (not VarTrinket2Buffs and not VarTrinket2Manual and (not VarTrinket2Buffs and (Trinket1:CooldownDown() or not VarTrinket1Buffs) or S.SummonDarkglare:IsAvailable() and S.SummonDarkglare:CooldownRemains() > 20 or not S.SummonDarkglare:IsAvailable())) then
      if Cast(Trinket2, nil, Settings.CommonsDS.DisplayStyle.Trinkets, not Target:IsInRange(VarTrinket2Range)) then return "trinket2 (" .. Trinket2:Name() .. ") items 14"; end
    end
  end
  if Settings.Commons.Enabled.Items then
    -- use_item,use_off_gcd=1,slot=main_hand,name=!neural_synapse_enhancer
    -- Note: neural_synapse_enhancer is ignored via OnUseExcludes.
    local ItemToUse, _, ItemRange = Player:GetUseableItems(OnUseExcludes, nil, true)
    if ItemToUse then
      if Cast(ItemToUse, nil, Settings.CommonsDS.DisplayStyle.Items, not Target:IsInRange(ItemRange)) then return "Generic use_item for " .. ItemToUse:Name() .. " items 16"; end
    end
    if I.NeuralSynapseEnhancer:IsEquippedAndReady() and (
      -- use_item,us


mple.com", NULL, "de", &lower);
		psl_free_string(lower); lower = NULL;

		psl_str_to_utf8lower("\374bel.de", NULL, "de", &lower);
		psl_free_string(lower); lower = NULL;

		psl_str_to_utf8lower("\374bel.de", "iso-8859-1", NULL, &lower);
		psl_free_string(lower); lower = NULL;

		psl_str_to_utf8lower(NULL, "utf-8", "en", &lower);
		psl_free_string(lower); lower = NULL;
	}

	psl_get_version();
	psl_dist_filename();
	psl_builtin_filename();
	psl_builtin_outdated();
	psl_builtin_file_time();
	psl_builtin_sha1sum();
	psl_suffix_wildcard_count(NULL);
	psl_suffix_wildcard_count(psl);
	psl_suffix_wildcard_count(psl_builtin());
	psl_suffix_count(NULL);
	psl_suffix_exception_count(NULL);
	psl_load_file(NULL);
	psl_load_fp(NULL);
	psl_registrable_domain(NULL, "");
	psl_registrable_domain(psl, NULL);
	psl_registrable_domain(psl, "www.example.com");
	psl_unregistrable_domain(NULL, "");
	psl_unregistrable_domain(psl, NULL);
	psl_is_public_suffix2(NULL, "", PSL_TYPE_ANY);
	psl_is_public_suffix2(psl, NULL, PSL_TYPE_ANY);

	psl_free(psl);
}

int main(int argc, const char * const *argv)
{
	/* if VALGRIND testing is enabled, we have to call ourselves with valgrind checking */
	if (argc == 1) {
		const char *valgrind = getenv("TESTS_VALGRIND");

		if (valgrind && *valgrind) {
			return run_valgrind(valgrind, argv[0]);
		}
	}

	test_psl();

	if (failed) {
		printf("Summary: %d out of %d tests failed\n", failed, ok + failed);
		return 1;
	}

	printf("Summary: All %d tests passed\n", ok + failed);
	return 0;
}


 = f"Success! Un-fbanned in {total} feds."

    reason = reason if reason else "Not specified."
    await event.edit(
        f"**Un-fbanned** {user_link}!\n**Reason:** {reason}\n**Status:** {status}"
    )

@register(outgoing=True, pattern=r"^\.addf(?: |$)(.*)")
async def addf(event):
    """Adds current chat to connected federations."""
    try:
        from userbot.modules.sql_helper.fban_sql import add_flist
    except IntegrityError:
        return await event.edit("**Running on Non-SQL mode!**")

    fed_name = event.pattern_match.group(1)
    if not fed_name:
        return await event.edit("**Pass a name in order connect to this group!**")

    try:
        add_flist(event.chat_id, fed_name)
    except IntegrityError:
        return await event.edit(
            "**This group is already connected to federations list.**"
        )

    await event.edit("**Added this group to federations list!**")

@register(outgoing=True, pattern=r"^\.delf$")
async def delf(event):
    """Removes current chat from connected federations."""
    try:
        from userbot.modules.sql_helper.fban_sql import del_flist
    except IntegrityError:
        return await event.edit("**Running on Non-SQL mode!**")

    del_flist(event.chat_id)
    await event.edit("**Removed this group from federations list!**")

@register(outgoing=True, pattern=r"^\.listf$")
async def listf(event):
    """List all connected federations."""
    try:
        from userbot.modules.sql_helper.fban_sql import get_flist
    except IntegrityError:
        return await event.edit("**Running on Non-SQL mode!**")

    fed_list = get_flist()
    if len(fed_list) == 0:
        return await event.edit("**You haven't connected to any federations yet!**")

    msg = "**Connected federations:**\n\n"

    for i in fed_list:
        msg += f"• {i.fed_name}\n"

    await event.edit(msg)

@register(outgoing=True, disable_edited=True, pattern=r"^\.clearf$")
async def clearf(event):
    """Removes all chats from connected federations."""
    try:
        from userbot.modules.sql_helper.fban_sql import del_flist_all
    except IntegrityError:
        return await event.edit("**Running on Non-SQL mode!**")

    del_flist_all()
    await event.edit("**Disconnected from all connected federations!**")

CMD_HELP.update(
    {
        "fban": ">`.fban <id/username> <reason>`"
        "\nUsage: Bans user from connected federations."
        "\nYou can reply to the user whom you want to fban or manually pass the username/id."
        "\n`.dfban` does the same but deletes the replied message."
        "\n\n`>.unfban <id/username> <reason>`"
        "\nUsage: Same as fban but unbans the user"
        "\n\n>`.addf <name>`"
        "\nUsage: Adds current group and stores it as <name> in connected federations."
        "\nAdding one group is enough for one federation."
        "\n\n>`.delf`"
        "\nUsage: Removes current group from connected federations."
        "\n\n>`.listf`"
        "\nUsage: Lists all connected federations by specified name."
        "\n\n>`.clearf`"
        "\nUsage: Disconnects from all connected federations. Use it carefully."
    }
)


lude <bsdfs>

// <bsdfs>

float G_BlinnPhong_Implicit( /* const in float dotNL, const in float dotNV */ ) {

	// geometry term is (n dot l)(n dot v) / 4(n dot l)(n dot v)
	return 0.25;

}

float D_BlinnPhong( const in float shininess, const in float dotNH ) {

	return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );

}

vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {

	vec3 halfDir = normalize( lightDir + viewDir );

	float dotNH = saturate( dot( normal, halfDir ) );
	float dotVH = saturate( dot( viewDir, halfDir ) );

	vec3 F = F_Schlick( specularColor, 1.0, dotVH );

	float G = G_BlinnPhong_Implicit( /* dotNL, dotNV */ );

	float D = D_BlinnPhong( shininess, dotNH );

	return F * ( G * D );

} // validated

#include <lights_pars_begin>

// <lights_pars_begin>

uniform bool receiveShadow;
uniform vec3 ambientLightColor;

#if defined( USE_LIGHT_PROBES )

	uniform vec3 lightProbe[ 9 ];

#endif

// get the irradiance (radiance convolved with cosine lobe) at the point 'normal' on the unit sphere
// source: https://graphics.stanford.edu/papers/envmap/envmap.pdf
vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {

	// normal is assumed to have unit length

	float x = normal.x, y = normal.y, z = normal.z;

	// band 0
	vec3 result = shCoefficients[ 0 ] * 0.886227;

	// band 1
	result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;
	result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;
	result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;

	// band 2
	result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;
	result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;
	result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );
	result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;
	result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );

	return result;

}

vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {

	vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );

	vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );

	return irradiance;

}

vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {

	vec3 irradiance = ambientLightColor;

	return


using System.Collections.Generic;
using System.Threading.Tasks;
using NUnit.Framework;
using Shouldly;
using Statiq.Common;
using Statiq.Testing;
using Statiq.Web.Shortcodes;

namespace Statiq.Web.Tests.Shortcodes
{
    [TestFixture]
    public class GistShortcodeFixture : BaseFixture
    {
        public class ExecuteTests : GistShortcodeFixture
        {
            [Test]
            public void RendersGist()
            {
                // Given
                TestExecutionContext context = new TestExecutionContext();
                TestDocument document = new TestDocument();
                KeyValuePair<string, string>[] args = new KeyValuePair<string, string>[]
                {
                    new KeyValuePair<string, string>(null, "abc"),
                    new KeyValuePair<string, string>(null, "def"),
                    new KeyValuePair<string, string>(null, "ghi"),
                };
                GistShortcode shortcode = new GistShortcode();

                // When
                ShortcodeResult result = shortcode.Execute(args, null, document, context);

                // Then
                result.ContentProvider.GetStream().ReadToEnd().ShouldBe("<script src=\"//gist.github.com/def/abc.js?file=ghi\" type=\"text/javascript\"></script>");
            }

            [Test]
            public void RendersGistWithoutUsername()
            {
                // Given
                TestExecutionContext context = new TestExecutionContext();
                TestDocument document = new TestDocum


)
\n
<tt>operation</tt>: <tt>add/replace/set/append/prepend</tt> type\n        of operation
\n
<tt>wait</tt>: <tt>persist/false</tt> if the system should wait for\n        persistence of the keys
\n

\n
Example:\n

\n cb:put-text($conn, "35040", fn:serialize({\n                      "city" : "CALERA",\n                      "loc" : [ -86.755987, 33.1098 ],\n                      "pop" : 4675,\n                      "state" : "AL",\n                      "_id" : "35040"\n                    }), { "expiration-time" : 60 * 60 * 24 });\n

\n',summary:"
 Store string values along with their string keys.
",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"conn",type:"anyURI",occurrence:null,description:'
 The identifier of the active connection
'},{name:"key",type:"string",occurrence:"*",description:'
 The keys to store
'},{name:"value",type:"string",occurrence:"*",description:'
 The string values to be stored
'},{name:"options",type:"object()",occurrence:null,description:'
 An object with additional options
'}],returns:{type:"empty-sequence()",description:"a empty sequence."},errors:['<xqdoc:error xmlns:xqdoc="http://www.xqdoc.org/1.0">LCB0002 if any error occurs in the communication with the server.</xqdoc:error>','<xqdoc:error xmlns:xqdoc="http://www.xqdoc.org/1.0">CB0005 if the number of keys doesn\'t match the number of values.</xqdoc:error>','<xqdoc:error xmlns:xqdoc="http://www.xqdoc.org/1.0">CB0006 if the given encoding is not supported.</xqdoc:error>','<xqdoc:error xmlns:xqdoc="http://www.xqdoc.org/1.0">CB0007 if any of the options is not supported.</xqdoc:error>','<xqdoc:error xmlns:xqdoc="http://www.xqdoc.org/1.0">CB0009 if the given expiration time is not an integer.</xqdoc:error>','<xqdoc:error xmlns:xqdoc="http://www.xqdoc.org/1.0">CB0011 if the stored Variable was not stored</xqdoc:error>']},{isDocumented:!0,arity:2,name:"remove",qname:"cb:remove",signature:"($conn as anyURI, $key as string*) as empty-sequence()",description:' Remove the values matching the given string keys.
\n
Example:\n

\n cb:remove($conn, "35040");\n

\n',summary:"
 Remove the values matching the given string keys.
",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"conn",type:"anyURI",occurrence:null,description:'
 The identifier of the active connect


-expressions occur in a match.
You can access these sub-expressions by invoking the
[`Regex::captures`](struct.Regex.html#method.captures)
method. Remake already uses parentheses to control precedence, so
it would be confusing to also use them as capturing syntax. Instead,
we introduce the `cap` keyword. You can ask for an unnamed capture
group by writing `cap <expr>`

```rust
use remake::Remake;
let re = Remake::compile(r" 'a' . cap 'b' . 'c' ").unwrap();

assert_eq!(&re.captures("abc").unwrap()[1], "b");
```

or give it a name with `cap <expr> as <name>`

```rust
use remake::Remake;
let re = Remake::compile(r" 'a' . cap 'b' as group . 'c' ").unwrap();
assert_eq!(re.captures("abc").unwrap().name("group").unwrap().as_str(), "b");
```

capture groups compose well with capture groups defined in a regex
literal

```rust
use remake::Remake;
let re = Remake::compile(r" /foo(bar)/ . cap 'baz' ").unwrap();

let caps = re.captures("foobarbaz").unwrap();
assert_eq!(&caps[1], "bar");
assert_eq!(&caps[2], "baz");
```

Note that the index of unnamed capture groups depends on their
order in the final expression that is generated, not where they
are defined in a particular piece of remake source. The process of
index assignment is not always obvious, so it is good practice
to use named capture groups as regex grow large.

# Block Expressions

Just like rust, remake supports block expressions to introduce
new scopes. A block starts with an open curly brace (`{`), contains
zero or more statements followed by an expression, and ends with
a closing curly brace (`}`).

```rust
use remake::Remake;
let re = Remake::compile(r#"
    {
        let foo_re = 'foo';
        foo_re | /bar/
    }
    "#).unwrap();

assert!(re.is_match("bar"));
```

For convenience, the top level of a piece of remake source is
automatically treated as the inside of a block.

```rust
use remake::Remake;
let re = Remake::compile(r#"
    let foo_re = 'foo';
    foo_re | /bar/
    "#).unwrap();

assert!(re.is_match("bar"));
```

# Let Statements

As shown above, the `let` keyword can be used to bind expressions
to a name in the current scope.

# Error Messages

Nice error messages are key to developer productivity, so remake
endeavors to provide human friendly error messages. Remake error
messages implement a `Debug` instance written with the expectation
that the most common way to use remake is
`Remake::compile(...).unwrap()`. This means that the error messages
automatically show up with nice formatting in the middle of the
output from `rustc`. Good error messages are important, so if you
find one confusing and have an idea about how to improve it, please
[share your idea](https://github.com/ethanpailes/remake/issues).

## Example: A Bad Literal

The code

```rust,should_panic
use remake::Remake;
let _re = Remake::compile(r" /unclosed literal ").unwrap();
```

will fail with the error message

```text
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value:
remake parse error:
    at line 1, col 2:
    0001 >  /unclosed literal
            ^
Invalid token.
```

# Comments

remake has C-style comments like rust

```rust
use remake::Remake;
let re = Remake::compile(r#"
    // this is a line comment
    let foo_re = 'foo';
    /* and t


Helper<4>(codesIn, vintsIn, commonValue, prevVal, result);
        intsLeft -= 4;
    }
    switch (intsLeft) {
    case 0: default: break;
    case 1: _DecodeNHelper<1>(codesIn, vintsIn, commonValue, prevVal, result);
        break;
    case 2: _DecodeNHelper<2>(codesIn, vintsIn, commonValue, prevVal, result);
        break;
    case 3: _DecodeNHelper<3>(codesIn, vintsIn, commonValue, prevVal, result);
        break;
    };

    return numInts;
}

template <class Int>
size_t
_CompressIntegers(Int const *begin, size_t numInts, char *output, std::string *err)
{
    // Working space.
    std::unique_ptr<char[]>
        encodeBuffer(new char[_GetEncodedBufferSize<Int>(numInts)]);

    // Encode first.
    size_t encodedSize = _EncodeIntegers(begin, numInts, encodeBuffer.get());

    // Then compress.
    return LZ4Compression::CompressToBuffer(
        encodeBuffer.get(), output, encodedSize, err);
}

template <class Int>
size_t _DecompressIntegers(char const *compressed, size_t compressedSize,
                           Int *ints, size_t numInts, std::string *err, char *workingSpace)
{
    // Working space.
    size_t workingSpaceSize =
        Usd_IntegerCompression::GetDecompressionWorkingSpaceSize(numInts);
    std::unique_ptr<char[]> tmpSpace;
    if (!workingSpace) {
        tmpSpace.reset(new char[workingSpaceSize]);
        workingSpace = tmpSpace.get();
    }

    size_t decompSz = LZ4Compression::DecompressFromBuffer(
        compressed, workingSpace, compressedSize, workingSpaceSize, err);

    if (decompSz == 0)
        return 0;

    return _DecodeIntegers(workingSpace, numInts, ints);
}

} // anon

////////////////////////////////////////////////////////////////////////
// 32 bit.

size_t
Usd_IntegerCompression::GetCompressedBufferSize(size_t numInts)
{
    return LZ4Compression::GetCompressedBufferSize(
        _GetEncodedBufferSize<int32_t>(numInts));
}

size_t
Usd_IntegerCompression::GetDecompressionWorkingSpaceSize(size_t numInts)
{
    return _GetEncodedBufferSize<int32_t>(numInts);
}

size_t
Usd_IntegerCompression::CompressToBuffer(
    int32_t const *ints, size_t numInts, char *compressed, std::string *err)
{
    return _CompressIntegers(ints, numInts, compressed, err);
}

size_t
Usd_IntegerCompression::CompressToBuffer(
    uint32_t const *ints, size_t numInts, char *compressed, std::string *err)
{
    return _CompressIntegers(ints, numInts, compressed, err);
}

size_t
Usd_IntegerCompression::DecompressFromBuffer(
    char const *compressed, size_t compressedSize,
    int32_t *ints, size_t numInts, std::string *err, char *workingSpace)
{
    return _DecompressIntegers(compressed, compressedSize,
                               ints, numInts, err, workingSpace);
}

size_t
Usd_IntegerCompression::DecompressFromBuffer(
    char const *compressed, size_t compressedSize,
    uint32_t *ints, size_t numInts, std::string *err, char *workingSpace)
{
    return _DecompressIntegers(compressed, compressedSize,
                               ints, numInts, err, workingSpace);
}

////////////////////////////////////////////////////////////////////////
//


aml", ".git")
```

The best way of using it is to have a package.json in your project folder with the packages that you will use.
After installing with package.json, just create a `remappings.txt` with:

```
@OpenZeppelin/=node_modules/OpenZeppelin/openzeppelin-contracts@4.6.0/
```

You can omit the node_modules as well.

**Snippet to enable the language server:**
```lua
require'lspconfig'.solidity.setup{}
```

**Default values:**
  - `cmd` :
  ```lua
  { "solidity-ls", "--stdio" }
  ```
  - `filetypes` :
  ```lua
  { "solidity" }
  ```
  - `root_dir` :
  ```lua
  root_pattern("package.json", ".git")
  ```
  - `settings` :
  ```lua
  {
    solidity = {
      includePath = "",
      remapping = {}
    }
  }
  ```

## solidity_ls

https://github.com/juanfranblanco/vscode-solidity

`vscode-solidity-server` can be installed via `npm`:

```sh
npm install -g vscode-solidity-server
```

`vscode-solidity-server` is a language server for the Solidity language ported from the VSCode "solidity" extension.

**Snippet to enable the language server:**
```lua
require'lspconfig'.solidity_ls.setup{}
```

**Default values:**
  - `cmd` :
  ```lua
  { "vscode-solidity-server", "--stdio" }
  ```
  - `filetypes` :
  ```lua
  { "solidity" }
  ```
  - `root_dir` :
  ```lua
  root_pattern("hardhat.config.js", "hardhat.config.ts", "foundry.toml", "remappings.txt", "truffle.js", "truffle-config.js", "ape-config.yaml", ".git", "package.json")
  ```
  - `single_file_support` :
  ```lua
  true
  ```

## solidity_ls_nomicfoundation

https://github.com/NomicFoundation/hardhat-vscode/blob/development/server/README.md

`nomicfoundation-solidity-language-server` can be installed via `npm`:

```sh
npm install -g @nomicfoundation/solidity-language-server
```

A language server for the Solidity programming language, built by the Nomic Foundation for the Ethereum community.

**Snippet to enable the language server:**
```lua
require'lspconfig'.solidity_ls_nomicfoundation.setup{}
```

**Default values:**
  - `cmd` :
  ```lua
  { "nomicfoundation-solidity-language-server", "--stdio" }
  ```
  - `filetypes` :
  ```lua
  { "solidity" }
  ```
  - `root_dir` :
  ```lua
  root_pattern("hardhat.config.js", "hardhat.config.ts", "foundry.toml", "remappings.txt", "truffle.js", "truffle-config.js", "ape-config.yaml", ".git", "package.json")
  ```
  - `single_file_support` :
  ```lua
  true
  ```

## somesass_ls

https://github.com/wkillerud/some-sass/tree/main/packages/language-server

`some-sass-language-server` can be installed via `npm`:

```sh
npm i -g some-sass-language-server
```

The language server provides:

- Full support for @use and @forward, including aliases, prefixes and hiding.
- Workspace-wide code navigation and refactoring, such as Rename Symbol.
- Rich documentation through SassDoc.
- Language features for %placeholder-selectors, both


infoadd.jsp", ""},
	{"xtoa-oa", "/", "GET", "", "", "", "/images/default/first/xtoa_logo.png", ""},
	{"xtoa-oa", "/", "GET", "", "", "", "src=\"systemfiles/js/iawebclientactivexcheck.js\"", ""},
	{"xuanniao-traffic-management-platform", "/", "GET", "", "", "", "玄鸟流量管理平台", ""},
	{"xunruicms", "/", "GET", "", "", "", "alt=\"xunruicms\"", ""},
	{"xxl-job", "/", "GET", "", "", "", "分布式任务调度平台XXL-JOB", ""},
	{"xycms", "/", "GET", "", "", "", "advfile/ad12.js", ""},
	{"xyhcms", "/", "GET", "", "", "", "power by xyhcms", ""},
	{"yabb", "/", "GET", "", "", "", "yabbtime.gettime()", ""},
	{"yabb", "/", "GET", "", "", "", "/yabb.js", ""},
	{"yadongsoft-fs3", "/", "GET", "", "", "", "神盾fs3文档安全共享系统v2.0
", ""},
	{"yapi", "/", "GET", "", "", "", "YApi|可视化接口管理平台", ""},
	{"yearning", "/", "GET", "", "", "", "id=subnet", ""},
	{"yelala", "/", "GET", "", "", "", "/public/js/knockout-3.4.1.debug.js", ""},
	{"yelala", "/", "GET", "", "", "", "<form action=\"/index.php/home/login/login.html\" method=\"post\" id=\"login\" class=\"form\" data-bind=\"submit: submitform\">", ""},
	{"yfidea-oa", "/", "GET", "", "", "", "background=\"oa/images/index/oalogin.jpg\"", ""},
	{"yichao-crmreporting", "/", "GET", "", "", "", "href=\"/css/vendors~index.acfeb.css\"", ""},
	{"yichao-system", "/", "GET", "", "", "", "src=\"amy/webos/jpmanager.js\"", ""},
	{"yii-framework", "/", "GET", "", "", "", "get started with yii", ""},
	{"yioks-campus-football-management-platform", "/", "GET", "", "", "", "", ""},
	{"yiqi-cms", "/", "GET", "", "", "", "content=\"yiqicms", ""},
	{"yirui-iras", "/", "GET", "", "", "", "/authjsp/login.jsp", ""},
	{"yirui-iras", "/", "GET", "", "", "", "fe0174bb-f093-42af-ab20-7ec621d10488", ""},
	{"yiyu-opms", "/", "GET", "", "", "", "opms|opms管理系统,织蝶-企业应用系统为您的企业保驾护航", ""},
	{"yizhitong-e7", "/", "GET", "", "", "", "name=\"hidden_isbiaozhun\"", ""},
	{"ymail-optical-content-reading", "/", "GET", "", "", "", "/ymail/default/js/menu.js", ""},
	{"ymhome-oa", "/", "GET", "", "", "", "/yimioa.apk", ""},
	{"yongyou-ism", "/", "GET", "", "", "", "sheight*window.screen.deviceydpi", ""},
	{"yonyou-erp", "/", "GET", "", "", "", "login_main_bg", ""},
	{"yonyou-erp", "/", "GET", "", "", "", "login_owner", ""},
	{"yonyo


.serialNumberPhotoId,
    warrantyPeriod: warrantyPeriod ?? this.warrantyPeriod,
    cost: cost ?? this.cost,
    description: description ?? this.description,
  );

  factory Tool.fromMap(Map<String, dynamic> map) => Tool._(
    id: map['id'] as int,
    name: map['name'] as String,
    categoryId: map['categoryId'] as int?,
    supplierId: map['supplierId'] as int?,
    manufacturerId: map['manufacturerId'] as int?,
    datePurchased: map['datePurchased'] != null
        ? DateTime.parse(map['datePurchased'] as String)
        : null,
    serialNumber: map['serialNumber'] as String?,
    receiptPhotoId: map['receiptPhotoId'] as int?,
    serialNumberPhotoId: map['serialNumberPhotoId'] as int?,
    warrantyPeriod: map['warrantyPeriod'] as int?,
    cost: MoneyEx.moneyOrNull(map['cost'] as int?),
    description: map['description'] as String?,
    createdDate: DateTime.parse(map['createdDate'] as String),
    modifiedDate: DateTime.parse(map['modifiedDate'] as String),
  );

  @override
  Map<String, dynamic> toMap() => {
    'id': id,
    'name': name,
    'categoryId': categoryId,
    'supplierId': supplierId,
    'manufacturerId': manufacturerId,
    'datePurchased': datePurchased?.toIso8601String(),
    'serialNumber': serialNumber,
    'receiptPhotoId': receiptPhotoId,
    'serialNumberPhotoId': serialNumberPhotoId,
    'warrantyPeriod': warrantyPeriod,
    'cost': cost?.copyWith(decimalDigits: 2).minorUnits.toInt(),
    'description': description,
    'createdDate': createdDate.toIso8601String(),
    'modifiedDate': modifiedDate.toIso8601String(),
  };
}
import 'package:fsm2/fsm2.dart';

import '../entity/entity.g.dart';

/// --- Events (user actions) ---
sealed class JobEvent extends Event {
  final Job job;
  JobEvent(this.job);
}

class StartQuoting extends JobEvent {
  StartQuoting(super.job);
}

class SubmitQuote extends JobEvent {
  SubmitQuote(super.job);
}

class ApproveQuote extends JobEvent {
  ApproveQuote(super.job);
}

class PaymentReceived extends JobEvent {
  PaymentReceived(super.job);
}

class ScheduleJob extends JobEvent {
  ScheduleJob(super.job);
}

class StartWork extends JobEvent {
  StartWork(super.job);
}

class PauseJob extends JobEvent {
  PauseJob(super.job);
}

class ResumeJob extends JobEvent {
  ResumeJob(super.job);
}

class MaterialsArrived extends JobEvent {
  MaterialsArrived(super.job);
}

class CompleteJob extends JobEvent {
  CompleteJob(super.job);
}

class RaiseInvoice extends JobEvent {
  RaiseInvoice(super.job);
}

class RejectJob extends JobEvent {
  RejectJob(super.job);
}

/// Event factories so we can build real Event instances for guard
/// checking & firing.
final Map<Type, JobEvent Function(Job)> eventFactory = {
  StartQuoting: StartQuoting.new,
  SubmitQuote: SubmitQuote.new,
  ApproveQuote: ApproveQuote.new,
  PaymentReceived: PaymentReceived.new,
  ScheduleJob: ScheduleJob.new,
  StartWork: StartWork.new,
  PauseJob: PauseJob.new,
  ResumeJob: ResumeJob.new,
  MaterialsArrived: MaterialsArrived.new,
  CompleteJob: CompleteJob.new,
  RaiseInvoice: RaiseInvoice.new,
  RejectJob: RejectJob.new,
};

JobEvent createEvent<T extends JobEvent>(Job