equest (>>>) ", c.REDHB, 1, false, false, true, err, 1, 255, "")
	defer resp.Body.Close()
	body, err := ioutil.ReadAll(resp.Body)
	e.Warning_advanced("<RR6> Requests Module: Could not read the response body (>>>) ", c.REDHB, 1, false, false, true, err, 1, 255, "")
	sb := string(body)
	return resp.Status, len(sb), nil
}

//send the methodized request with body response
func Request_body(target string, method string) (string, int, string, error) {
	client := &http.Client{}
	req, err := http.NewRequest(method, target, nil)
	e.Warning_advanced("<RR6> Requests Module: Could not make a new PUT methodized request (>>>) ", c.REDHB, 1, false, false, true, err, 1, 255, "")
	resp, err := client.Do(req)
	e.Warning_advanced("<RR6> Requests Module: Could not send the methodized request (>>>) ", c.REDHB, 1, false, false, true, err, 1, 255, "")
	defer resp.Body.Close()
	body, err := ioutil.ReadAll(resp.Body)
	e.Warning_advanced("<RR6> Requests Module: Could not read the response body (>>>) ", c.REDHB, 1, false, false, true, err, 1, 255, "")
	sb := string(body)
	return resp.Status, len(sb), sb, nil
}

func Request_body_IO(target string, method string) (string, int, io.Reader, error) {
	client := &http.Client{}
	req, err := http.NewRequest(method, target, nil)
	e.Warning_advanced("<RR6> Requests Module: Could not make a new PUT methodized request (>>>) ", c.REDHB, 1, false, false, true, err, 1, 255, "")
	resp, err := client.Do(req)
	e.Warning_advanced("<RR6> Requests Module: Could not send the methodized request (>>>) ", c.REDHB, 1, false, false, true, err, 1, 255, "")
	body, err := ioutil.ReadAll(resp.Body)
	e.Warning_advanced("<RR6> Requests Module: Could not read the response body (>>>) ", c.REDHB, 1, false, false, true, err, 1, 255, "")
	sb := string(body)
	return resp.Status, len(sb), resp.Body, nil
}

func GET_val(target, method, key string) (string, uint) {
	cl := &http.Client{}
	req, e := http.NewRequest(method, target, nil)
	if e != nil {
		fmt.Println("<RR6> Request module: Could not make a new methodized request (>>>) ", c.REDHB, e)
	}
	resp, e := cl.Do(req)
	if e != nil {
		fmt.Println("<RR6> Request module: Could not execute the new methodized request (>>>) ", c.REDHB, e)
	}
	defer resp.Body.Close()
	_, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("<RR6> Request module: Could not read the response body (>>>) ", c.REDHB, e)
	}
	return resp.Header.Get("server"), 0x00
}

func LOOKUP_A_DNS_RECORD(fqdn, serverAddr string) ([]string, error) {
	var m dns.Msg
	var ips []string
	m.SetQuestion(dns.Fqdn(fqdn), dns.TypeA)
	in, err := dns.Exchange(&m, serverAddr)
	if err != nil {
		return ips, err
	}
	if len(in.Answer) < 1 {
		return ips, errors.New("no answer")
	}
	for _, answer := range in.Answer {
		if a, ok := answer.(*dns.A); ok {
			ips = append(ips, a.A.String())
		}
	}
	return ips, nil
}

func Look_CNAME


// Path: misskey.serverRules_
class _TranslationsMisskeyServerRulesIdId extends TranslationsMisskeyServerRulesEnUs {
	_TranslationsMisskeyServerRulesIdId._(TranslationsIdId root) : this._root = root, super.internal(root);

	final TranslationsIdId _root; // ignore: unused_field

	// Translations
	@override String get description => 'Daftar peraturan akan ditampilkan sebelum pendaftaran. Mengatur ringkasan dari Syarat dan Ketentuan sangat direkomendasikan.';
}

// Path: misskey.serverSettings_
class _TranslationsMisskeyServerSettingsIdId extends TranslationsMisskeyServerSettingsEnUs {
	_TranslationsMisskeyServerSettingsIdId._(TranslationsIdId root) : this._root = root, super.internal(root);

	final TranslationsIdId _root; // ignore: unused_field

	// Translations
	@override String get iconUrl => 'URL ikon';
	@override String appIconDescription({required Object host}) => 'Tentukan ikon yang digunakan ketika ${host} ditampilkan sebagai aplikasi.';
	@override String get appIconUsageExample => 'Contoh: Sebagai PWA, atau ketika ditampilkan sebagai markah layar beranda pada ponsel';
	@override String get appIconStyleRecommendation => 'Karena ikon berkemungkinan dipotong menjadi persegi atau lingkaran, ikon dengan margin terwanai di sekeliling konten sangat direkomendasikan.';
	@override String appIconResolutionMustBe({required Object resolution}) => 'Minimum resolusi adalah ${resolution}.';
	@override String get manifestJsonOverride => 'Ambil alih manifest.json';
	@override String get shortName => 'Nama pendek';
	@override String get shortNameDescription => 'Inisial untuk nama instansi yang dapat ditampilkan apabila nama lengkap resmi terlalu panjang.';
	@override String get fanoutTimelineDescription => 'Dapat meningkatkan performa dalam pengambilan data linimasa dan mengurangi beban pada database ketika dinyalakan. Sebagai gantinya, penggunaan memory pada Redis akan meningkan. Pertimbangkan untuk menonaktifkan fitur ini jika mengalami kekurangan memori pada server atau menyebabkan server tidak stabil.';
	@override String get fanoutTimelineDbFallback => 'Fallback ke database';
	@override String get fanoutTimelineDbFallbackDescription => 'Ketika diaktifkan, lini masa akan fallback ke database untuk melakukan kueri tambahan apabila linimasa tidak disimpan dalam cache. Menonaktifkan ini dapat mengurangi beban server dengan mengeliminasi proses fallback, namun dapat berakibat membatasi jarak data dari lini masa yang dapat diambil.';
}

// Path: misskey.accountMigration_
class _TranslationsMisskeyAccountMigrationIdId extends TranslationsMisskeyAccountMigrationEnUs {
	_TranslationsMisskeyAccountMigrationIdId._(TranslationsIdId root) : this._root = root, super.internal(root);

	final TranslationsIdId _root; // ignore: unused_field

	// Translations
	@override String get moveFrom => 'Pindahkan akun lain ke akun ini';
	@override String get moveFromSub => 'Buat alias ke akun lain';
	@override String moveFromLabel({required Object n}) => 'Akun asli #${n}';
	@override String get moveFromDescription => 'Kamu harus membu


// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.

#include "../assembly.h"

#ifdef __x86_64__

// _chkstk (_alloca) routine - probe stack between %rsp and (%rsp-%rax) in 4k increments,
// then decrement %rsp by %rax.  Preserves all registers except %rsp and flags.
// This routine is windows specific
// http://msdn.microsoft.com/en-us/library/ms648426.aspx

.text
.balign 4
DEFINE_COMPILERRT_FUNCTION(__alloca)
        mov    %rcx,%rax        // x64 _alloca is a normal function with parameter in rcx
        // fallthrough
DEFINE_COMPILERRT_FUNCTION(___chkstk)
        push   %rcx
        cmp    $0x1000,%rax
        lea    16(%


_parse_language_spanish(string postTitle)
        {
            var result = LanguageParser.ParseLanguages(postTitle);
            result.Should().Contain(Language.Spanish);
        }

        [TestCase("Title.the.Series.2009.S01E14.German.HDTV.XviD-LOL")]
        [TestCase("Title.the.Series.S04E15.Brotherly.Love.GERMAN.DUBBED.WS.WEBRiP.XviD.REPACK-TVP")]
        [TestCase("The Series Title - S02E16 - Kampfhaehne - mkv - by Videomann")]
        [TestCase("Series.Title.S01E03.Ger.Dub.AAC.1080p.WebDL.x264-TKP21")]
        [TestCase("Series Title S01 Eng Fre Ger Ita Spa Cze Jpn 2160p BluRay Remux DV HDR HEVC Atmos SGF")]
        [TestCase("Series Title.S01.Eng.Fre.Ger.Ita.Por.Spa.2160p.WEBMux.DV.HDR.HEVC.Atmos-SGF")]
        [TestCase("Series.Title.S02E10.Episode.Title.German.DL.BD.x264-TVS")]
        [TestCase("Series Title S01 Eng Fre Ger Ita Por Spa 2160p WEBMux HDR HEVC DDP SGF")]
        [TestCase("Series Title S01 KOREAN ENG FRA GER ITA SPA MULTI 2160p NF WEB DL DDP5 1 DV HDR x265 Atmos MassModz")]
        [TestCase("Series.Title.S02E09.EpisodeName.German.DL.BD.x264-TVS")]
        [TestCase("Series.Title.S01E10.EpisodeName.SwissGerman.WEB-DL.h264-RlsGrp")]
        public void should_parse_language_german(string postTitle)
        {
            var result = LanguageParser.ParseLanguages(postTitle);
            result.Should().Contain(Language.German);
        }

        [TestCase("Title.the.Series.2009.S01E14.Italian.HDTV.XviD-LOL")]
        [TestCase("Title.the.Series.1x19.ita.720p.bdmux.x264-novarip")]
        [TestCase("Title.the.Series.ENG-FRE-ITA.AAC.1080p.WebDL.x264")]
        [TestCase("Title the Series (BDrip 1080p ENG-FRE-ITA) Multisub x264")]
        public void should_parse_language_italian(string postTitle)
        {
            var result = LanguageParser.ParseLanguages(postTitle);
            result.Should().Contain(Language.Italian);
        }

        [TestCase("Title.the.Series.2009.S01E14.Danish.HDTV.XviD-LOL")]
        public void should_parse_language_danish(string postTitle)
        {
            var result = LanguageParser.ParseLanguages(postTitle);
            result.Should().Contain(Language.Danish);
        }

        [TestCase("Title.the.Series.2009.S01E14.Dutch.HDTV.XviD-LOL")]
        public void should_parse_language_dutch(string postTitle)
        {
            var result = LanguageParser.ParseLanguages(postTitle);
            result.Should().Contain(Language.Dutch);
        }

        [TestCase("Title.the.Series.2009.S01E14.Japanese.HDTV.XviD-LOL")]
        [TestCase("[Erai-raws] To Be Series - 14 (JA) [1080p CR WEB-DL AVC AAC][MultiSub]")]
        public void should_parse_language_japanese(string postTitle)
        {
            var result = LanguageParser.ParseLanguages(postTitle);
            result.Should().Contain(Language.Japanese);
        }


id="_CPPv4N3ral2io13sqlite_parser16parse_cudf_bool8EPvNSt6size_tENSt6size_tEPNSt6vectorINSt6int8_tEEE">
std::uint8_t parse_cudf_bool8(void*, std::size_t, std::size_t, std::vector<std::int8_t>*) override¶

std::uint8_t parse_cudf_timestamp_days(void*, std::size_t, std::size_t, cudf_string_col*) override¶

<span id="_CPPv3N3ral2io13sqlite_parser28parse_cudf_timestamp_secondsEPvNSt6size_tENSt6size_tE


��정 반지",
[11966] = "작은 동전 자루",
[11967] = "지르콘 고리",
[11968] = "호박석 고리",
[11969] = "백합 고리",
[11970] = "첨정석 반지",
[11971] = "자수정 고리",
[11972] = "홍옥수 실반지",
[11973] = "적철광 고리",
[11974] = "남옥 반지",
[11975] = "황옥 반지",
[11976] = "붉은줄마노 반지",
[11977] = "뱀 실반지",
[11978] = "석영 고리",
[11979] = "감람석 고리",
[11980] = "오팔 반지",
[11981] = "흑연 고리",
[11982] = "녹빛 고리",
[11983] = "크롬 반지",
[11984] = "코발트 반지",
[11985] = "감청색 반지",
[11986] = "탈륨 고리",
[11987] = "이리듐 고리",
[11988] = "텔루르 고리",
[11989] = "바나듐 실반지",
[11990] = "셀렌 실반지",
[11991] = "수은 반지",
[11992] = "주홍 고리",
[11993] = "진흙 반지",
[11994] = "산호 고리",
[11995] = "상아 고리",
[11996] = "현무암 반지",
[11997] = "녹옥 고리",
[11998] = "흑옥 실반지",
[11999] = "자철광 고리",
[12000] = "절단의 가로날도끼",
[12001] = "마노 반지",
[12002] = "대리석 고리",
[12003] = "검은 드워프 맥주잔",
[12004] = "흑요석 고리",
[12005] = "화강암 반지",
[12006] = "초원 반지",
[12007] = "대평원 반지",
[12008] = "사바나 반지",
[12009] = "동토 반지",
[12010] = "연못 반지",
[12011] = "수목 고리",
[12012] = "습지 반지",
[12013] = "사막 반지",
[12014] = "북극 반지",
[12015] = "늪지 반지",
[12016] = "정글 반지",
[12017] = "프리즘 고리",


--expires-in**=<duration>] [**--pid**=<int>] [**--pid-file**=<file>]
[**--signal**=<int>] [**--exec**=<string>] [**--rekey-period**=<duration>]`,
		Description: `
**step ca rekey** command rekeys the given certificate (with a request to the
certificate authority) and writes the new certificate and private key
to disk - either overwriting <crt-file> and <key-file> positional arguments
or using new files when the **--out-cert**=<file> and **--out-key**=<file>
flags are used.

With the **--daemon** flag the command will periodically update the given
certificate. By default, it will rekey the certificate before 2/3 of the validity
period of the certificate has elapsed. A random jitter is used to avoid multiple
instances running at the same time. The amount of time between rekey and
certificate expiration can be configured using the **--expires-in** flag, or a
fixed period can be set with the **--rekey-period** flag.

The **--daemon** flag can be combined with **--pid**, **--signal**, or **--exec**
to provide certificate reloads on your services.

The **--kms** flag rekeys an existing key in a KMS with another key from the same
KMS. It does not support generating new keys, using the **--daemon** flag, or
rekeying across different KMS instances.

## POSITIONAL ARGUMENTS

<crt-file>
:  The certificate in PEM format that we want to rekey.

<key-file>
:  They key file of the certificate.

## EXAMPLES

Rekey a certificate:
'''
$ step ca rekey internal.crt internal.key
'''

Rekey a certificate without overwriting the existing certificate and key:
'''
$ step ca rekey --out-cert out.crt --out-key out.key internal.crt internal.key
'''

Rekey a certificate forcing the overwrite of the previous certificate and key
(overwrites the existing files without prompting):
'''
$ step ca rekey --force internal.crt internal.key
'''

Rekey a certificate which key is in a KMS, with another from the same KMS:
'''
$ step ca rekey \
  --kms 'pkcs11:module-path=/usr/local/lib/softhsm/libsofthsm2.so;token=smallstep?pin-value=password' \
  --private-key 'pkcs11:id=4002'
  pkcs11.crt 'pkcs11:id=4001'
'''

Rekey a certificate providing the <--ca-url> and <--root> flags:
'''
$ step ca rekey --ca-url https://ca.smallstep.com:9000 \
  --root /path/to/root_ca.crt internal.crt internal.key
Would you like to overwrite internal.crt [Y/n]: y
'''

Rekey a certificate only if it expires within the given time frame:
'''
$ step ca rekey --expires-in 8h internal.crt internal.key
'''

Rekey the certificate before 2/3 of the validity has passed:
'''
$ step ca rekey --daemon internal.crt internal.key
'''

Rekey the certificate before 8 hours and 30m of the expiration time:
'''
$ step ca rekey --daemon --expires-in 8h30m internal.crt internal.key
'''

Rekey the certificate every 16h:
'''
$ step ca rekey --daemon --rekey-period 16h internal.crt internal.key
'''

Rekey the certificate and reload nginx:
'''
$ step ca rekey --daemon --exec "nginx -s reload" internal.crt internal.key
'''

Rekey the certificate and convert it to DER:
'''
$ step ca rekey --daemon --rekey-period 16h \
  --exec "step certificate format --force --out internal.der internal.crt" \
  internal.crt internal.key
'''

Rekey a certificate using the offline mode, requires the configurati


		optional(false) {
			println(SeqUtils.toString(res))
		}
		assertEquals(2, res[3])

		val graph1 = FrontStarGraph(3, 3)
		graph1[1, 2] = -1
		graph1[2, 3] = -1
		graph1[3, 1] = -1
		try {
			graph1.spfa(1)
		} catch (e: GraphException) {
			println("exception successfully thrown!")
		} catch (e: Throwable) {
			fail("exception not caught!")
		} finally {
		}
	}

	@TestOnly
	@Test(timeout = 10)
	fun testFillingNum() {
		println(org.algo4j.graph.Graph.ORIGINAL_FILLING_VALUE)
	}

	@TestOnly
	@Test(timeout = 1000)
	fun testBellmanFord() {
		val edgeCount = 500
		val graph = FrontStarGraph(100, edgeCount)
		val rand = Random(System.currentTimeMillis())
		loop(edgeCount) {
			val from = rand.nextInt(95) + 1
			val to = rand.nextInt(95) + 1
			val value = rand.nextInt(233333)
			graph.addEdge(from, to, value)
		}
		optional(false) {
			graph
					.spfa(1)
					.map {
						println(it)
						return@map it
					}
					.toIntArray()
			println("")
			graph
					.bellmanFord(1)
					.map {
						println(it)
						return@map it
					}
					.toIntArray()
		}
		for (i in 2..98) {
			optional(false) {
				println(i)
			}
			forceRun {
				assertArrayEquals(
						graph.spfa(i),
						graph.bellmanFord(i)
				)
			}
		}
	}

	/**
	 * data from vijos:
	 * https://vijos.org/p/1190
	 *
	 * 4 5
	 * 1 2 3
	 * 1 4 5
	 * 2 4 7
	 * 2 3 6
	 * 3 4 8
	 */
	@TestOnly
	@Test(timeout = 5000)
	fun testKruskal() {
		val graph = FrontStarGraph(4, 5 shl 1)
		graph[1, 2] = 3
		graph[2, 1] = 3
		graph[1, 4] = 5
		graph[4, 1] = 5
		graph[2, 4] = 7
		graph[4, 2] = 7
		graph[2, 3] = 6
		graph[3, 2] = 6
		graph[3, 4] = 8
		graph[4, 3] = 8
		assertEquals(14, graph
				.kruskal()
				.valueSum
		)
	}

	@TestOnly
	@Test(timeout = 1000)
	fun testGetEdges() {
		val graph = FrontStarGraph(4, 5 shl 1)
		graph[1, 2] = 3
		graph[2, 1] = 3
		graph[1, 2] = 4
		graph[2, 1] = 4
		graph[1, 2] = 5
		graph[2, 1] = 5
		graph[1, 4] = 5
		graph[4, 1] = 5
		assertArrayEquals(intArrayOf(3, 4, 5), graph[1, 2])
		assertArrayEquals(intArrayOf(5), graph[1, 4])
	}

	@TestOnly
	@Test(timeout = 1000)
	fun testDfs() {
		val graph = FrontStarGraph(4, 4 shl 1)
		graph[1, 2] = 3
		graph[2, 1] = 3
		graph[1, 2] = 4
		graph[2, 1] = 4
		graph[1, 2] = 5
		graph[2, 1] = 5
		graph[1, 4] = 5
		graph[4, 1] = 5
		var count = 0
		graph.dfs(1, 0, { _, last ->
			count++
			return@dfs last + 1
		})
		assertEquals(graph.addedEdgeCount, count)
	}

	companion object Initializer {
		@BeforeClass
		@JvmStatic
		fun loadJniLibrary() = Loader.loadJni()
	}
}
package org.ice1000.devkt.ui

import org.ice1000.devkt.useDarculaLaf
import java.awt.BorderLayout
import java.awt.event.ActionEvent
import java.awt.event.ItemEvent
import java.awt.event.ItemListener
import java.awt.event.KeyEv


"INV_Sword_11", "=q3=Barbarous Blade",              "=ds=#h2#, #w10#", " 16.44%" },
        { 18523, "INV_Misc_Orb_01", "=q3=Brightly Glowing Stone",    "=ds=#s15#", " 20.21%" },
        { 18522, "INV_Jewelry_Ring_32", "=q3=Band of the Ogre King", "=ds=#s13#", "14.96%" },
        { 0, "", "", "" },
        { 19258, "INV_Misc_Ticket_Tarot_Warlord_01", "=q3=Ace of Warlords", "=ds=#e19#", "1.84%" },
        { 0, "", "", "" },
        { 18780, "INV_Misc_Note_06", "=q3=Top Half of Advanced Armorsmithing: Volume I", "=ds=#m1#", "6.00%" },
        { 12727, "INV_Scroll_05", "=q3=Plans: Enchanted Thorium Breastplate", "=ds=#m4#" },
        { 0, "", "", "" },
        { 0, "", "", "" },
        { 0, "INV_Misc_Bag_09", "=q6=Cho'Rush the Observer", "" },
        { 18490, "INV_Helmet_41", "=q3=Insightful Hood", "=ds=#s1#, #a2#", "21.46%" },
        { 18485, "INV_Shield_13", "=q3=Observer's Shield", "=ds=#h4#, #w8#", "22.96%" },
        { 18484, "INV_Weapon_ShortBlade_04", "=q3=Cho'Rush's Blade", "=ds=#h1# #w10#", "22.46%" },
        { 18483, "INV_Wand_05", "=q3=Mana Channeling Wand", "=ds=#w12#", "19.01%" },
        };

    DMNTRIBUTERUN = {
        { 18538, "INV_Axe_10", "=q4=Treant's Bane",                 "=ds=#h2#, #w1#" },
        { 0, "", "", "" },
        { 18495, "INV_Misc_Cape_21", "=q3=Redoubt Cloak",           "=ds=#s4#" },
        { 18532, "INV_Chest_Cloth_29", "=q3=Mindsurge Robe",        "=ds=#s5#, #a1#" },
        { 0, "", "", "" },
        { 18528, "INV_Shoulder_26", "=q3=Cyclone Spaulders",        "=ds=#s3#, #a2#" },
        { 18530, "INV_Chest_Chain_12", "=q3=Ogre Forged Hauberk",   "=ds=#s5#, #a3#" },
        { 18529, "INV_Belt_18", "=q3=Elemental Plate Girdle",    "=ds=#s10#, #a4#" },
        { 18533, "INV_Bracer_14", "=q3=Gordok Bracers of Power",    "=ds=#s8#, #a4#" },
        { 18534, "INV_Staff_32", "=q3=Rod of the Ogre Magi",        "=ds=#h2#, #w9#" },
        { 18531, "INV_Hammer_22", "=q3=Unyielding Maul",            "=ds=#h2#, #w6#" },
        { 18499, "INV_Shield_10", "=q3=Barrier Shield",             "=ds=#w8#" },
        { 18500, "INV_Jewelry_Ring_13", "=q3=Tarnished Elven Ring", "=ds=#s13#" },
        { 18537, "INV_Stone_02", "=q3=Counterattack Lodestone",     "=ds=#s14#" },
        { 0, "", "", "" },


Torneträsk	68.3916	18.86112
Törneryd	56.23333	15
Torneryd	56.2	15.25
Törnerum	56.81667	16.38306
Törnemåla	56.48333	15.86667
Tornehamn	68.43132	18.67178
Törneby	56.9	16.73333
Torne	56.7	14.6
Törnbyviken	59.31667	17.7
Törnby	59.33333	17.71667
Tornby	58.58333	16.28333
Törnby	58.86667	17.18306
Tornby	58.46667	15.2
Tornby	58.43333	15.6
Törnbotten	56.66667	16.53333
Tornbergstorp	59.71667	14.83333
Törnberget	61.9	15.38333
Törnberget	59.46392	17.94394
Tornberget	59.13306	18.01667
Tornasjön	56.68419	14.10765
Tornäs	63.65	14.65
Tornarp	57.98333	13.41667
Törnamåla	56.48333	14.93333
Törnåkra	56.81667	14.6
Törnåkra	56.23333	15.91667
Törnabygd	56.56667	14.73333
Törna	63.01667	18.16667
Törn	56.56667	15.51667
Tormundgärde	58.01667	12.88333
Tormosseberg	59.03333	15.81667
Tormorup	57.03333	12.65
Tormestorp	56.11667	13.73333
Tormastorp	55.81667	13.81667
Tormarp	56.45	13.11667
Tormansbyn	59	12.16667
Tormansbygd	56.45	13.48333
Torlunda	57.85	13.36667
Torlunda	59.33333	17.2
Torlunda	58.58333	16.05
Torlunda	58.53333	15.78333
Torlarp	56.16667	12.83333
Torlarp	56.9	14.01667
Torkö	56.15	15.4
Torkö	56.15	15.4
Torkhushöjden	59.83333	14.23333
Torkholmsjön	60.55525	17.02486
Torkelstorp	57.43894	12.11131
Torkelstorp	56.88333	12.76667
Torkelstorp	55.48333	13.18333
Torkelsbyn	59.3	12
Torkeln	60.51667	17.68333
Töringe	56.95	12.5
Torim	58.8	11.35
Torhult	57.76667	13.71667
Torhult	56.63333	14.53333
Torhult	56.48333	15.75
Torholmen	57.75	11.75
Torhamns Udde	56.075	15.83333
Torhamnsfjärden	56.08333	15.8
Torhamn	56.1	15.83333
Torgunnehagen	58.56667	12.45
Torgrinsbyn	58.78333	12.4
Torgilsrud	59.81667	12.18333
Torget	57.43333	15.1
Torgestad	58.33333	11.53333
Torgesta	59.66667	16.9
Torgelsholmen	58.81667	11.18333
Torgelsbyn	59


// code: A n_bits-bit integer. If == -1, then EOF. This assumes
    // that n_bits =< wordsize - 1.
    // Outputs:
    // Outputs code to the file.
    // Assumptions:
    // Chars are 8 bits long.
    // Algorithm:
    // Maintain a BITS character long buffer (so that 8 codes will
    // fit in it exactly). Use the VAX insv instruction to insert each
    // code in turn. When the buffer fills up empty it and start over.
    var cur_accum = 0
    var cur_bits = 0
    var masks = intArrayOf(
        0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, 0x01FF,
        0x03FF, 0x07FF, 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF
    )

    // Number of characters so far in this 'packet'
    var a_count = 0

    // Define the storage for the packet accumulator
    var accum = ByteArray(256)

    // Add a character to the end of the current packet, and if it is 254
    // characters, flush the packet to disk.
    @Throws(IOException::class)
    fun char_out(c: Byte, outs: OutputStream) {
        accum[a_count++] = c
        if (a_count >= 254) flush_char(outs)
    }

    // Clear out the hash table
    // table clear for block compress
    @Throws(IOException::class)
    fun cl_block(outs: OutputStream) {
        cl_hash(hsize)
        free_ent = ClearCode + 2
        clear_flg = true
        output(ClearCode, outs)
    }

    // reset code table
    fun cl_hash(hsize: Int) {
        for (i in 0 until hsize) htab[i] = -1
    }

    @Throws(IOException::class)
    fun compress(init_bits: Int, outs: OutputStream) {
        var fcode: Int
        var i /* = 0 */: Int
        var c: Int
        var ent: Int
        var disp: Int
        val hsize_reg: Int
        var hshift: Int

        // Set up the globals: g_init_bits - initial number of bits
        g_init_bits = init_bits

        // Set up the necessary values
        clear_flg = false
        n_bits = g_init_bits
        maxcode = MAXCODE(n_bits)
        ClearCode = 1 shl init_bits - 1
        EOFCode = ClearCode + 1
        free_ent = ClearCode + 2
        a_count = 0 // clear packet
        ent = nextPixel()
        hshift = 0
        fcode = hsize
        while (fcode < 65536) {
            ++hshift
            fcode *= 2
        }
        hshift = 8 - hshift // set hash code range bound
        hsize_reg = hsize
        cl_hash(hsize_reg) // clear hash table
        output(ClearCode, outs)
        outer_loop@ while (nextPixel().also { c = it } != EOF) {
            fcode = (c shl maxbits) + ent
            i = c shl hshift xor ent // xor hashing
            if (htab[i] == fcode) {
                ent = codetab[i]
                continue
            } else if (htab[i] >= 0) // non-empty slot
            {
                disp = hsize_reg - i // secondary hash (after G. Knott)
                if (i == 0) disp = 1
                do {
                    if (disp.let { i -= it; i } < 0) i += hsize_reg
                    if (htab[i] == fcode) {
                        ent = codetab[i]
                        continue@outer_loop
                    }
                } while (htab[i] >= 0)
            }
            output(ent, outs)
            ent = c
            if (free_ent < maxmaxcode) {
                codetab[i] = free_ent++ // code -> hashtable


exceptionMessage) + ' at\n' + decodeURI(stringifiedStack) + '\n\n';
        Logger.log(msg);

        if (!environment.production) {
          alert(msg);
        }
      };

      StackTrace.fromError(exception)
        .then(callback)
        .catch(errback);

    } catch (e) {
      const error = e as Error;
      Logger.log('Logger.exception: ' + error.message);
    }
  }

  public static log(mex: unknown, ...args: any[]): void {
    // tslint:disable:no-console
    if (console !== undefined) {
      console.log(mex);
    }
    // tslint:enable:no-console
  }

  public static warn(mex: unknown, ...args: any[]) {
    // tslint:disable:no-console
    if (console !== undefined) {
      console.warn(mex);
    }
    // tslint:enable:no-console
  }

  protected static getPath(url: string): string {
    try {

      if (TypeDetect.isString(url) === false || !url || url.length === 0) {
        return '/';
      }

      let returnPath = url.indexOf('#') === -1 ? (url.startsWith('/') === true ? url : '/') : url.slice(url.indexOf('#') + 1);

      if (returnPath[returnPath.length - 1] !== '/') {
        returnPath = returnPath + '/';
      }

      return returnPath;
    } catch (e) {
      Logger.exception(this, e);
      return '/';
    }
  }
}
export default class DestinationElement extends Entity {
    addExtension: () => never;
    removeExtension: () => never;
    /**
     * Set the destination property
     * @param destination
     * @return the destination instance
     */
    setDestination(destination: string): DestinationElement;
    /**
     * Getter for the destination property
     * @return - the destination
     */
    getDestination(): string;
    /**
     * Set the type property
     * @param type
     * @return the destination instance
     */
    setType(type: string): DestinationElement;
    /**
     * Getter for the type property
     * @return - the type
     */
    getType(): string;
}
import Entity from "../Entity";
import * as whatwgUrl from 'whatwg-url';
import parseDataURL, { fromURLRecord } from 'data-urls';

// test type exports
type DataURL = parseDataURL.DataURL;

const url = 'data:text/html,%3Ch1%3EHello%2C%20DefinitelyTyped!%3C%2Fh1%3E';
const urlRecord = whatwgUrl.parseURL(url);

// $ExpectType DataURL | null
const dataUrl = parseDataURL(url);

if (urlRecord !== null) {
    // $ExpectType DataURL | null
    fromURLRecord(urlRecord);
}

if (dataUrl != null) {
    dataUrl.mimeType; // $ExpectType MIMEType
    dataUrl.body; // $ExpectType Uint8Array
}
import { getMd5 } from "./md5Util";

describe("getMd5 tests", () => {
    it("calculates md5 on non-empty string", () => {
        expect(getMd5("Sentence 2.1၊ Sentence 2.2")).toBe(
            "ad15831c388fb93285cbb18306a4b734"
        );
    });

    it("calculates md5 on an empty string", () => {
        expect(getMd5("")).toBe("d41d8cd98f00b204e9800998ecf8427e");
    });
});
interface ReviewInterface {
  review_id: number;
  camp_id: number;
  user_id: string;
  rating: number;
  title: string;
  body: string;
  regDate: string;
}

class Review {
  private review_id: number;
  private camp_id: number;
  pr


wmIssueHeader);
        Long headerId = wmIssueHeader.getIssueId()==null?-1l:wmIssueHeader.getIssueId();
        if(StringUtils.isNotNull(header) && headerId.longValue() !=header.getIssueId().longValue()){
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }

    /**
     * 新增生产领料单头
     *
     * @param wmIssueHeader 生产领料单头
     * @return 结果
     */
    @Override
    public int insertWmIssueHeader(WmIssueHeader wmIssueHeader)
    {
        wmIssueHeader.setCreateTime(DateUtils.getNowDate());
        return wmIssueHeaderMapper.insertWmIssueHeader(wmIssueHeader);
    }

    /**
     * 修改生产领料单头
     *
     * @param wmIssueHeader 生产领料单头
     * @return 结果
     */
    @Override
    public int updateWmIssueHeader(WmIssueHeader wmIssueHeader)
    {
        wmIssueHeader.setUpdateTime(DateUtils.getNowDate());
        return wmIssueHeaderMapper.updateWmIssueHeader(wmIssueHeader);
    }

    /**
     * 批量删除生产领料单头
     *
     * @param issueIds 需要删除的生产领料单头主键
     * @return 结果
     */
    @Override
    public int deleteWmIssueHeaderByIssueIds(Long[] issueIds)
    {
        return wmIssueHeaderMapper.deleteWmIssueHeaderByIssueIds(issueIds);
    }

    /**
     * 删除生产领料单头信息
     *
     * @param issueId 生产领料单头主键
     * @return 结果
     */
    @Override
    public int deleteWmIssueHeaderByIssueId(Long issueId)
    {
        return wmIssueHeaderMapper.deleteWmIssueHeaderByIssueId(issueId);
    }

    @Override
    public List<IssueTxBean> getTxBeans(Long issueId) {
        return wmIssueHeaderMapper.getTxBeans(issueId);
    }
}
package com.ktg.mes.wm.service.impl;

import java.util.List;

import com.ktg.common.constant.UserConstants;
import com.ktg.common.utils.DateUtils;
import com.ktg.common.utils.StringUtils;
import com.ktg.mes.wm.domain.tx.RtIssueTxBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ktg.mes.wm.mapper.WmRtIssueMapper;
import com.ktg.mes.wm.domain.WmRtIssue;
import com.ktg.mes.wm.service.IWmRtIssueService;

/**
 * 生产退料单头Service业务层处理
 *
 * @author yinjinlu
 * @date 2022-09-15
 */
@Service
public class WmRtIssueServiceImpl implements IWmRtIssueService
{
    @Autowired
    private WmRtIssueMapper wmRtIssueMapper;

    /**
     * 查询生产退料单头
     *
     * @param rtId 生产退料单头主键
     * @return 生产退料单头
     */
    @Override
    public WmRtIssue selectWmRtIssueByRtId(Long rtId)
    {
        return wm


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TheBoxSoftware.DeveloperSuite.PEViewer.Model.MetadataWrappers {
	using TheBoxSoftware.Reflection.Core.COFF;
	using TheBoxSoftware.Reflection.Core;

	internal class ConstantMetadataWrapper {
		public ConstantMetadataWrapper(MetadataStream file, List<MetadataRow> methods) {
			this.Items = new List<ConstantEntry>();
			foreach (ConstantMetadataTableRow current in methods) {
				this.Items.Add(new ConstantEntry(file.OwningFile.GetMetadataDirectory(),


roperty("time") String time,
                     @JsonProperty("weekDays") List<String> weekDays) {

    this.frequency = SearchParamValidator.enumUpperValue(Frequency.class, frequency, "frequency");
    this.value = value;

    switch (this.frequency) {
      case MINUTELY:
      case HOURLY:
        try {
          this.intValue = Integer.valueOf(value + "");
        } catch (NumberFormatException e) {
          throw new IllegalArgumentException("Required number format value, if " + this.frequency);
        }
        break;
      case DAILY:
      case WEEKLY:
        this.time = time;
        if(!PolarisUtils.match(PolarisUtils.PATTERN_TIMES_FORMAT, this.time)) {
          throw new IllegalArgumentException("Required 'HH:mm' format value, if " + this.frequency);
        }

        if (CollectionUtils.isEmpty(weekDays)) {
          this.weekDays = Lists.newArrayList(Days.MON);
        } else {
          this.weekDays = weekDays.stream()
                                  .map(s -> EnumUtils.getUpperCaseEnum(Days.class, s))
                                  .filter(days -> days != null)
                                  .distinct()
                                  .collect(Collectors.toList());
        }
        break;
      case EXPR:
        this.expr = (String) value;
        try {
          CronExpression.validateExpression(this.expr);
        } catch (ParseException e) {
          throw new IllegalArgumentException("Invalid cron expression : " + e.getMessage());
        }
        break;
    }

  }

  public BatchPeriod(Frequency frequency) {
    this.frequency = frequency;
  }

  public BatchPeriod(Frequency frequency, Integer count) {
    this.frequency = frequency;
    this.value = count;
  }

  @JsonIgnore
  public String getCronExpr() {

    StringBuilder builder = new StringBuilder();
    switch (frequency) {
      case MINUTELY:
        builder.append("0 0/").append(getValueWithNull()).append(" * 1/1 * ? *");
        break;
      case HOURLY:
        builder.append("0 0 0/").append(getValueWithNull()).append(" 1/1 * ? *");
        break;
      case DAILY:
        builder.append("0 ");
        if (time == null) {
          builder.append("0 0 ");
        } else {
          builder.append(getTimeExpr(time)).append(" ");
        }
        builder.append("1/").append(getValueWithNull()).append(" * ? *");
        break;
      case WEEKLY:
        builder.append("0 ");
        if (time == null) {
          builder.append("0 0 ");
        } else {
          builder.append(getTimeExpr(time)).append(" ");
        }

        if (CollectionUtils.isEmpty(weekDays)) {
          weekDays = Lists.newArrayList(Days.MON);
        }

        builder.append("? * ")
                .append(String.join(",", weekDays.stream()
                        .map(day -> day.name())
                        .collect(Collectors.toList())))
                .append(" *");
        break;
      case EXPR:
        builder.append(expr);
        break;
    }

    return builder.toString();
  }

  @JsonIgnore
  public String getTimeExpr(String time) {
    List<Integer> hourMinute = PolarisUtils.findHourMinute(time);
    return hourMinute.get(1) + " " + hourMinute.get(0);
    // cron 분먼저
    //    return hourMinute.get(0) + " " + hourMinute.get(1);
  }

  @JsonIgnore
  public int getValueWithNull() {
    return intValue == null ? 1 : intValue;
  }

  public Frequency getFrequency() {
    return frequency;
  }

  public Object getValue() {
    return value;
  }

  public List<Days> getWeek


= "";
                Thread td = new Thread(() =>
                {
                    System.Windows.Forms.FolderBrowserDialog dialog = new System.Windows.Forms.FolderBrowserDialog();
                    dialog.Description = "请选择文件夹";
                    if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                    {
                        _path = dialog.SelectedPath;

                        refreshData(latch);

                        if (string.IsNullOrEmpty(dialog.SelectedPath))
                        {
                            SharedObject.Instance.Output(SharedObject.enOutputType.Error, "有一个错误产生", "文件夹路径不能为空!");
                            return;
                        }
                    }
                });
                td.TrySetApartmentState(ApartmentState.STA);
                td.IsBackground = true;
                td.Start();
                latch.Wait();
                SelectedFolder.Set(context, _path);

            }
            catch (Exception e)
            {
                SharedObject.Instance.Output(SharedObject.enOutputType.Error, "有一个错误产生", e.Message);
            }
        }
    }
}


bjects for a
 * while.
 */
public class UploadPartRequestFactory {
    private final String bucketName;
    private final String key;
    private final String uploadId;
    private final long optimalPartSize;
    private final File file;
    private final PutObjectRequest origReq;
    private int partNumber = 1;
    private long offset = 0;
    private long remainingBytes;
    private SSECustomerKey sseCustomerKey;
    private final int totalNumberOfParts;
    /**
     * traffic limit speed in second, the unit is bit/s
     */
    private int trafficLimit = 0;

    /**
     * Wrapped to provide necessary mark-and-reset support for the underlying
     * input stream. In particular, it provides support for unlimited
     * mark-and-reset if the underlying stream is a {@link FileInputStream}.
     */
    private ReleasableInputStream wrappedStream;

    public UploadPartRequestFactory(PutObjectRequest origReq, String uploadId, long optimalPartSize) {
        this.origReq = origReq;
        this.uploadId = uploadId;
        this.optimalPartSize = optimalPartSize;
        this.bucketName = origReq.getBucketName();
        this.key = origReq.getKey();
        this.file = TransferManagerUtils.getRequestFile(origReq);
        this.remainingBytes = TransferManagerUtils.getContentLength(origReq);
        this.sseCustomerKey = origReq.getSSECustomerKey();
        this.totalNumberOfParts = (int) Math.ceil((double) this.remainingBytes
                / this.optimalPartSize);
        if (origReq.getInputStream() != null) {
            wrappedStream = ReleasableInputStream.wrap(origReq.getInputStream());
        }
        this.trafficLimit = origReq.getTrafficLimit();
    }

    public synchronized boolean hasMoreRequests() {
        return (remainingBytes > 0);
    }

    public synchronized UploadPartRequest getNextUploadPartRequest() {
        long partSize = Math.min(optimalPartSize, remainingBytes);
        boolean isLastPart = (remainingBytes - partSize <= 0);

        UploadPartRequest req = null;
        if (wrappedStream != null) {
            req = new UploadPartRequest()
                .withBucketName(bucketName)
                .withKey(key)
                .withUploadId(uploadId)
                .withInputStream(new InputSubstream(wrappedStream, 0, partSize, isLastPart))
                .withPartNumber(partNumber++)
                .withPartSize(partSize)
                .withTrafficLimit(trafficLimit);
        } else {
            req = new UploadPartRequest()
                .withBucketName(bucketName)
                .withKey(key)
                .withUploadId(uploadId)
                .withFile(file)
                .withFileOffset(offset)
                .withPartNumber(partNumber++)
                .withPartSize(partSize)
                .withTrafficLimit(trafficLimit);
        }
        TransferManager.appendMultipartUserAgent(req);

        if (sseCustomerKey != null) req.setSSECustomerKey(sseCustomerKey);
        TransferManagerUtils.populateEndpointAddr(origReq, req);

        offset += partSize;
        remainingBytes -= partSize;

        req.setLastPart(isLastPart);

        req.withGeneralProgressListener(origReq.getGeneralProgressListener())
           ;
        req.getRequestClientOptions().setReadLimit(origReq.getReadLimit());
        return req;
    }

    public int getTotalNumberOfParts() {
        return totalNumberOfParts;
    }

}
package com.qcloud.cos.demo;

import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.model.BucketDomainConfiguration;
import com.qcloud.cos.model.DomainRule;
import com.qcloud.cos.region.Region;

public class BucketDomainDemo {
    private static void setGetDeleteBucketDomainDemo() {
        // 1 初始化用户身份信息(secretId, secretKey)
        COSCredentials cred = new BasicCOSCredentials("AKIDxxxxxxxx


"Hombreras de cólera labrada",
[35918] = "Guardacráneo con pinchos",
[35919] = "Manoplas soploacero",
[35920] = "Hombreras forradas con plumas",
[35921] = "Bufas reforzadas con sílex",
[35922] = "Sello Hierro Negro",
[35923] = "Bandas de hierro frío",
[35924] = "Brazales vinculados al arcanum",
[35925] = "Sortija de hierro frío fulgurante",
[35926] = "Leotardos trabajados con astucia",
[35927] = "Coraza cantoescama",
[35928] = "Quijotes de bronce forjados en frío",
[35929] = "Atadura de tejido gholam",
[35930] = "Botines de pellejo de huargo grabados",
[35931] = "Leotardos de malla de escamas labrados",
[35932] = "Sortija de regeneración de vinculador terrestre",
[35933] = "Gran yelmo con cuernos de carnero",
[35934] = "Apisonadoras aplastanecrófagos",
[35935] = "Runa de piedrafría imbuida",
[35936] = "Talismán de colmillo de huargo",
[35937] = "Licor de luna del patio trasero de Braxley",
[35938] = "Mantón de munificencia",
[35939] = "Monster - Sword - 2H - Koltira Deathweaver",
[35941] = "Carta de Colmillosauro",
[35942] = "Monster - Staff, Greatmother Icemist",
[35943] = "Herramientas de Jeremiah",
[35944] = "Huesos de Escabroso",
[35945] = "Cristal luminoso",
[35946] = "Paracaídas de prácticas de Palanqueta",
[35947] = "Fungiescarcha chispeante",
[35948] = "Ciruela de nieve sabrosa",
[35949] = "Frutos de la tundra",
[35950] = "Pan de batata",
[35951] = "Salmón emperador pochado",
[35952] = "Queso curado salobre",
[35953] = "Caribú rociado con hidromiel",
[35954] = "Leche de cabra edulcorada",
[35955] = "Cinturón Lindeallá",
[35956] = "Escarpines Lindeallá",
[35957] = "Toga Lindeallá",
[35958] = "Guantes Lindeallá",
[35959] = "Caperuza Lindeallá",
[35960] = "Pantalones Lindeallá",
[35961] = "Hombreras Lindeallá",
[35962] = "Puños Lindeallá",
[35963] = "Fajín de sanguiespora",
[35964] = "Zapatos de sanguiespora",
[35965] = "Toga de sanguiespora",
[35966] = "Guantes de sanguiespora",
[35967] = "Caperuza de sanguiespora",
[35968] = "Leotardos de sanguiespora",
[35969] = "Manto de sanguiespora",
[35970] = "Brazaletes de sanguiespora",
[35971] = "Faja de Mur'crófago",
[35972] = "Botas de Mur'crófago",
[35973] = "Toga de Mur'crófago",
[35974] = "Manijas de Mur'crófago",
[35975] = "Almete de Mur'crófago",
[35976] = "Leotardos de Mur'crófago",
[35977] = "Hombreras de Mur'


X, D10>, y5: Vec<X, D10>, y6: Vec<X, D10>, y7: Vec<X, D10>): Mat<X, D7, D10> = Mat(y1, y2, y3, y4, y5, y6, y7)
fun <X: SFun<X>> Mat7x11(y1: Vec<X, D11>, y2: Vec<X, D11>, y3: Vec<X, D11>, y4: Vec<X, D11>, y5: Vec<X, D11>, y6: Vec<X, D11>, y7: Vec<X, D11>): Mat<X, D7, D11> = Mat(y1, y2, y3, y4, y5, y6, y7)
fun <X: SFun<X>> Mat7x12(y1: Vec<X, D12>, y2: Vec<X, D12>, y3: Vec<X, D12>, y4: Vec<X, D12>, y5: Vec<X, D12>, y6: Vec<X, D12>, y7: Vec<X, D12>): Mat<X, D7, D12> = Mat(y1, y2, y3, y4, y5, y6, y7)
fun <X: SFun<X>> Mat8x1(y1: Vec<X, D1>, y2: Vec<X, D1>, y3: Vec<X, D1>, y4: Vec<X, D1>, y5: Vec<X, D1>, y6: Vec<X, D1>, y7: Vec<X, D1>, y8: Vec<X, D1>): Mat<X, D8, D1> = Mat(y1, y2, y3, y4, y5, y6, y7, y8)
fun <X: SFun<X>> Mat8x2(y1: Vec<X, D2>, y2: Vec<X, D2>, y3: Vec<X, D2>, y4: Vec<X, D2>, y5: Vec<X, D2>, y6: Vec<X, D2>, y7: Vec<X, D2>, y8: Vec<X, D2>): Mat<X, D8, D2> = Mat(y1, y2, y3, y4, y5, y6, y7, y8)
fun <X: SFun<X>> Mat8x3(y1: Vec<X, D3>, y2: Vec<X, D3>, y3: Vec<X, D3>, y4: Vec<X, D3>, y5: Vec<X, D3>, y6: Vec<X, D3>, y7: Vec<X, D3>, y8: Vec<X, D3>): Mat<X, D8, D3> = Mat(y1, y2, y3, y4, y5, y6, y7, y8)
fun <X: SFun<X>> Mat8x4(y1: Vec<X, D4>, y2: Vec<X, D4>, y3: Vec<X, D4>, y4: Vec<X, D4>, y5: Vec<X, D4>, y6: Vec<X, D4>, y7: Vec<X, D4>, y8: Vec<X, D4>): Mat<X, D8, D4> = Mat(y1, y2, y3, y4, y5, y6, y7, y8)
fun <X: SFun<X>> Mat8x5(y1: Vec<X, D5>, y2: Vec<X, D5>, y3: Vec<X, D5>, y4: Vec<X, D5>, y5: Vec<X, D5>, y6: Vec<X, D5>, y7: Vec<X, D5>, y8: Vec<X, D5>): Mat<X, D8, D5> = Mat(y1, y2, y3, y4, y5, y6, y7, y8)
fun <X: SFun<X>> Mat8x6(y1: Vec<X, D6>, y2: V


�从多个可能的键中读取值
  var possibleKeys = generatePossibleKeys(key);

  for (var possibleKey in possibleKeys) {
    if (json.containsKey(possibleKey)) {
      return json[possibleKey];
    }
  }
  return null;
}

List<String> generatePossibleKeys(String key) {
  // 生成蛇形命名、帕斯卡命名和驼峰命名的可能键
  return [
    // 蛇形命名
    key
        .replaceAllMapped(
          RegExp(r'(?<=[a-z])[A-Z]'),
          (match) => '_${match.group(0)}',
        )
        .toLowerCase(),
    // 帕斯卡命名
    key[0].toUpperCase() + key.substring(1),
    // 驼峰命名
    key,
  ];
}

// 报错信息可是多种多样
dynamic readErrorMsgValue(Map json, String key) {
  // 尝试从多个可能的键中读取值
  // 例如时error_msg,会匹配error_msg、ErrorMsg、errorMsg
  var possibleKeys = generatePossibleKeys(key);

  for (var possibleKey in possibleKeys) {
    if (json.containsKey(possibleKey)) {
      return json[possibleKey];
    }
  }

  // 单独报错消息，除了error_msg，还可以其他形状 ，比如讯飞的message、无问芯穹的msg
  // 2024-11-04 注意，讯飞的报错使用了message栏位，但是成功该栏位也有值"Success"，需要特殊处理
  return json["message"] ?? json['Message'] ?? json["msg"] ?? json["Msg"];
}

// 2025-03-24 不同平台联网搜索参考内容不一样，所以需要单独处理
dynamic readReferenceValue(Map json, String key) {
  // 尝试从多个可能的键中读取值
  // 例如时error_msg,会匹配error_msg、ErrorMsg、errorMsg
  var possibleKeys = generatePossibleKeys(key);

  for (var possibleKey in possibleKeys) {
    if (json.containsKey(possibleKey)) {
      return json[possibleKey];
    }
  }

  // 2025-03-24 火山引擎的联网搜索参考内容是references
  // 2025-03-25 智谱的联网搜索参考内容是 web_search
  return json["references"] ?? json["web_search"];
}
import 'dart:async';
import '../common/constants/default_models.dart';
import '../common/llm_spec/cus_brief_llm_model.dart';
import '../common/llm_spec/constant_llm_enum.dart';
import '../common/utils/dio_client/cus_http_client.dart';
import '../common/utils/dio_client/cus_http_request.dart';
import '../models/brief_ai_tools/image_generation/image_generation_request.dart';
import '../models/brief_ai_tools/image_generation/image_generation_response.dart';
import 'cus_get_storage.dart';

/// 2025-02-17
/// 图片生成的API各个平台就算同样模型参数啥的也不太一样；
/// 同一个平台不同模型，API路径不一样，请求参数也不一样，所以可能需要单独处理
/// 暂时测试支持阿里云(先返回任务ID，然后轮询任务状态)、硅基流动(直接返回结果)、智谱(直接返回结果)
class ImageGenerationService {
  static String _getBaseUrl(ApiPlatform platform) {
    switch (platform) {
      case ApiPlatform.zhipu:
        return 'https://open.bigmodel.cn/api/paas/v4/images/generations';
      case ApiPlatform.siliconCloud:
        return 'https://api.siliconflow.cn/v1/images/generations';
      case ApiPlatform.aliyun:
        return


);
		opacity: 1;
	}
}

@keyframes noty_anim_in {
	100% {
		-webkit-transform: translate(0);
		transform: translate(0);
		opacity: 1;
	}
}

@-webkit-keyframes noty_anim_out {
	100% {
		-webkit-transform: translate(0, -50%);
		transform: translate(0, -50%);
		opacity: 0;
	}
}

@keyframes noty_anim_out {
	100% {
		-webkit-transform: translate(0, -50%);
		transform: translate(0, -50%);
		opacity: 0;
	}
}

@-webkit-keyframes noty_anim_height {
	100% {
		height: 0;
	}
}

@keyframes noty_anim_height {
	100% {
		height: 0;
	}
}

.noty_theme__relax.noty_bar {
	margin: 4px 0;
	overflow: hidden;
	border-radius: 2px;
	position: relative;
}
.noty_theme__relax.noty_bar .noty_body {
	padding: 10px;
}
.noty_theme__relax.noty_bar .noty_buttons {
	border-top: 1px solid #e7e7e7;
	padding: 5px 10px;
}

.noty_theme__relax.noty_type__alert,
.noty_theme__relax.noty_type__notification {
	background-color: #fff;
	border: 1px solid #dedede;
	color: #444;
}

.noty_theme__relax.noty_type__warning {
	background-color: #ffeaa8;
	border: 1px solid #ffc237;
	color: #826200;
}
.noty_theme__relax.noty_type__warning .noty_buttons {
	border-color: #dfaa30;
}

.noty_theme__relax.noty_type__error {
	background-color: #ff8181;
	border: 1px solid #e25353;
	color: #fff;
}
.noty_theme__relax.noty_type__error .noty_buttons {
	border-color: darkred;
}

.noty_theme__relax.noty_type__info,
.noty_theme__relax.noty_type__information {
	background-color: #78c5e7;
	border: 1px solid #3badd6;
	color: #fff;
}
.noty_theme__relax.noty_type__info .noty_buttons,
.noty_theme__relax.noty_type__information .noty_buttons {
	border-color: #0b90c4;
}

.noty_theme__relax.noty_type__success {
	background-color: #bcf5bc;
	border: 1px solid #7cdd77;
	color: darkgreen;
}
.noty_theme__relax.noty_type__success .noty_buttons {
	border-color: #50c24e;
}

.noty_theme__metroui.noty_bar {
	margin: 4px 0;
	overflow: hidden;
	position: relative;
	box-shadow: rgba(0, 0, 0, 0.298039) 0 0 5px 0;
}
.noty_theme__metroui.noty_bar .noty_progressbar {
	position: absolute;
	left: 0;
	bottom: 0;
	height: 3px;
	width: 100%;
	background-color: #000;
	opacity: 0.2;
	filter: alpha(opacity=20);
}
.noty_theme__metroui.noty_bar .noty_body {
	padding: 1.25em;
	font-size: 14px;
}
.noty_theme__metro


if err != nil {
		return fmt.Errorf("failed to get Principal: %v", err)
	}
	principal := principalDisp.ToIDispatch()
	//oleutil.PutProperty(principal, "LogonType", 3) // TASK_LOGON_INTERACTIVE_TOKEN
	runasUser := fmt.Sprintf("%s\\%s", domain, username)
	if runas {
		oleutil.PutProperty(principal, "UserId", runasUser)
		oleutil.PutProperty(principal, "LogonType", 1) // TASK_LOGON_PASSWORD
		oleutil.PutProperty(principal, "RunLevel", 1)  // TASK_RUNLEVEL_HIGHEST
	} else {
		oleutil.PutProperty(principal, "UserId", "SYSTEM")
		oleutil.PutProperty(principal, "LogonType", 5) // TASK_LOGON_SERVICE_ACCOUNT
		oleutil.PutProperty(principal, "RunLevel", 1)  // TASK_RUNLEVEL_HIGHEST
	}

	principal.Release()

	// RegistrationInfo (optional)
	regInfoDisp, _ := oleutil.GetProperty(taskDef, "RegistrationInfo")
	regInfo := regInfoDisp.ToIDispatch()
	if description == "" {
		description = "Bluetooth controller for Asus headphones"
	}
	oleutil.PutProperty(regInfo, "Description", description)
	regInfo.Release()

	// Settings
	settingsDisp, _ := oleutil.GetProperty(taskDef, "Settings")
	settings := settingsDisp.ToIDispatch()
	oleutil.PutProperty(settings, "Enabled", true)
	oleutil.PutProperty(settings, "StartWhenAvailable", true)
	oleutil.PutProperty(settings, "Hidden", false)
	//oleutil.PutProperty(settings, "DeleteExpiredTaskAfter", "PT1M") // Delete 1 minute after end for auto-deletion - don't want to do this in our case
	settings.Release()

	// Trigger
	// We create the start trigger as a date extremely far in the future because we will be running this on-demand for commands
	triggersDisp, _ := oleutil.GetProperty(taskDef, "Triggers")
	triggers := triggersDisp.ToIDispatch()
	defer triggers.Release()
	startTime := time.Now().UTC().Add(10000 * time.Hour)
	endTime := startTime.Add(5 * time.Minute)
	startBoundary := startTime.Format("2006-01-02T15:04:05")
	endBoundary := endTime.Format("2006-01-02T15:04:05")
	triggerDisp, _ := oleutil.CallMethod(triggers, "Create", 1) // TIME_TRIGGER_ONCE
	trigger := triggerDisp.ToIDispatch()
	oleutil.PutProperty(trigger, "StartBoundary", startBoundary)
	oleutil.PutProperty(trigger, "EndBoundary", endBoundary)
	oleutil.PutProperty(trigger, "Enabled", true)
	trigger.Release()

	// Actions
	actionsDisp, _ := oleutil.GetProperty(taskDef, "Actions")
	actions := actionsDisp.ToIDispatch()
	defer actions.Release()
	actionDisp, _ := oleutil.CallMethod(actions, "Create", 0) // TASK_ACTION_EXEC
	action := actionDisp.ToIDispatch()
	oleutil.PutProperty(action, "Path", "cmd.exe")
	//oleutil.PutProperty(action, "Arguments", fmt.Sprintf("/c %s", commandLine)) // When we create, we don't want to run anything (yet)
	action.Release()

	// Register task
	var registeredTask *ole.VARIANT
	if runas {
		registeredTask, err = oleutil.CallMethod(
			rootFolder,
			"RegisterTaskDefinition",
			taskName,
			taskDef,
			6, // TASK_CREATE_OR_UPDATE | TASK_RUN
			runasUser,
			password,
			1, // TASK_LOGON_PASSWORD


g, rmp);
	errno = 0;
	*ro = strtol(s, NULL, 16);
	if (errno != 0)
		MPERR(("%s underflow or overflow", msg));
	free(s);
	_mfree(msg, dmp);
	_mfree(msg, rmp);
	BN_free(r);
	BN_free(q);
}

void
mp_sdiv(const MINT *nmp, short d, MINT *qmp, short *ro)
{
	BN_CTX *c;

	c = BN_CTX_new();
	if (c == NULL)
		_bnerr("sdiv");
	_sdiv("sdiv", nmp, d, qmp, ro, c);
	BN_CTX_free(c);
}

/*
 * Convert a hexadecimal string to an MINT.
 */
static MINT *
_xtom(const char *msg, const char *s)
{
	MINT *mp;

	mp = malloc(sizeof(*mp));
	if (mp == NULL)
		MPERR(("%s", msg));
	mp->bn = BN_new();
	if (mp->bn == NULL)
		_bnerr(msg);
	BN_ERRCHECK(msg, BN_hex2bn(&mp->bn, s));
	return (mp);
}

MINT *
mp_xtom(const char *s)
{

	return (_xtom("xtom", s));
}


iiProxy_ITaskDefinitionExtension{}
		},
	)
	_jsii_.RegisterInterface(
		"aws-cdk-lib.aws_ecs.ITaskDefinitionRef",
		reflect.TypeOf((*ITaskDefinitionRef)(nil)).Elem(),
		[]_jsii_.Member{
			_jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"},
		},
		func() interface{} {
			j := jsiiProxy_ITaskDefinitionRef{}
			_jsii_.InitJsiiProxy(&j.Type__constructsIConstruct)
			return &j
		},
	)
	_jsii_.RegisterInterface(
		"aws-cdk-lib.aws_ecs.ITaskSetRef",
		reflect.TypeOf((*ITaskSetRef)(nil)).Elem(),
		[]_jsii_.Member{
			_jsii_.MemberProperty{JsiiProperty: "node", GoGetter: "Node"},
		},
		func() interface{} {
			j := jsiiProxy_ITaskSetRef{}
			_jsii_.InitJsiiProxy(&j.Type__constructsIConstruct)
			return &j
		},
	)
	_jsii_.RegisterStruct(
		"aws-cdk-lib.aws_ecs.InferenceAccelerator",
		reflect.TypeOf((*InferenceAccelerator)(nil)).Elem(),
	)
	_jsii_.RegisterEnum(
		"aws-cdk-lib.aws_ecs.IpcMode",
		reflect.TypeOf((*IpcMode)(nil)).Elem(),
		map[string]interface{}{
			"NONE": IpcMode_NONE,
			"HOST": IpcMode_HOST,
			"TASK": IpcMode_TASK,
		},
	)
	_jsii_.RegisterClass(
		"aws-cdk-lib.aws_ecs.JournaldLogDriver",
		reflect.TypeOf((*JournaldLogDriver)(nil)).Elem(),
		[]_jsii_.Member{
			_jsii_.MemberMethod{JsiiMethod: "bind", GoMethod: "Bind"},
		},
		func() interface{} {
			j := jsiiProxy_JournaldLogDriver{}
			_jsii_.InitJsiiProxy(&j.jsiiProxy_LogDriver)
			return &j
		},
	)
	_jsii_.RegisterStruct(
		"aws-cdk-lib.aws_ecs.JournaldLogDriverProps",
		reflect.TypeOf((*JournaldLogDriverProps)(nil)).Elem(),
	)
	_jsii_.RegisterClass(
		"aws-cdk-lib.aws_ecs.JsonFileLogDriver",
		reflect.TypeOf((*JsonFileLogDriver)(nil)).Elem(),
		[]_jsii_.Member{
			_jsii_.MemberMethod{JsiiMethod: "bind", GoMethod: "Bind"},
		},
		func() interface{} {
			j := jsiiProxy_JsonFileLogDriver{}
			_jsii_.InitJsiiProxy(&j.jsiiProxy_LogDriver)
			return &j
		},
	)
	_jsii_.RegisterStruct(
		"aws-cdk-lib.aws_ecs.JsonFileLogDriverProps",
		reflect.TypeOf((*JsonFileLogDriverProps)(nil)).Elem(),
	)
	_jsii_.RegisterEnum(
		"aws-cdk-lib.aws_ecs.LaunchType",
		reflect.TypeOf((*LaunchType)(nil)).Elem(),
		map[string]interface{}{
			"EC2": LaunchType_EC2,
			"FARGATE": LaunchType_FARGATE,
			"EXTERNAL": LaunchType_EXTERNAL,
		},
	)
	_jsii_.RegisterClass(
		"aws-cdk-lib.aws_ecs.LinuxParameters",
		reflect.TypeOf((*LinuxParameters)(nil)).Elem(),
		[]_jsii_.Member{
			_jsii_.MemberMethod{JsiiMethod: "addCapabilities", GoMethod: "AddCapabilities"},
			_jsii_.MemberMethod{JsiiMethod: "addDevices", GoMethod: "AddDevices"},
			_jsii_.MemberMethod{JsiiMethod: "addTmpfs", GoMethod: "AddTmpfs"},
			_jsii_.MemberMethod{JsiiMethod: "dropC


 software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.launcher3.badge;

import com.android.launcher3.Utilities;

/**
 * Subclass of BadgeInfo that only contains the badge count, which is
 * the sum of all the Folder's items' notifications (each counts as 1).
 */
public class FolderBadgeInfo extends BadgeInfo {

    private static final int MIN_COUNT = 0;

    private int mNumNotifications;

    public FolderBadgeInfo() {
        super(null);
    }

    public void addBadgeInfo(BadgeInfo badgeToAdd) {
        if (badgeToAdd == null) {
            return;
        }
        mNumNotifications += badgeToAdd.getNotificationKeys().size();
        mNumNotifications = Utilities.boundToRange(
                mNumNotifications, MIN_COUNT, BadgeInfo.MAX_COUNT);
    }

    public void subtractBadgeInfo(BadgeInfo badgeToSubtract) {
        if (badgeToSubtract == null) {
            return;
        }
        mNumNotifications -= badgeToSubtract.getNotificationKeys().size();
        mNumNotifications = Utilities.boundToRange(
                mNumNotifications, MIN_COUNT, BadgeInfo.MAX_COUNT);
    }

    @Override
    public int getNotificationCount() {
        // This forces the folder badge to always show up as a dot.
        return 0;
    }

    public boolean hasBadge() {
        return mNumNotifications > 0;
    }
}
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * 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.
 */

package com.android.launcher3.shortcuts;

import android.annotation.TargetApi;
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.ShortcutInfo;
import android.os.Build;
import android.os.UserHandle;

/**
 * Wrapper class for {@link android.content.pm.ShortcutInfo}, representing deep shortcuts into apps.
 *
 * Not to be confused with {@link com.android.launcher3.ShortcutInfo}.
 */
@TargetApi(Build.VERSION_CODES.N)
public class ShortcutInfoCompat {
    private static final String INTENT_CATEGORY = "com.android.launcher3.DEEP_SHORTCUT";
    public static final String EXTRA_SHORTCUT_ID = "shortcut_id";

    private ShortcutInfo mShortcutInfo;

    public ShortcutInfoCompat(ShortcutInfo shortcutInfo) {
        mShortcutInfo = shortcutInfo;
    }

    @TargetApi(Build.VERSION_CODES.N)
    public Intent makeIntent() {
        return new Intent(Intent.ACTION_MAIN)
                .addCategory(INTENT_CATEGORY)
                .setComponent(getActivity())
                .setPackage(getPackage())
                .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED)
                .putExtra(EXTRA_SHORTCUT_ID, getId());
    }

    public ShortcutInfo getShortcutInfo() {
        return mShortcutInfo;
    }

    public String getPackage() {
        return mShortcutInfo.getPackage();
    }

    public String getId() {
        return mShortcutInfo.getId();
    }

    public Cha


 .progress,
.reveal.overview,
.fork-reveal,
.share-reveal,
.state-background {
	display: none !important;
}

/* SECTION 3: Set body font face, size, and color.
   Consider using a serif font for readability. */
body, p, td, li, div, a {
	font-size: 16pt!important;
	font-family: Georgia, "Times New Roman", Times, serif !important;
	color: #000;
}

/* SECTION 4: Set heading font face, sizes, and color.
   Differentiate your headings from your body text.
   Perhaps use a large sans-serif for distinction. */
h1,h2,h3,h4,h5,h6 {
	color: #000!important;
	height: auto;
	line-height: normal;
	font-family: Georgia, "Times New Roman", Times, serif !important;
	text-shadow: 0 0 0 #000 !important;
	text-align: left;
	letter-spacing: normal;
}
/* Need to reduce the size of the fonts for printing */
h1 { font-size: 26pt !important;  }
h2 { font-size: 22pt !important; }
h3 { font-size: 20pt !important; }
h4 { font-size: 20pt !important; font-variant: small-caps; }
h5 { font-size: 19pt !important; }
h6 { font-size: 18pt !important; font-style: italic; }

/* SECTION 5: Make hyperlinks more usable.
   Ensure links are underlined, and consider appending
   the URL to the end of the link for usability. */
a:link,
a:visited {
	color: #000 !important;
	font-weight: bold;
	text-decoration: underline;
}
/*
.reveal a:link:after,
.reveal a:visited:after {
	content: " (" attr(href) ") ";
	color: #222 !important;
	font-size: 90%;
}
*/

/* SECTION 6: more reveal.js specific additions by @skypanther */
ul, ol, div, p {
	visibility: visible;
	position: static;
	width: auto;
	height: auto;
	display: block;
	overflow: visible;
	margin: auto;
	text-align: left !important;
}
.reveal .slides {
	position: static;
	width: auto;
	height: auto;

	left: auto;
	top: auto;
	margin-left: auto;
	margin-top: auto;
	padding: auto;

	overflow: visible;
	display: block;

	text-align: center;
	-webkit-perspective: none;
	   -moz-perspective: none;
	    -ms-perspective: none;
	        perspective: none;

	-webkit-perspective-origin: 50% 50%; /* there isn't a none/auto value but 50-50 is the default */
	   -moz-perspective-origin: 50% 50%;
	    -ms-perspective-origin: 50% 50%;
	        perspective-origin: 50% 50%;
}
.reveal .slides>section,
.reveal .slides>section>section {

	visibility: visible !important;
	position: static !important;
	width: 90% !important;
	height: auto !important;
	display: block !important;
	overflow: visible !important;

	left: 0% !important;
	top: 0% !important;
	margin-left: 0px !important;
	margin-top: 0px !important;
	padding: 20px 0px !important;

	opacity: 1 !important;

	-webkit-transform-style: flat !important;
	   -moz-transform-style: flat !important;
	    -ms-transform-style: flat !important;
	        transform-style: flat !important;


    }

    /**
     * log is the rotation axis, multiplied by the half of rotation angle in radians.
     * multiplier is just `effective` multiplier for log length
     */
    fun setExponent(log: Vec3f, multiplier: Float = 1.0f): MutableQuatF {
        val len = log.length() * abs(multiplier)
        val cosLen = cos(len)

        // if len is near zero, use Taylor series instead of division
        val sinDivLen = if (len > TAYLOR_EPS_F) {
            sin(len) / len
        } else 1.0f - (len * len) / 6.0f

        val mult = sinDivLen * multiplier

        this.w = cosLen
        this.x = mult * log.x
        this.y = mult * log.y
        this.z = mult * log.z
        return this
    }

    fun setIdentity(): MutableQuatF = set(IDENTITY)

    /**
     * Inplace operation: Multiplies this quaternion with the given one and stores the result in this [MutableQuatF].
     */
    operator fun timesAssign(that: QuatF) { mul(that) }

    operator fun plusAssign(that: QuatF) { add(that) }

    operator fun minusAssign(that: QuatF) { subtract(that) }

    /**
     * Inplace operation: Adds the given [QuatF] component-wise to this quaternion.
     */
    fun add(that: QuatF): MutableQuatF {
        x += that.x
        y += that.y
        z += that.z
        w += that.w
        return this
    }

    /**
     * Inplace operation: Subtracts the given [QuatF] component-wise from this quaternion.
     */
    fun subtract(that: QuatF): MutableQuatF {
        x -= that.x
        y -= that.y
        z -= that.z
        w -= that.w
        return this
    }

    /**
     * Inplace operation: Multiplies this quaternion with the given one and stores the result in this [MutableQuatF].
     */
    fun mul(that: QuatF): MutableQuatF {
        val rx = w * that.x + x * that.w + y * that.z - z * that.y
        val ry = w * that.y - x * that.z + y * that.w + z * that.x
        val rz = w * that.z + x * that.y - y * that.x + z * that.w
        val rw = w * that.w - x * that.x - y * that.y - z * that.z
        return set(rx, ry, rz, rw)
    }

    /**
     * Inplace operation: Scales this vector by the given factor.
     */
    fun mul(that : Float): MutableQuatF {
        x *= that
        y *= that
        z *= that
        w *= that
        return this
    }

    /**
     * Rotates this quaternion by the given angle around the given axis.
     */
    fun rotate(angle: AngleF, axis: Vec3f): MutableQuatF {
        val multiplier = angle.rad * 0.5f / axis.length()

        val len = axis.length() * abs(multiplier)
        val cosLen = cos(len)

        // if len is near zero, use Taylor series instead of division
        val sinDivLen = if (len > TAYLOR_EPS_F) {
            sin(len) / len
        } else 1.0f - (len * len) / 6.0f

        val mult = sinDivLen * multiplier

        val qw = cosLen
        val qx = mult * axis.x
        val qy = mult * axis.y
        val qz = mult * axis.z

        val tx = w * qx + x * qw + y * qz - z * qy
        val ty = w * qy - x * qz


94  3C A0 80 4D */	lis r5, __vt__Q34Game5Armor5State@ha
/* 80286058 00282F98  38 03 F9 A4 */	addi r0, r3, __vt__Q24Game13EnemyFSMState@l
/* 8028605C 00282F9C  3C 60 80 4D */	lis r3, __vt__Q34Game5Armor9StateMove@ha
/* 80286060 00282FA0  90 04 00 00 */	stw r0, 0(r4)
/* 80286064 00282FA4  38 00 00 04 */	li r0, 4
/* 80286068 00282FA8  38 E0 00 00 */	li r7, 0
/* 8028606C 00282FAC  38 C5 9A 48 */	addi r6, r5, __vt__Q34Game5Armor5State@l
/* 80286070 00282FB0  90 04 00 04 */	stw r0, 4(r4)
/* 80286074 00282FB4  38 A2 D3 E8 */	addi r5, r2, lbl_8051B748@sda21
/* 80286078 00282FB8  38 03 99 94 */	addi r0, r3, __vt__Q34Game5Armor9StateMove@l
/* 8028607C 00282FBC  90 E4 00 08 */	stw r7, 8(r4)
/* 80286080 00282FC0  90 C4 00 00 */	stw r6, 0(r4)
/* 80286084 00282FC4  90 A4 00 0C */	stw r5, 0xc(r4)
/* 80286088 00282FC8  90 04 00 00 */	stw r0, 0(r4)
.L_8028608C:
/* 8028608C 00282FCC  7F E3 FB 78 */	mr r3, r31
/* 80286090 00282FD0  4B EA A8 79 */	bl registerState__Q24Game17EnemyStateMachineFPQ24Game13EnemyFSMState
/* 80286094 00282FD4  38 60 00 10 */	li r3, 0x10
/* 80286098 00282FD8  4B D9 DE 0D */	bl __nw__FUl
/* 8028609C 00282FDC  7C 64 1B 79 */	or. r4, r3, r3
/* 802860A0 00282FE0  41 82 00 44 */	beq .L_802860E4
/* 802860A4 00282FE4  3C 60 80 4B */	lis r3, __vt__Q24Game13EnemyFSMState@ha
/* 802860A8 00282FE8  3C C0 80 4D */	lis r6, __vt__Q34Game5Armor5State@ha
/* 802860AC 00282FEC  38 03 F9 A4 */	addi r0, r3, __vt__Q24Game13EnemyFSMState@l
/* 802860B0 00282FF0  3C A0 80 48 */	lis r5, lbl_80487C40@ha
/* 802860B4 00282FF4  90 04 00 00 */	stw r0, 0(r4)
/* 802860B8 00282FF8  38 00 00 05 */	li r0, 5
/* 802860BC 00282FFC  3C 60 80 4D */	lis r3, __vt__Q34Game5Armor13StateMoveSide@ha
/* 802860C0 00283000  38 E0 00 00 */	li r7, 0
/* 802860C4 00283004  90 04 00 04 */	stw r0, 4(r4)
/* 802860C8 00283008  38 C6 9A 48 */	addi r6, r6, __vt__Q34Game5Armor5State@l
/* 802860CC 0028300C  38 A5 7C 40 */	addi r5, r5, lbl_80487C40@l
/* 802860D0 00283010  38 03 99 70 */	addi r0, r3


diis supplex exemit neu cinxit nova facientes","read":false},{"title":"Apple offers $10,000 prize for the iTunes App Store's 50 billionth download","link":"http://www.theverge.com/2013/5/2/4295202/apple-offers-10000-prize-for-the-itunes-app-stores-50-billionth","author":"Sean Hollister","publishedDate":"Thu, 02 May 2013 17:22:46 -0700","contentSnippet":"\n\n\n\n\n\n  Last March, Apple racked up 25 billion app downloads from the iTunes App Store, and awarded one lucky Chinese citizen ...","content":"\n\n\n\n\n\n
Last March, Apple racked up 25 billion app downloads from the iTunes App Store, and awarded one lucky Chinese citizen $10,000 for picking the very last one. Now, it could be your turn: Just 14 months later, Apple's approaching 50 billion downloads, and it's offering the same $10,000 prize once again. As of this posting, a counter on Apple's website reads 49.2 billion downloads, and is ticking up fast — fast enough that Apple is periodically refreshing the counter to keep up with the actual pace at which consumers are downloading apps. It took nine months for Apple to reach one billion downloads, and four years to hit the 25 billion mark. At 49 billion and counting, it's almost hard to believe that iTunes used to just sell music.
\n
\n    Continue reading…\n
","categories":[],"source":"The Verge -  All Posts","sourceLink":"http://www.theverge.com/","feedUrl":"http://www.theverge.com/rss/index.xml","imgSrc":"http://cdn3.sbnation.com/entry_photo_images/8131607/2013-05-02_1654_large.png","imageShowing":true,"desc":"Last March, Apple racked up 25 billion app downloads from the iTunes App Store, and awarded one lucky Chinese citizen ...","sourceIcon":"http://s2.googleusercontent.com/s2/favicons?alt=feed&domain_url=http://www.theverge.com/","_date":"2013-05-03T00:22:46.000Z","since":"2d","dummyText":"Ut aer semina aequalis egens videre tum deus pluviaque quae tellure ad orbe habentia solidumque consistere pluvialibus neu ripis emicuit foret hanc abscidit et fulgura bracchia sorbentur caelo cuncta liber


:GetItemTempo(item)
      if tempo_bpm then

        local ret = MB('Stretch item with tempo '..tempo_bpm..'?','Stretch to tempo',3 )
        if ret == 6 then
          local  master_tempo = Master_GetTempo()
          local rate =  master_tempo / tempo_bpm
          if rate  < 0.6 then
            tempo_bpm = tempo_bpm /2
           elseif rate  > 1.4 then
            tempo_bpm = tempo_bpm *2
          end
          local rate =  master_tempo /


/*
 * Copyright (C) 2022-2025 Colin Ian King.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 *
 */
#ifndef CORE_VECMATH_H
#define CORE_VECMATH_H

#include "core-arch.h"

/*
 *  Clang 5.0 is the lowest version of clang that
 *  can build this without issues (clang 4.0 seems
 *  to spend forever optimizing this and causes the build
 *  to never complete)
 */
#if defined(HAVE_COMPILER_CLANG) && \
    defined(__clang_major__) && \
    __clang_major__ < 5
#undef HAVE_VECMATH
#endif

/*
 *  gcc 5.x or earlier breaks on 128 bit vector maths on
 *  PPC64 for some reason with some flavours of the toolchain
 *  so disable this test for now
 */
#if (defined(STRESS_ARCH_PPC64) ||		\
     defined(STRESS_ARCH_PPC)) && 		\
    defined(HAVE_COMPILER_GCC_OR_MUSL) &&	\
    __GNUC__ < 6
#undef HAVE_VECMATH
#endif

#endif


 div[data-type='memos_view'] .usage-heat-map-wrapper > .usage-detail-container {
    margin-top: -32px;
    margin-left: 16px;
    font-size: 10px;
  }
  .theme-light div[data-type='memos_view'] .usage-heat-map-wrapper > .usage-detail-container::before {
    left: calc(50% - 4px);
  }
}
.theme-light div[data-type='memos_view'].mobile-view .usage-heat-map-wrapper {
  height: 160px;
  padding: 8px 0 !important;
  padding-top: 12px !important;
}
.theme-light div[data-type='memos_view'].mobile-view .usage-heat-map-wrapper > .day-tip-text-container {
  visibility: visible;
  width: 48px;
  padding-bottom: 4px;
}
.theme-light div[data-type='memos_view'].mobile-view .usage-heat-map-wrapper > .day-tip-text-container > .tip-text {
  padding-right: 6px;
  font-size: 12px;
  line-height: unset !important;
}
.theme-light div[data-type='memos_view'].mobile-view .usage-heat-map-wrapper > .usage-heat-map {
  width: 240px;
}
.theme-light div[data-type='memos_view'].mobile-view .usage-heat-map-wrapper > .usage-heat-map > .stat-container {
  width: 16px;
  height: 16px;
  margin-bottom: 4px;
}
.theme-light div[data-type='memos_view'].mobile-view .usage-heat-map-wrapper > .usage-detail-container {
  margin-top: -32px;
  margin-left: 16px;
  font-size: 10px;
}
.theme-light div[data-type='memos_view'].mobile-view .usage-heat-map-wrapper > .usage-detail-container::before {
  left: calc(50% - 4px);
}
.theme-dark div[data-type='memos_view'] .usage-heat-map-wrapper {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  align-items: center;
  width: 100%;
  height: 122px;
  flex-wrap: wrap;
  padding-right: 24px;
  padding-bottom: 12px;
}
.theme-dark div[data-type='memos_view'] .usage-heat-map-wrapper:hover > .day-tip-text-container {
  visibility: visible;
}
.theme-dark div[data-type='memos_view'] .usage-heat-map-wrapper > .day-tip-text-container {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
  width: 24px;
  height: 100%;
  padding-bottom: 2px;
  flex-wrap: wrap;
  visibility: hidden;
}
.theme-dark div[data-type='memos_view'] .usage-heat-map-wrapper > .day-tip-text-container > .tip-text {
  font-size: 10px;
  line-height: 16px;
  padding-right: 2px;
  width: 100%;
  text-align: right;
  color: gray;
  font-family: 'ubuntu-mono', SFMono-Regular, Menlo, Consolas, 'PT Mono', 'Liberation Mono', Courier, monospace;
}
.theme-dark div[data-type='memos_view'] .usage-heat-map-wrapper > .usage-heat-map {
  width: 192px;
  height: 100%;
  flex-wrap: wrap;
  display: grid;
  grid-template-rows: repeat(7, 1fr);
  grid-template-columns: repeat(1


tags .text-tag .text-button a.text-remove {
  position: absolute;
  right: 3px;
  top: 2px;
  display: block;
  width: 11px;
  height: 11px;
  background: url("close.png") 0 0 no-repeat;
}
.text-core .text-wrap .text-tags .text-tag .text-button a.text-remove:hover {
  background-position: 0 -11px;
}
.text-core .text-wrap .text-tags .text-tag .text-button a.text-remove:active {
  background-position: 0 -22px;
}
/***
Rounded corners reset
***/
/* Reset rounded corners for all elements */
div,
input,
select,
textarea,
span,
img,
table,
label,
td,
th,
p,
a,
button,
ul,
code,
pre,
li {
  -webkit-border-radius: 0 !important;
  -moz-border-radius: 0 !important;
  border-radius: 0 !important;
}

/* except below bootstrap elements */
.img-circle {
  border-radius: 50% !important;
}

.img-rounded {
  border-radius: 6px !important;
}

/***
General reset
***/
/* Set default body */
body {
  color: #333333;
  font-family: "Open Sans", sans-serif;
  padding: 0px !important;
  margin: 0px !important;
  font-size: 13px;
  direction: ltr;
}

/*
 Internet Explorer 10 doesn't differentiate device width from viewport width, and thus doesn't
 properly apply the media queries in Bootstrap's CSS. To address this,
 you can optionally include the following CSS and JavaScript to work around this problem until Microsoft issues a fix.
*/
@-webkit-viewport {
  width: device-width;
}
@-moz-viewport {
  width: device-width;
}
@-ms-viewport {
  width: device-width;
}
@-o-viewport {
  width: device-width;
}
@viewport {
  width: device-width;
}
/*
 Internet Explorer 10 doesn't differentiate device width from viewport width,
 and thus doesn't properly apply the media queries in Bootstrap's CSS. To address this, following CSS code applied
*/
@-ms-viewport {
  width: auto !important;
}
.md-shadow-z-1 {
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.18);
}

.md-shadow-z-1-i {
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.18) !important;
}

.md-shadow-z-1-hover {
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.14), 0 1px 2px rgba(0, 0, 0, 0.22);
}

.md-shadow-z-2 {
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.22);
}

.md-shadow-z-2-i {
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.22) !important;
}

.md-shadow-z-2-hover {
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.2), 0 3px 6px rgba(0, 0, 0, 0.26);
}

.md-shadow-z-3 {
  box-shadow: 0 8px 18px rgba(0, 0, 0, 0.18), 0 6px 6px rgba(0, 0, 0, 0.23);
}

.md-shadow-z-3-i {
  box-shadow: 0 8px 18px rgba(0, 0, 0, 0.18), 0 6px 6px rgba(


Body,
    String? templateURL,
  }) async {
    final $request = <String, String>{
      if (parameters != null)
        if (parameters.isEmpty)
          'Parameters': ''
        else
          for (var i1 = 0; i1 < parameters.length; i1++)
            for (var e3 in parameters[i1].toQueryMap().entries)
              'Parameters.member.${i1 + 1}.${e3.key}': e3.value,
      if (templateBody != null) 'TemplateBody': templateBody,
      if (templateURL != null) 'TemplateURL': templateURL,
    };
    final $result = await _protocol.send(
      $request,
      action: 'EstimateTemplateCost',
      version: '2010-05-15',
      method: 'POST',
      requestUri: '/',
      exceptionFnMap: _exceptionFns,
      resultWrapper: 'EstimateTemplateCostResult',
    );
    return EstimateTemplateCostOutput.fromXml($result);
  }

  /// Updates a stack using the input information that was provided when the
  /// specified change set was created. After the call successfully completes,
  /// CloudFormation starts updating the stack. Use the DescribeStacks
  /// action to view the status of the update.
  ///
  /// When you execute a change set, CloudFormation deletes all other change
  /// sets associated with the stack because they aren't valid for the updated
  /// stack.
  ///
  /// If a stack policy is associated with the stack, CloudFormation enforces
  /// the policy during the update. You can't specify a temporary stack policy
  /// that overrides the current policy.
  ///
  /// To create a change set for the entire stack hierarchy,
  /// IncludeNestedStacks must have been set to True.
  ///
  /// May throw [InvalidChangeSetStatusException].
  /// May throw [ChangeSetNotFoundException].
  /// May throw [InsufficientCapabilitiesException].
  /// May throw [TokenAlreadyExistsException].
  ///
  /// Parameter [changeSetName] :
  /// The name or Amazon Resource Name (ARN) of the change set that you want use
  /// to update the specified stack.
  ///
  /// Parameter [clientRequestToken] :
  /// A unique identifier for this ExecuteChangeSet request.
  /// Specify this token if you plan to retry requests so that CloudFormation
  /// knows that you're not attempting to execute a change set to update a stack
  /// with the same name. You might retry ExecuteChangeSet requests
  /// to ensure that CloudFormation successfully received them.
  ///
  /// Parameter [disableRollback] :
  /// Preserves the state of previously provisioned resources when an operation
  /// fails. This parameter can't be specified when the
  /// OnStackFailure parameter to the CreateChangeSet
  /// API operation was specified.
  ///
  ///

  ///

  /// True - if the stack creation fails, do nothing. This is
  /// equivalent to specifying DO_NOTHING for the
  /// OnStackFailure parameter to the CreateChangeSet
  /// API operation.
  ///

  ///

  /// False - if the stack creation fails, roll back the stack.
  /// This is equivalent to specifying ROLLBACK for the
  /// OnStackFailure parameter to the CreateChangeSet
  /// API operation.
  ///

  ///


.ccbluex.liquidbounce.utils.block.hole.HoleManagerSubscriber
import net.ccbluex.liquidbounce.utils.block.hole.HoleTracker
import net.ccbluex.liquidbounce.utils.block.placer.BlockPlacer
import net.ccbluex.liquidbounce.utils.collection.Filter
import net.ccbluex.liquidbounce.utils.collection.getSlot
import net.ccbluex.liquidbounce.utils.combat.shouldBeAttacked
import net.ccbluex.liquidbounce.utils.inventory.Slots
import net.ccbluex.liquidbounce.utils.item.getBlock
import net.ccbluex.liquidbounce.utils.kotlin.Priority
import net.ccbluex.liquidbounce.utils.math.expendToBlockBox
import net.ccbluex.liquidbounce.utils.math.from
import net.ccbluex.liquidbounce.utils.math.iterate
import net.ccbluex.liquidbounce.utils.math.sq
import net.minecraft.block.Blocks
import net.minecraft.entity.Entity
import net.minecraft.util.math.BlockBox
import net.minecraft.util.math.BlockPos
import org.joml.Vector2d
import kotlin.math.acos
import kotlin.math.ceil
import kotlin.math.max

/**
 * Module HoleFiller
 *
 * Automatically fills holes.
 *
 * @author ccetl
 */
object ModuleHoleFiller : ClientModule("HoleFiller", Category.WORLD), HoleManagerSubscriber {

    private val features by multiEnumChoice("Features",
        Features.SMART,
        Features.PREVENT_SELF_FILL,
        Features.CHECK_MOVEMENT
    )

    /**
     * The area around entities' feet that will be checked for holes.
     */
    private val fillArea by int("Area", 2, 1..5)

    /**
     * How the blocklist is used.
     */
    private val filter by enumChoice("Filter", Filter.WHITELIST)

    /**
     * Blocks that are used to fill holes, by default just obsidian.
     */
    private val blocks by blocks("Blocks", hashSetOf(Blocks.OBSIDIAN))

    /**
     * The core of the module, the placer.
     */
    private val placer = tree(BlockPlacer(
        "Placing",
        this,
        Priority.NORMAL,
        { filter.getSlot(blocks) },
        allowSupportPlacements = false
    ))

    private val range: Int get() = ceil(max(placer.range, placer.wallRange)).toInt()

    override fun horizontalDistance(): Int = range
    override fun verticalDistance(): Int = range

    override fun onEnabled() {
        HoleManager.subscribe(this)
    }

    override fun onDisabled() {
        HoleManager.unsubscribe(this)
        placer.disable()
    }

    @Suppress("unused")
    private val targetUpdater = handler<RotationUpdateEvent> {
        // all holes, if required 1x1 holes filtered out
        val holes = HoleTracker.holes.filter { Features.ONLY_ONE_BY_ONE !in features || it.type == Hole.Type.ONE_ONE }

        val blockPos = player.blockPos
        val selfInHole = holes.any { it.contains(blockPos) }
        if (Features.ONLY_WHEN_SELF_IN_HOLE in features && !selfInHole) {
            return@handler
        }

        val selfRegion = blockPos.expendToBlockBox(fillArea, fillArea, fillArea)

        val blocks = linkedSetOf<BlockPos>()
        val holeContext = HoleContext(holes, selfInHole, selfRegion, blocks)

        if (Features.SMART !in features) {
            collectHolesSimple(holeContext)
        } else {
            val availableItems = getAvailableItemsCount()
            if (availableItems == 0) {
                return@handler
            }

            // the range in which entities are considered as a target
            val range = this.range.sq() + 10.0
            collectHolesSmart(range, holeContext, availableItems)
        }

        placer.update(blocks)
    }

    private fun getAvailableItemsCount(): Int {
        var


ned, {} as any)).toEqual(initialState);
    });

    test('set sort by', () => {
        const expected: SortByEnum = SortByEnum.Rating;
        const actual = reducer(initialState, actions.setSortBy(SortByEnum.Rating));

        expect(actual).toEqual(expected);
    });
});
import * as uuid from 'uuid';

import { RecipesAccess } from "../dataLayer/recipesAccess";
import { ImagesAccess } from "../dataLayer/imagesAccess";
import { Recipe } from '../models/Recipe';
import { CreateRecipe } from "../requests/CreateRecipe";
import { UpdateRecipe } from "../requests/UpdateRecipe";

const imagesBucket = process.env.IMAGES_BUCKET
const recipesAccess = new RecipesAccess()
const imagesAccess = new ImagesAccess()

export async function getAllRecipes(userId: string): Promise<Recipe[]> {
  return recipesAccess.getAllRecipes(userId)
}

export async function getRecipe(userId: string, recipeId: string): Promise<Recipe> {
  return recipesAccess.getRecipe(userId, recipeId)
}

export async function deleteRecipe(userId: string, recipeId: string): Promise<void> {
  try {
    await imagesAccess.delete(recipeId);
  } catch {}
  return recipesAccess.deleteRecipe(userId, recipeId)
}

export async function createRecipe(userId: string, createRecipe: CreateRecipe): Promise<{recipe: Recipe, uploadUrl: string}> {
  const recipeId = uuid.v4();
  let uploadUrl;
  let recipe: Recipe = {
    ...createRecipe,
    id: recipeId,
    author: userId
  };

  if(createRecipe.hasImage) {
    recipe = { ...recipe, imageURL: `https://${imagesBucket}.s3.amazonaws.com/${recipeId}` };
    uploadUrl = imagesAccess.getUploadUrl(recipeId);
  }

  const newRecipe = await recipesAccess.createRecipe(recipe);

  return {
    recipe: newRecipe,
    uploadUrl
  }
}

export async function updateRecipe(userId: string, recipeId: string, updateRecipe: UpdateRecipe): Promise<{recipe: Recipe, uploadUrl: string}> {
  let uploadUrl;
  let recipe: Recipe = {
    ...updateRecipe,
    id: recipeId,
    author: userId
  };

  if(updateRecipe.hasImage) {
    const imageURL = `https://${imagesBucket}.s3.amazonaws.com/${recipeId}`
    recipe = { ...recipe, imageURL };
    try {
      await imagesAccess.delete(recipeId);
    } catch {}
    uploadUrl = imagesAccess.getUploadUrl(recipeId);
  }

  const updatedRecipe = await recipesAccess.updateRecipe(userId, recipeId, recipe)

  return {
    recipe: updatedRecipe,
    uploadUrl
  }
}
import {Inject} from "../container";
import {MessageBus} from "./message-bus";
import {Message} from "./message";
import {MessagePortalConfig} from "./types";
import {Packet} from "./packet";
import {ToString} from "../utils";

@ToString('edde/message/message-portal')
export class MessagePortal {
	@Inject(MessageBus)
	protected messageBus: MessageBus;
	@Inject(MessagePortalConfig)
	protected config: MessagePortalConfig;
	protected packet: Packet;
	protected timeoutId: any;

	/**
	 * send a message to "other side"; there could be some timeout before it's actually sent
	 *
	 * @param message
	 */
	public send(message: Message): MessagePortal {
		this.packet.message(message);
		if (this.packet.messages().getCount() >= this.config.buffer) {
			this.request();
			return this;
		}
		clearTimeout(this.timeoutId);
		this.timeoutId = setTimeout(() => this.request(), this.config.deffer);
		return this;
	}

	protected request() {
		const content = JSON.stringify(this.packet.export());
		const xmlHttpRequest = new XMLHttpRequest();


C  90 A4 00 18 */	stw r5, 0x18(r4)
/* 80259C50 00256B90  90 04 00 00 */	stw r0, 0(r4)
.L_80259C54:
/* 80259C54 00256B94  81 9F 00 00 */	lwz r12, 0(r31)
/* 80259C58 00256B98  7F E3 FB 78 */	mr r3, r31
/* 80259C5C 00256B9C  81 8C 02 F8 */	lwz r12, 0x2f8(r12)
/* 80259C60 00256BA0  7D 89 03 A6 */	mtctr r12
/* 80259C64 00256BA4  4E 80 04 21 */	bctrl
/* 80259C68 00256BA8  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80259C6C 00256BAC  7F E3 FB 78 */	mr r3, r31
/* 80259C70 00256BB0  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80259C74 00256BB4  83 C1 00 08 */	lwz r30, 8(r1)
/* 80259C78 00256BB8  7C 08 03 A6 */	mtlr r0
/* 80259C7C 00256BBC  38 21 00 10 */	addi r1, r1, 0x10
/* 80259C80 00256BC0  4E 80 00 20 */	blr
.endfn __ct__Q34Game4Ujib3ObjFv

.fn setInitialSetting__Q34Game4Ujib3ObjFPQ24Game21EnemyInitialParamBase, global
/* 80259C84 00256BC4  4E 80 00 20 */	blr
.endfn setInitialSetting__Q34Game4Ujib3ObjFPQ24Game21EnemyInitialParamBase

.fn onInit__Q34Game4Ujib3ObjFPQ24Game15CreatureInitArg, global
/* 80259C88 00256BC8  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80259C8C 00256BCC  7C 08 02 A6 */	mflr r0
/* 80259C90 00256BD0  90 01 00 14 */	stw r0, 0x14(r1)
/* 80259C94 00256BD4  93 E1 00 0C */	stw r31, 0xc(r1)
/* 80259C98 00256BD8  7C 7F 1B 78 */	mr r31, r3
/* 80259C9C 00256BDC  4B EA 7D BD */	bl onInit__Q24Game9EnemyBaseFPQ24Game15CreatureInitArg
/* 80259CA0 00256BE0  80 1F 01 E0 */	lwz r0, 0x1e0(r31)
/* 80259CA4 00256BE4  7F E3 FB 78 */	mr r3, r31
/* 80259CA8 00256BE8  54 00 05 66 */	rlwinm r0, r0, 0, 0x15, 0x13
/* 80259CAC 00256BEC  90 1F 01 E0 */	stw r0, 0x1e0(r31)
/* 80259CB0 00256BF0  80 1F 01 E0 */	lwz r0, 0x1e0(r31)
/* 80259CB4 00256BF4  54 00 06 B0 */	rlwinm r0, r0, 0, 0x1a, 0x18
/* 80259CB8 00256BF8  90 1F 01 E0 */	stw r0, 0x1e0(r31)
/* 80259CBC 00256BFC  48 00 03 9D */	bl resetAppearCheck__Q34Game4Ujib3ObjFv
/* 80259CC0 00256C00  38 60 00 00 */	li r3, 0
/* 80259CC4 00256C04  38 00 FF FF */	li r0,


nst l=_x(n.valueDeclaration);if(l){const R=fr(l)?p1(l):void 0;return R&&R.typeExpression?fi(R.typeExpression):n.valueDeclaration&&xL(n.valueDeclaration,n,l)||Kb(Ql(l))}let u,p=!1,g=!1;if(Od(n)&&(u=Qy(n,pm(n))),!u){let R;if(n.declarations){let M;for(const J of n.declarations){const $=br(J)||no(J)?J:ll(J)?br(J.parent)?J.parent:J:void 0;if(!$)continue;const ge=ll($)?FN($):Ll($);(ge===4||br($)&&OV($,ge))&&(Gf($)?p=!0:g=!0),no($)||(M=sp(M,$,n,J)),M||(R||(R=[])).push(br($)||no($)?b0(n,a,$,ge):gt)}u=M}if(!u){if(!Ae(R))return Ce;let M=p&&n.declarations?z2(R,n.declarations):void 0;if(g){const $=pV(n);$&&((M||(M=[])).push($),p=!0)}const J=kt(M,$=>!!($.flags&-98305))?M:R;u=Qr(J)}}const x=Zd(Io(u,!1,g&&!p));return n.valueDeclaration&&_c(x,R=>!!(R.flags&-98305))===gt?(R0(n.valueDeclaration,we),we):x}function xL(n,a,l){var u,p;if(!fr(n)||!l||!Ls(l)||l.properties.length)return;const g=so();for(;br(n)||Fr(n);){const M=Xd(n);(u=M==null?void 0:M.exports)!=null&&u.size&&Pc(g,M.exports),n=br(n)?n.parent:n.parent.parent}const x=Xd(n);(p=x==null?void 0:x.exports)!=null&&p.size&&Pc(g,x.exports);const R=Ns(a,g,rt,rt,rt);return R.objectFlags|=4096,R}function sp(n,a,l,u){var p;const g=Zc(a.parent);if(g){const x=Zd(fi(g));if(n)!ns(n)&&!ns(x)&&!Xh(n,x)&&dRe(void 0,n,u,x);else return x}if((p=l.parent)!=null&&p.valueDeclaration){const x=Zc(l.parent.valueDeclaration);if(x){const R=co(fi(x),l.escapedName);if(R)return T0(R)}}return n}function b0(n,a,l,u){if(no(l)){if(a)return ar(a);const x=Ql(l.arguments[2]),R=fc(x,"value");if(R)return R;const M=fc(x,"get");if(M){const $=DS(M);if($)return ys($)}const J=fc(x,"set");if(J){const $=DS(J);if($)return Roe($)}return we}if(AL(l.left,l.right))return we;const p=u===1&&(Fr(l.left)||cl(l.left))&&(bh(l.left.expression)||He(l.left.expression)&&hT(l.left.expression)),g=a?ar(a):p?yd(Ql(l.right)):Kb(Ql(l.right));if(g.flags&524288&&u===2&&n.escapedName==="export="){const x=up(g),R=so();yN(x.members,R);const M=R.size;a&&!a.exports&&(a.exports=so()),(a||n).exports.forEach(($,ge)=>{var Ne;const De=R.get(ge);if(De&&De!==$&&!($.flags&2097152))if($.flags&111551&&De.flags&111551){if($.valueDeclaration&&De.valueDeclaration


Doppelganger", tool_version = "2.0", generated_on = "2013-12-30 12:55:41.660 -0500", hash_original_method = "64980175D45C88025DB0BF7ED31DD55C", hash_generated_method = "DE5F568AB97EC2170F09BD059D7E21FB")

public void start() throws ProviderDoesNotExistException, SipException {
		// Start a new event scanner if one does not exist.
		if (this.eventScanner == null) {
			this.eventScanner = new EventScanner(this);
		}

	}

	/**
	 * Get the listener for the stack. A stack can have only one listener. To
	 * get an event from a provider, the listener has to be registered with the
	 * provider. The SipListener is application code.
	 *
	 * @return -- the stack SipListener
	 *
	 */
	@DSSource({DSSourceKind.SENSITIVE_UNCATEGORIZED})
    @DSGenerator(tool_name = "Doppelganger", tool_version = "2.0", generated_on = "2013-12-30 12:55:41.663 -0500", hash_original_method = "007AB23FB90DEFAA901334391BCA8574", hash_generated_method = "1EDE2942A56DCC6F94B54FC9E7276D02")

public SipListener getSipListener() {
		return this.sipListener;
	}

	/**
	 * Get the message log factory registered with the stack.
	 *
	 * @return -- the messageLogFactory of the stack.
	 */
	@DSSource({DSSourceKind.SENSITIVE_UNCATEGORIZED})
    @DSGenerator(tool_name = "Doppelganger", tool_version = "2.0", generated_on = "2013-12-30 12:55:41.665 -0500", hash_original_method = "41341CEB98E5DA012DCAACB9910CCA31", hash_generated_method = "398B161D7AFEA30AA4E99EFF2C24F6E4")

public LogRecordFactory getLogRecordFactory() {
		return super.logRecordFactory;
	}

	/**
	 * Set the log appender ( this is useful if you want to specify a particular
	 * log format or log to something other than a file for example). This method
	 * is will be removed May 11, 2010 or shortly there after.
	 *
	 * @param Appender
	 *            - the log4j appender to add.
	 * @deprecated TODO: remove this method May 11, 2010.
	 */
        // BEGIN android-deleted
	/*
        @Deprecated
	public void addLogAppender(org.apache.log4j.Appender appender) {
		if (this.getStackLogger() instanceof gov.nist.core.LogWriter) {
			((gov.nist.core.LogWriter) this.getStackLogger()).addAppender(appender);
		}
	}
        */
        // END android-deleted

	/**
	 * Get the log4j logger ( for log stream integration ).
	 * This method will be removed May 11, 2010 or shortly there after.
	 *
	 * @return  the log4j logger.
	 * @deprecated TODO: This method will be removed May 11, 2010.
	 */
	@DSSource({DSSourceKind.SENSITIVE_UNCATEGORIZED})
    @DSGenerator(tool_name = "Doppelganger", tool_version = "2.0", generated_on = "2013-12-30 12:55:41.667 -0500", hash_original_method = "DD6917F16C5DC825A79D8F74525C77AA", hash_generated_method = "3F5155FA615770326CAC12881792C099")

@Deprecated
        // BEGIN andoird-deleted
        /*
	public org.apache.log4j.Logger getLogger() {
		if (this.getStackLogger() instanceof g


xpile= new_rows;
			this.columns= columns-1;
			this.slength= slength - nonzero_of_last_c;

		} else {
			int nonzero_of_last_c=0;
			int last_col=this.columns-1;
			for (int j=this.indexpile[last_col]; j <this.indexpile[last_col+1]; j++){
				nonzero_of_last_c+=1;
			}
			double [] newdata= new double [slength- nonzero_of_last_c];
			int new_columns  []= new int[this.indexpile.length-1];
			int new_rows[]= new int[slength- nonzero_of_last_c ];

			for (int i=0; i <this.indexpile[last_col];i++ ){
				newdata[i]=this.valuespile[i];
				new_rows[i]=this.mainelementpile[i];
			}

			for (int i=0; i <last_col;i++ ){
				new_columns[i]=this.indexpile[i];

			}

			this.valuespile=newdata;
			this.mainelementpile=new_rows ;
			this.indexpile= new_columns ;
			this.columns= columns-1;
			this.slength= slength - nonzero_of_last_c;

		}

	}

	@Override
	public void RemoveRow() {

		// not available for sparse matrix

	}

	@Override
	public double[] GetColumn(int column) {
		if (column>=this.columns){
			throw new IllegalStateException("current column exceeds current diension: " + this.columns);
		}

		double column_tosend []= new double[rows];

		if (this.iscolumnmatrix){

			if (this.indexer!=null){
				for (int i=0; i < this.rows;i++ ){
					column_tosend[i]=this.GetElement(i, column);
				}
			} else {

				for (int i=0; i < this.rows;i++ ){
					for (int c=this.indexpile[i]; c < this.indexpile[i+1];c++ ){
						int j=this.mainelementpile[c];
						if (j< column){
							continue;
						}
						if (j==column){
							column_tosend[i]=this.valuespile[c];
							break;
						}
						if (j>column){
							break;
						}
						//double value=this.valuespile[c];

					}

				}
			}
		} else {
			for (int c=this.indexpile[column]; c < this.indexpile[column+1];c++ ){
				int i=this.mainelementpile[c];
				//double value=this.valuespile[c];
				column_tosend[i] =this.valuespile[c];

			}

		}

		return column_tosend;
	}

	@Override
	public double[] GetRow(int row) {
		if (row>=this.rows){
			throw new IllegalStateException("current row exceeds current diension: " + this.rows);
		}

		double row_tosend []= new double[columns];
		if (this.iscolumnmatrix){

			for (int c=this.indexpile[row]; c < this.indexpile[row+1];c++ ){
				int j=this.mainelementpile[c];
				//double value=this.valuespile[c];
				row_tosend[ j] =this.valuespile[c];
			}

		}
		else {
			if (this.indexer!=null){
				for (int j=0; j < this.columns;j++ ){
					row_tosend[j]=this.GetElement(row, j);
				}
			} else {


Node** has similar commands.

**Java** is a little different, each command must specify vendor with `--vendor`, currently supported vendors includs *openjdk*, *corretto*.

for example, install Java 20 from Amazon Corretto:
```shell
$ uvm java install -v 20 --vendor corretto
```

## TODO

- [ ] configuration for uvm
- [ ] support mirrors
- [ ] support more languages
- [ ] show progress while downloading files
- [ ] support more shells for venv

## Acknowledgement

Thanks to tools like [nvm](https://github.com/nvm-sh/nvm), [n](https://github.com/tj/n), [rvm](https://github.com/rvm/rvm), [g](https://github.com/voidint/g), [using-virtual-environments](https://github.com/JeNeSuisPasDave/using-virtual-environments) for providing valuable ideas.
# yarn如何运行一个Application

用户提交应用程序，会调用客户端的ApplicationClientProtoc#submitApplication,进而会调用服务端RMAppManager#submitApplication，此后服务端直到ApplicationMater启动，会涉及ClientRMService、RMAppManager、RMAppImpl、RMAppAttempImpl、RMNode、ResourceScheduler。\
为了简化整个分析过程，这里仅分析首次提交任务的过程中任务提交到ApplicationMater启动过程，不考虑失败重启的过程。整个过程将围绕着状态机展开。

|    | ResourceManager核心的状态机 | 状态列表                                                                                | ResourceManager埋点的几个监控                                                                                |
| :- | :-------------------- |:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1  | RMAppImpl             | *NEW*, *NEW_SAVING*, *SUBMITTED*, *ACCEPTED*, *RUNNING*, *FINAL_SAVING*, *FINISHING*, *FINISHED*, *FAILED*, *KILLING*, *KILLED*                                                    | SUBMITTED:  @Metric("# of apps submitted") MutableCounterInt appsSubmitted;
![yarn_sumbitApp](../images/yarn_submitApp.png)
 FINISHED: @Metric("# of apps completed") MutableCounterInt appsCompleted;							                                         @Metric("# of apps killed") MutableCounterInt appsKilled;			  @Metric("# of apps failed") MutableCounterInt appsFailed;
![yarn_finishApp](../images/yarn_finishApp.png) |
| 2  | RMAppAttemptImpl      | *NEW*, *SUBMITTED*, *SCHEDULED*, *ALLOCATED_SAVING*, *ALLOCATED*, *LAUNCHED_UNMANAGED_SAVING*, *LAUNCHED*, *RU


    REQUIRE(sortedOutput[newFromOld[0]][2].second == newFromOld[1]);
    REQUIRE(sortedOutput[newFromOld[0]][2].first == Approx(0.30).epsilon(1e-7));
    REQUIRE(sortedOutput[newFromOld[0]][3].second == newFromOld[8]);
    REQUIRE(sortedOutput[newFromOld[0]][3].first == Approx(0.40).epsilon(1e-7));

    // Neighbors of point 1.
    REQUIRE(sortedOutput[newFromOld[1]].size() == 6);
    REQUIRE(sortedOutput[newFromOld[1]][0].second == newFromOld[8]);
    REQUIRE(sortedOutput[newFromOld[1]][0].first == Approx(0.10).epsilon(1e-7));
    REQUIRE(sortedOutput[newFromOld[1]][1].second == newFromOld[2]);
    REQUIRE(sortedOutput[newFromOld[1]][1].first == Approx(0.20).epsilon(1e-7));
    REQUIRE(sortedOutput[newFromOld[1]][2].second == newFromOld[0]);
    REQUIRE(sortedOutput[newFromOld[1]][2].first == Approx(0.30).epsilon(1e-7));
    REQUIRE(sortedOutput[newFromOld[1]][3].second == newFromOld[9]);
    REQUIRE(sortedOutput[newFromOld[1]][3].first == Approx(0.55).epsilon(1e-7));
    REQUIRE(sortedOutput[newFromOld[1]][4].second == newFromOld[5]);
    REQUIRE(sortedOutput[newFromOld[1]][4].first == Approx(0.57).epsilon(1e-7));
    REQUIRE(sortedOutput[newFromOld[1]][5].second == newFromOld[10]);
    REQUIRE(sortedOutput[newFromOld[1]][5].first == Approx(0.65).epsilon(1e-7));

    // Neighbors of point 2.
    REQUIRE(sortedOutput[newFromOld[2]].size() == 4);
    REQUIRE(sortedOutput[newFromOld[2]][0].second == newFromOld[0]);
    REQUIRE(sortedOutput[newFromOld[2]][0].first == Approx(0.10).epsilon(1e-7));
    REQUIRE(sortedOutput[newFromOld[2]][1].second == newFromOld[1]);
    REQUIRE(sortedOutput[newFromOld[2]][1].first == Approx(0.20).epsilon(1e-7));
    REQUIRE(sortedOutput[newFromOld[2]][2].second == newFromOld[8]);
    REQUIRE(sortedOutput[newFromOld[2]][2].first == Approx(0.30).epsilon(1e-7));
    REQUIRE(sortedOutput[newFromOld[2]][3].second == newFromOld[5]);
    REQUIRE(sortedOutput[newFromOld[2]][3].first == Approx(0.37).epsilon(1e-7));

    // Neighbors of point 3.
    REQUIRE(sortedOutput[newFromOld[3]].size() == 2);
    REQUIRE(sortedOutput[newFromOld[3]][0].second == newFromOld[10]);
    REQUIRE(sortedOutput[newFromOld[3]][0].first == Approx(0.25).epsilon(1e-7));
    REQUIRE(sortedOutput[newFromOld[3]][1].second == newFromOld[9]);
    REQUIRE(sortedOutput[newFromOld[3]][1].first == Approx(0.35).epsilon(1e-7));

    // Neighbors of point 4.
    REQUIRE(sortedOutput[newFromOld[4]].size() == 0);

    // Neighbo