(size));
            emitImmediate(asm, size, imm);
        }
    }

    /**
     * Opcode with operand order of MR.
     */
    public static class SSEMROp extends AMD64MROp {
        // @formatter:off
        // MOVD and MOVQ are the same opcode, just with different operand size prefix
        // Note that as MR opcodes, they have reverse operand order, so the IntToFloatingAssertion must be used.
        public static final SSEMROp MOVD   = new SSEMROp("MOVD",   0x66, P_0F, 0x7E, PreferredNDS.NONE, OpAssertion.DwordToFloatAssertion);
        public static final SSEMROp MOVQ   = new SSEMROp("MOVQ",   0x66, P_0F, 0x7E, PreferredNDS.NONE, OpAssertion.QwordToFloatAssertion);
        // MOVSS and MOVSD are the same opcode, just with different operand size prefix
        public static final SSEMROp MOVSS  = new SSEMROp("MOVSS",               P_0F, 0x11, PreferredNDS.SRC,  OpAssertion.SingleAssertion);
        public static final SSEMROp MOVSD  = new SSEMROp("MOVSD",               P_0F, 0x11, PreferredNDS.SRC,  OpAssertion.DoubleAssertion);

        public static final SSEMROp MOVDQU = new SSEMROp("MOVDQU",              P_0F, 0x7F, PreferredNDS.NONE, OpAssertion.SingleAssertion);
        // @formatter:on

        private final PreferredNDS preferredNDS;

        protected SSEMROp(String opcode, int prefix, int op, PreferredNDS preferredNDS, OpAssertion assertion) {
            this(opcode, 0, prefix, op, preferredNDS, assertion);
        }

        protected SSEMROp(String opcode, int prefix1, int prefix2, int op, PreferredNDS preferredNDS, OpAssertion assertion) {
            super(opcode, prefix1, prefix2, op, assertion, CPUFeature.SSE2);
            this.preferredNDS = preferredNDS;
        }

        @Override
        public final void emit(AMD64Assembler asm, OperandSize size, Register dst, Register src) {
            assert verify(asm, size, src, dst);
            assert isSSEInstruction();
            asm.simdPrefix(src, preferredNDS.getNds(dst, src), dst, size, prefix1, prefix2, size == OperandSize.QWORD);
            asm.emitByte(op);
            asm.emitModRM(src, dst);
        }

        @Override
        public final void emit(AMD64Assembler asm, OperandSize size, AMD64Address dst, Register src) {
            assert verify(asm, size, src, null);
            assert isSSEInstruction();
            // MOVSS/SD are not RVM instruction when the dst is an address
            Register nds = (this == MOVSS || this == MOVSD) ? Register.None : preferredNDS.getNds(src, dst);
            asm.simdPrefix(src, nds, dst, size, prefix1, prefix2, size == OperandSize.QWORD);
            asm.emitByte(op);
            asm.emitOperandHelper(src, dst, 0);
        }
    }

    public static class SSEMRIOp extends AMD64ImmOp {
        // @formatter:off
        public static final SSEMRIOp PEXTRB = new SSEMRIOp("PEXTRB", true, P_0F3A, false, 0x14, PreferredNDS.NONE,  OpAssertion.PackedDoubleFloatToIntAssertion, CPUFeature.SSE4_1);
        public static final SSEMRIOp PEXTRW = new SSEMRIOp("PEXTRW", true, P_0F3A, false, 0x15, PreferredNDS.NONE,  OpAssertion.PackedDoubleFloatToIntAssertion, CPUFeature.SSE4_1);
        public static final SSEMRIOp PEXTRD = new SSEMRIOp("PEXTRD", true, P_0F3A, false, 0x16, PreferredNDS.N


d, dynObj);
			trigger.Reply("DynamicObject created.");
		}

		public override ObjectTypeCustom TargetTypes
		{
			get { return ObjectTypeCustom.All; }
		}
	}

	public class ClearDOsCommand : RealmServerCommand
	{
		protected ClearDOsCommand() { }

		protected override void Initialize()
		{
			base.Init("ClearDOs");
			EnglishDescription = "Removes all staticly spawned DOs";
		}

		public override void Process(CmdTrigger<RealmServerCmdArgs> trigger)
		{
			foreach (var dynObj in SpellHandler.StaticDOs.Values)
			{
				dynObj.Delete();
			}
			SpellHandler.StaticDOs.Clear();
		}

	}

	public class ListDOs : RealmServerCommand
	{
		protected override void Initialize()
		{
			base.Init("ListDOs");
			EnglishDescription = "Shows a list of all available Dynamic Objects";
		}

		public override void Process(CmdTrigger<RealmServerCmdArgs> trigger)
		{
			foreach (var doSpell in SpellHandler.DOSpells.Values)
			{
				trigger.Reply("{0} (Id: {1})", doSpell.Name, doSpell.Id);
			}
		}
	}
}


 are always sorted alphabetically regardless of the order
    // given.
    gist.files = Object.fromEntries(
      Object.entries(gist.files).sort(([aName], [bName]) =>
        aName.localeCompare(bName)
      )
    );
    return jsonResponse(ctx, 200, gist);
  }

  /**
   * Simulates POST https://api.github.com/gists/, the API for creating a GitHub
   * gist.
   *
   * Documentation:
   * https://docs.github.com/en/rest/reference/gists#create-a-gist
   */
  async createGist(ctx: Koa.Context) {
    if (!this._checkAccept(ctx)) {
      return;
    }
    const userAndScope = this._checkAuthentication(ctx);
    if (!userAndScope) {
      return;
    }

    let createRequest: CreateGistRequest;
    try {
      createRequest = await coBody.json(ctx);
    } catch (e) {
      return jsonResponse(ctx, 400, {message: 'Problems parsing JSON'});
    }
    if (!createRequest.files || Object.keys(createRequest.files).length === 0) {
      return jsonResponse(ctx, 422, {message: 'Invalid files'});
    }

    for (const [filename, file] of Object.entries(createRequest.files)) {
      if (!file.content) {
        // Empty files are not allowed.
        return jsonResponse(ctx, 422, {message: 'Validation Failed'});
      }
      file.filename = filename;
    }
    const gist = {
      id: `fake-gist-${randomNumber()}`,
      files: createRequest.files,
      owner: {id: userAndScope.userId},
    };
    this._gists.set(gist.id, gist);
    // Add a similar latency to the real API.
    await new Promise((resolve) => setTimeout(resolve, 500));
    return jsonResponse(ctx, 200, gist);
  }

  /**
   * Simulates PATCH https://api.github.com/gists/<id>, the API for creating a
   * new revision of an existing GitHub gist.
   *
   * Documentation:
   * https://docs.github.com/en/rest/reference/gists#update-a-gist
   */
  async updateGist(ctx: Koa.Context) {
    if (!this._checkAccept(ctx)) {
      return;
    }
    const userAndScope = this._checkAuthentication(ctx);
    if (!userAndScope) {
      return;
    }

    const idMatch = ctx.path.match(/^\/gists\/(?<id>.+)/);
    const id = idMatch?.groups?.id;
    const gist = this._gists.get(id ?? '');
    if (!gist) {
      // TODO(aomarks) Check error code
      return jsonResponse(ctx, 404, {message: 'Invalid gist'});
    }

    let updateRequest: UpdateGistRequest;
    try {
      updateRequest = await coBody.json(ctx);
    } catch (e) {
      return jsonResponse(ctx, 400, {message: 'Problems parsing JSON'});
    }
    if (!updateRequest.files || Object.keys(updateRequest.files).length === 0) {
      return jsonResponse(ctx, 422, {message: 'Invalid files'});
    }

    // TODO(aomarks) In the real API, each revision is stored individually, and
    // you can GET either the latest revision, or a specific revision. Until
    // needed, though, this fake just directly updates the simplified flat gist
    // instead.
    const newFiles = updateRequest.files;
    const oldFiles = gist.files;
    for (const [newFilename, newFile] of Object.entries(newFiles)) {
      newFile.filename = newFilename;
      if (!newFile.content && oldFiles[newFilename] === undefined) {
        // New empty files are not allowed.
        return jsonResponse(ctx, 422, {message: 'Validation Failed'});
      }
    }


llo", "World"), new SeedContent("Goodbye", "World"));
            Assert.False(new SeedContent("Hello", "World") == new SeedContent("Goodbye", "World"));
            Assert.True(new SeedContent("Hello", "World") != new SeedContent("Goodbye", "World"));
            Assert.False(new SeedContent("Hello", "World").Equals(new SeedContent("Goodbye", "World")));
            Assert.NotEqual<SeedContent>(new SeedContent("Hello", "World"), ("Goodbye", "World"));
            Assert.False(new SeedContent("Hello", "World") == ("Goodbye", "World"));
            Assert.True(new SeedContent("Hello", "World") != ("Goodbye", "World"));

            Assert.False(new SeedContent("Hello", "World") == null);
            Assert.True(new SeedContent("Hello", "World") != null);
            Assert.False(new SeedContent("Hello", "World").Equals(new object()));
            Assert.False(new SeedContent("Hello", "World").Equals(null));
        }
    }
}


1
	.word 0xccc21009  ! 453: LDSWA_R	ldswa	[%r8, %r9] 0x80, %r6
	.word 0x8143e011  ! 454: MEMBAR	membar	#LoadLoad | #Lookaside
	.word 0xce7a0009  ! 455: SWAP_R	swap	%r7, [%r8 + %r9]
	.word 0xc3222310  ! 456: STF_I	st	%f1, [0x0310, %r8]
	.word 0x88fa20a4  ! 457: SDIVcc_I	sdivcc 	%r8, 0x00a4, %r4
	.word 0x8ba209a9  ! 458: FDIVs	fdivs	%f8, %f9, %f5
	.word 0x82da23f4  ! 459: SMULcc_I	smulcc 	%r8, 0x03f4, %r1
	.word 0xccb226c0  ! 460: STHA_I	stha	%r6, [%r8 + 0x06c0] %asi
	.word 0xd4ca2e98  ! 461: LDSBA_I	ldsba	[%r8, + 0x0e98] %asi, %r10
	.word 0xcec21009  ! 462: LDSWA_R	ldswa	[%r8, %r9] 0x80, %r7
	.word 0xa7a208a9  ! 463: FSUBs	fsubs	%f8, %f9, %f19
	.word 0xc8b21009  ! 464: STHA_R	stha	%r4, [%r8 + %r9] 0x80
	.word 0x83a209a9  ! 465: FDIVs	fdivs	%f8, %f9, %f1
	.word 0xc36a2e18  ! 466: PREFETCH_I	prefetch	[%r8 + 0x0e18], #one_read
	.word 0xca0223a0  ! 467: LDUW_I	lduw	[%r8 + 0x03a0], %r5
	.word 0x89a209a9  ! 468: FDIVs	fdivs	%f8, %f9, %f4
	.word 0xfa6a0009  ! 469: LDSTUB_R	ldstub	%r29, [%r8 + %r9]
	.word 0xe26a0009  ! 470: LDSTUB_R	ldstub	%r17, [%r8 + %r9]
	.word 0xa87222a0  ! 471: UDIV_I	udiv 	%r8, 0x02a0, %r20
	.word 0xc9f22009  ! 472: CASXA_R	casxa	[%r8]%asi, %r9, %r4
	.word 0x84720009  ! 473: UDIV_R	udiv 	%r8, %r9, %r2
	.word 0xc88221b8  ! 474: LDUWA_I	lduwa	[%r8, + 0x01b8] %asi, %r4
	.word 0xc6a22498  ! 475: STWA_I	stwa	%r3, [%r8 + 0x0498] %asi
	.word 0xc8fa274c  ! 476: SWAPA_I	swapa	%r4, [%r8 + 0x074c] %asi
	.word 0xccca24b8  ! 477: LDSBA_I	ldsba	[%r8, + 0x04b8] %asi, %r6
	.word 0x40000004  ! 478: CALL	call	disp30_4
	.word 0xedf21009  ! 479: CASXA_I	casxa	[%r8] 0x80, %r9, %r22
	.word 0xe27a21a8  ! 480: SWAP_I	swap	%r17


dflare-spectrum">Spectrum and Magic Transit products. To solve our problem the Argo team turned to the CONNECT protocol.

As we now know, when a WARP request is made it first communicates over the WireGuard protocol to a server running in one of our 194 data centers around the world. Once the WireGuard message has been decrypted, we examine the destination IP address to see if it is an HTTP request destined for a Cloudflare-powered site, or a request destined elsewhere. If it’s destined for us it enters our standard HTTP serving path; often we can reply to the request directly from our cache in the very same data center.

If it’s not destined for a Cloudflare-powered site we instead forward the packet to a proxy process which runs on each machine. This proxy is responsible for loading the fastest path from our Argo database and beginning an HTTP session with a machine in the data center this traffic should be forwarded to. It uses the CONNECT command to both transmit metadata (as headers) and turn the HTTP session into a connection which can transmit the raw bytes of the payload:

CONNECT 8.54.232.11:5564 HTTP/1.1\r\n
Exit-Tcp-Keepalive-Duration: 15\r\n
Application: warp\r\n
\r\n
<data to send to origin>

Once the message arrives at the destination data center it is either forwarded to another data center (if that is best for performance), or directed directly to the origin which is awaiting the traffic.

Smart routing is just the beginning of WARP+; We have a long list of projects and plans which are all aimed at making your Internet faster, and couldn’t be more thrilled to finally have a platform to test them with.

Our Mission

			<svg width="16" height="16" viewBox="0 0 24 24">
				<path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path>
			</svg>

Today, after well over a year of development, WARP is available to you and to your friends and family. For us though, this is just the beginning. With the ability to improve full network connection for all traffic, we unlock a whole new world of optimizations and security improvements which were simply impossible before. We couldn't be more excited to experiment, play, and eventually release, all sorts of new WARP and W


ity.io%2Fimages%2Fjakvqat5%2Fproduction%2F69a7515688f69345acd567fccb70ae257f4c4f07-222x133.jpg&w=750&q=75 750w, /_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Fjakvqat5%2Fproduction%2F69a7515688f69345acd567fccb70ae257f4c4f07-222x133.jpg&w=828&q=75 828w, /_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Fjakvqat5%2Fproduction%2F69a7515688f69345acd567fccb70ae257f4c4f07-222x133.jpg&w=1080&q=75 1080w, /_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Fjakvqat5%2Fproduction%2F69a7515688f69345acd567fccb70ae257f4c4f07-222x133.jpg&w=1200&q=75 1200w, /_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Fjakvqat5%2Fproduction%2F69a7515688f69345acd567fccb70ae257f4c4f07-222x133.jpg&w=1920&q=75 1920w, /_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Fjakvqat5%2Fproduction%2F69a7515688f69345acd567fccb70ae257f4c4f07-222x133.jpg&w=2048&q=75 2048w, /_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Fjakvqat5%2Fproduction%2F69a7515688f69345acd567fccb70ae257f4c4f07-222x133.jpg&w=3840&q=75 3840w" src="/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Fjakvqat5%2Fproduction%2F69a7515688f69345acd567fccb70ae257f4c4f07-222x133.jpg&w=3840&q=75"/>

<img alt="" loading="lazy" width="3500" height="2000" decoding="async" data-nimg="1" style="color:transparent;background-size:cover;background-position:50% 50%;background-repeat:no-repeat;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg'


: 92935,
		certLength:   621,
	},
	{
		cn:           "CN=QuoVadis Root CA 1 G3,O=QuoVadis Limited,C=BM",
		sha256Hash:   "8a866fd1b276b57e578e921c65828a2bed58e9f2f288054134b7f1f4bfc9cc74",
		certStartOff: 93556,
		certLength:   1380,
	},
	{
		cn:           "CN=QuoVadis Root CA 2 G3,O=QuoVadis Limited,C=BM",
		sha256Hash:   "8fe4fb0af93a4d0d67db0bebb23e37c71bf325dcbcdd240ea04daf58b47e1840",
		certStartOff: 94936,
		certLength:   1380,
	},
	{
		cn:           "CN=QuoVadis Root CA 2,O=QuoVadis Limited,C=BM",
		sha256Hash:   "85a0dd7dd720adb7ff05f83d542b209dc7ff4528f7d677b18389fea5e5c49e86",
		certStartOff: 96316,
		certLength:   1467,
	},
	{
		cn:           "CN=QuoVadis Root CA 3 G3,O=QuoVadis Limited,C=BM",
		sha256Hash:   "88ef81de202eb018452e43f864725cea5fbd1fc2d9d205730709c5d8b8690f46",
		certStartOff: 97783,
		certLength:   1380,
	},
	{
		cn:           "CN=QuoVadis Root CA 3,O=QuoVadis Limited,C=BM",
		sha256Hash:   "18f1fc7f205df8adddeb7fe007dd57e3af375a9c4d8d73546bf4f1fed1e18d35",
		certStartOff: 99163,
		certLength:   1697,
	},
	{
		cn:           "CN=SSL.com EV Root Certification Authority ECC,O=SSL Corporation,L=Houston,ST=Texas,C=US",
		sha256Hash:   "22a2c1f7bded704cc1e701b5f408c310880fe956b5de2a4a44f99c873a25a7c8",
		certStartOff: 100860,
		certLength:   664,
	},
	{
		cn:           "CN=SSL.com EV Root Certification Authority RSA R2,O=SSL Corporation,L=Houston,ST=Texas,C=US",
		sha256Hash:   "2e7bf16cc22485a7bbe2aa8696750761b0ae39be3b2fe9d0cc6d4ef73491425c",
		certStartOff: 101524,
		certLength:   1519,
	},
	{
		cn:           "CN=SSL.com Root Certification Authority ECC,O=SSL Corporation,L=Houston,ST=Texas,C=US",
		sha256Hash:   "3417bb06cc6007da1b961c920b8ab4ce3fad820e4aa30b9acbc4a74ebdcebc65",
		certStartOff: 103043,
		certLength:   657,
	},
	{
		cn:           "CN=SSL.com Root Certification Authority RSA,O=SSL Corporation,L=Houston,ST=Texas,C=US",
		sha256Hash:   "85666a562ee0be5ce925c1d8890a6f76a87ec16d4d7d5f29ea7419cf20123b69",
		certStartOff: 103700,
		certLength:   1505,
	},
	{
		cn:           "CN=SSL.com TLS ECC Root CA 2022,O=SSL Corporation,C=US",
		sha256Hash:   "c32ffd9


--------------------------------
-- @module EventFrame
-- @extend Frame
-- @parent_module ccs

--------------------------------
--
-- @function [parent=#EventFrame] setEvent
-- @param self
-- @param #string event
-- @return EventFrame#EventFrame self (return value: ccs.EventFrame)

--------------------------------
--
-- @function [parent=#EventFrame] init
-- @param self
-- @return EventFrame#EventFrame self (return value: ccs.EventFrame)

--------------------------------
--
-- @function [parent=#EventFrame] getEvent
-- @param self
-- @return string#string ret (return value: string)

--------------------------------
--
-- @fun


-.08.59-.19 1.05-.54 1.09-1.2.05-.75-.99-1.32-1.87-1.41-.34-.03-.64-.05-.91-.07h-.11c-.28-.02-.54-.02-.77-.02-3.92-.08-7.29.6-9.36 1.93v7.72c2.67 1.66 5.95 4.61 5.26 7.08-.21.76.39 1.35 1.23 1.26 1.01-.11 1.71-1.18 1.75-2.28.05-1.29-.19-2.59-.62-3.74-.05-.32.01-.65.47-.68.61-.04 1.39-.08 1.99-.1.32 0 .64-.01.94-.03h.01c.52-.03 1-.07 1.42-.12.88-.11 1.69-.6 1.79-1.35.1-.75-.55-1.25-1.44-1.35-.07-.01-.13-.02-.2-.02.21-.02.42-.04.61-.06.88-.11 1.69-.6 1.79-1.35.09-.75-.56-1.31-1.45-1.36zM3 3H0v8h3c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],ks=["M3 9H0v8h3c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1zm16.99 3.09c-.1-.75-.91-1.24-1.79-1.35-.19-.02-.4-.05-.61-.06.07-.01.14-.01.2-.02.88-.1 1.53-.61 1.44-1.35-.1-.74-.91-1.24-1.79-1.35-.42-.05-.9-.09-1.42-.12h-.01l-.94-.03c-.6-.02-1.39-.05-1.99-.1-.45-.03-.51-.36-.47-.68.43-1.15.67-2.45.62-3.74-.04-1.11-.74-2.17-1.75-2.28-.84-.09-1.45.5-1.23 1.26.7 2.47-2.58 5.43-5.25 7.08v7.72c2.08 1.33 5.44 2.01 9.35 1.93.24 0 .49-.01.77-.02h.11c.27-.02.57-.04.91-.07.88-.08 1.92-.66 1.87-1.41-.04-.65-.5-1.01-1.09-1.2.34-.03.67-.05.99-.08.89-.08 1.55-.58 1.46-1.33-.08-.75-.88-1.25-1.76-1.37-.03 0-.06-.01-.09-.01.37-.02.71-.04 1.02-.06.91-.05 1.55-.61 1.45-1.36z"],Vs=["M17 4c-.28 0-.53.11-.71.29L7 13.59 3.71 10.3A.965.965 0 003 10a1.003 1.003 0 00-.71 1.71l4 4c.18.18.43.29.71.29s.53-.11.71-.29l10-10A1.003 1.003 0 0017 4z"],js=["M10 20C4.48 20 0 15.52 0 10S4.48 0 10 0s10 4.48 10 10-4.48 10-10 10zm5-14c-.28 0-.53.11-.71.29L8 12.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29.28 0 .53-.11.71-.29l7-7A1.003 1.003 0 0015 6z"],Ws=["M11 9.59V4c0-.55-.45-1-1-1s-1 .45-1 1v6c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L11 9.59zM10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-


y="535.75" width="111.71" height="102.4" fill="#565661"></rect><rect x="658.55" y="535.75" width="111.71" height="102.4" opacity="0.1"></rect><ellipse cx="663.21" cy="653.67" rx="7.2" ry="9.2" fill="#565661"></ellipse><ellipse cx="763.06" cy="654.11" rx="7.2" ry="9.2" fill="#565661"></ellipse><polygon points="359 671.06 368.64 671.06 365.99 364.32 351.35 364.32 359 671.06" fill="#efeff0"></polygon><polygon points="638.94 361.87 638.94 668.4 647.91 668.4 647.91 364.32 638.94 361.87" fill="#efeff0"></polygon><polygon points="366.46 419.38 366.46 430.36 638.94 430.36 638.94 422.38 366.46 419.38" fill="#efeff0"></polygon><polygon points="384.93 341.26 730.37 341.26 780.57 357.88 780.57 367.52 349.69 364.2 349.69 354.39 384.93 341.26" fill="#fff"></polygon><polygon points="349.69 354.39 780.57 357.88 780.57 367.52 349.69 364.2 349.69 354.39" fill="#bcbec9"></polygon><path d="M423.68,549.64l-2-.3c0-.09,0-.17,0-.25-.06-.47-.13-.93-.2-1.4.82.65,1.6,1.3,2.32,1.95Z" transform="translate(-34.96 -80.93)" fill="url(#a340ed46-1652-4aba-8925-cf57be9109ca-84)"></path><path d="M380.22,704.05c1.3-.3,2.62-.55,3.94-.73a47.42,47.42,0,0,1,26.62,3.92c-.84,6.18-1.67,12.57.11,18.54,1.24,4.2,3.73,8,4.26,12.38a7.3,7.3,0,0,1,5.75,5.08,11.05,11.05,0,0,1,.57,3.56,19,19,0,0,1-.56,4.44,4.48,4.48,0,0,1-4.8,4c-7.74.88-15.33-2.17-22.53-5.16l-14-5.82c-1.64-.68-3.29-1.37-4.86-2.21a26.63,26.63,0,0,1-7.79-6.37A3.55,3.55,0,0,1,366,734c-.26-1.76,1.8-2.81,3.11-4a6.23,6.23,0,0,0,1-1.22c1.55-2.34,1.7-5.57,2.63-8.33,2.2-6.55,9-10.77,11.4-17.16.13-.35.25-.7.35-1.06" transform="translate(-34.


from .clip import *


== "c:water" then
                    if self.gravity >= 0 then
                        self.fallingSpeed = math.max(self.fallingSpeed - 0.1 * self.gravity, 0.1 * self.gravity)
                    else
                        self.fallingSpeed = math.min(self.fallingSpeed - 0.1 * self.gravity, 0.1 * self.gravity)
                    end
                elseif fluidTags[2] == "c:lava" then
                    if self.gravity >= 0 then
                        self.fallingSpeed = math.max(self.fallingSpeed - 0.1 * self.gravity, 0.02 * self.gravity)
                    else
                        self.fallingSpeed = math.min(self.fallingSpeed - 0.1 * self.gravity, 0.02 * self.gravity)
                    end
                else
                    if self.gravity >= 0 then
                        self.fallingSpeed = math.min(self.fallingSpeed + 0.035 * self.gravity, 3.575 * self.gravity)
                    else
                        self.fallingSpeed = math.max(self.fallingSpeed + 0.035 * self.gravity, 3.575 * self.gravity)
                    end
                end
                self.nextPos = self.currentPos:copy():add(0, self.fallingSpeed * -1, 0)

                --現ティックと次ティックから直方体を算出
                local nextBoxStartPos = vectors.vec3()
                local nextBoxEndPos = vectors.vec3()
                if self.gravity >= 0 then
                    nextBoxStartPos = vectors.vec3(self.currentPos.x - self.boundingBox.x / 2, math.min(self.currentPos.y, self.currentPos.y - self.fallingSpeed), self.currentPos.z - self.boundingBox.z / 2)
                    nextBoxEndPos = vectors.vec3(self.currentPos.x + self.boundingBox.x / 2, math.max(self.currentPos.y, self.currentPos.y - self.fallingSpeed), self.currentPos.z + self.boundingBox.z / 2)
                else
                    nextBoxStartPos = vectors.vec3(self.currentPos.x - self.boundingBox.x / 2, math.min(self.currentPos.y, self.currentPos.y - self.fallingSpeed) + self.boundingBox.y, self.currentPos.z - self.boundingBox.z / 2)
                    nextBoxEndPos = vectors.vec3(self.currentPos.x + self.boundingBox.x / 2, math.max(self.currentPos.y, self.currentPos.y - self.fallingSpeed) + self.boundingBox.y, self.currentPos.z + self.boundingBox.z / 2)
                end
                local nextBoxCenter = nextBoxStartPos:copy():add(nextBoxEndPos:copy():sub(nextBoxStartPos):scale(0.5))

                --直方体と重なるブロック座標を全て算出
                local collisionDetected = false
                if self.gravity >= 0 then
                    local collisionYPos = math.floor(nextBoxStartPos.y)
                    for y = math.floor(nextBoxEndPos.y), math.floor(nextBoxStartPos.y) - 1, -1 do
                        for z = math.floor(nextBoxStartPos.z), math.floor(nextBoxEndPos.z) do
                            for x = math.floor(nextBoxStartPos.x), math.floor(nextBoxEndPos.x) do
                                for _, collisionBox in ipairs( world.getBlockState(x, y, z):getCollisionShape()) do
                                    local collisionStartPos = collisionBox[1]:copy():add(x, y, z)
                                    local collisionEndPos = collisionBox[2]:copy():add(x, y, z)
                                    local collisionBoxCenter = collisionStartPos:copy():add(collisionEndPos:copy():sub(collisionStartPos):scale(0.5))
                                    if math.abs(collisionBoxCenter.x - nextBoxCenter.x) < ((collisionEndPos.x - collisionStartPos.x) + (nextBoxEndPos.x - nextBoxStartPos.x)) / 2 and math.abs(collisionBoxCenter.y - nextBoxCenter.y) < ((collisionEndPos.y - collisionStartPos.y) + (nextBoxEndPos.y - nextBoxStartPos.y)) / 2 and math.abs(collisionBoxCenter.z - nextBoxCenter.z) < ((collisionEndPos.z - collisionStartPos.z) + (nextBoxEndPos.z - nextBoxStartPos.z)) / 2 then
                                        if collisionEndPos.y > se


/**
 * \file stdout
 * Functions and types for CRC checks.
 *
 * Generated on Tue Jun 30 23:02:59 2009,
 * by pycrc v0.7.1, http://www.tty1.net/pycrc/
 * using the configuration:
 *    Width        = 16
 *    Poly         = 0x8005
 *    XorIn        = 0x0000
 *    ReflectIn    = True
 *    XorOut       = 0x0000
 *    ReflectOut   = True
 *    Algorithm    = bit-by-bit-fast
 *    Direct       = True
 *****************************************************************************/
#include <stdint.h>
#include "crc16.h"
/**
 * Update the crc value with new data.
 *
 * \param crc      The current crc value.
 * \param data     Pointer to a buffer of \a data_len bytes.
 * \param data_len Number of bytes in the \a data buffer.
 * \return         The updated crc value.
 *****************************************************************************/
crc_t crc16_update(crc_t crc, const unsigned char *data, size_t data_len)
{
    unsigned int i;
    uint8_t bit;
    unsigned char c;

    while (data_len--) {
        c = *data++;
        for (i = 0x01; i & 0xff; i <<= 1) {
            bit = (crc & 0x8000 ? 1 : 0);
            if (c & i) {
                bit ^= 1;
            }
            crc <<= 1;
            if (bit) {
                crc ^= 0x8005;
            }
        }
        crc &= 0xffff;
    }
    return crc & 0xffff;
}


    Caption,
    // Col
    Colgroup,
    Table,
    Tbody,
    Td,
    Tfoot,
    Th,
    Thead,
    Tr,
    // endregion

    // region: Forms
    Button,
    Datalist,
    Fieldset,
    Form,
    // Input
    Label,
    Legend,
    Meter,
    Optgroup,
    Option,
    Output,
    Progress,
    Select,
    Textarea,
    // endregion

    // region: Image and multimedia
    // Area
    Audio,
    // Img
    Map,
    // Track
    Video,
    // endregion

    // region: Embedded content
    // Embed
    Iframe,
    Object,
    // Param
    Picture,
    Portal,
    // Source,
    // endregion

    // region: Special content
    Script, // JS
    Svg,    // XML
    Style,  // CSS
    Math,   // MathML
    // endregion

    // region: Deprecated
    Acronym,
    Applet,
    Basefont,
    Bgsound,
    Big,
    Center,
    Content,
    Dir,
    Font,
    Frame,
    Frameset,
    Hgroup,
    Image,
    Isindex,
    // Keygen,
    Listing,
    Marquee,
    // Menuitem,
    Multicol,
    Nextid,
    Nobr,
    Noembed,
    Noframes,
    Plaintext,
    // Rb,
    // Rtc,
    Shadow,
    Spacer,
    Strike,
    Tt,
    Xmp,
    // endregion

    // region: Interactive
    Details,
    Dialog,
    Menu,
    Summary,
    // endregion

    // region: Other
    Canvas,
    Command,
    Del,
    Ins,
    Noscript,
    Template,
    // endregion
}

impl ElemName {
    pub fn as_str(&self) -> &'static str {
        match self {
            ElemName::Html => "html",
            ElemName::Head => "head",
            ElemName::Body => "body",
            ElemName::Title => "title",
            ElemName::Area => "area",
            ElemName::Base => "base",
            ElemName::Br => "br",
            ElemName::Col => "col",
            ElemName::Embed => "embed",
            ElemName::Hr => "hr",
            ElemName::Img => "img",
            ElemName::Input => "input",
            ElemName::Keygen => "keygen",
            ElemName::Link => "link",
            ElemName::Menuitem => "menuitem",
            ElemName::Meta => "meta",
            ElemName::Param => "param",
            ElemName::Source => "source",
            ElemName::Track => "track",
            ElemName::Wbr => "wbr",
            ElemName::Address => "address",
            ElemName::Article => "article",
            ElemName::Aside => "aside",
            ElemName::Footer => "footer",
            ElemName::Header => "header",
            ElemName::H1 => "h1",
            ElemName::H2 => "h2",
            ElemName::H3 => "h3",
            ElemName::H4 => "h4",
            ElemName::H5 => "h5",
            ElemName::H6 => "h6",
            ElemName::Main => "main",
            ElemName::Nav => "nav",
            ElemName::Section => "section",
            ElemName::Blockquote => "blockquote",
            ElemName::Dd => "dd",
            ElemName::Div => "div",
            ElemName::Dl => "dl",
            ElemName::Dt => "dt",
            ElemName::Figcaption => "figcaption",
            ElemName::Figure => "figure",
            ElemName::Li => "li",
            ElemName::Ol => "ol",
            ElemName::P => "p",
            ElemName::Pre => "pre",
            ElemName::Ul => "ul",
            ElemName::A => "a",
            ElemName::Abbr => "abbr",
            ElemName::B => "b",
            ElemName::Bdi => "bdi",
            ElemName::Bdo => "bdo",
            ElemName::Cite => "cite",
            Ele


  FrontendRright = 0x5B48F938,
    FrontendAxisX = 0xFB56DD5B,
    FrontendAxisY = 0x091178D0,
    FrontendScrollAxisX = 0x3224BC55,
    FrontendScrollAxisY = 0x21651AD6,
    FrontendRightAxisX = 0x3D23549A,
    FrontendRightAxisY = 0xEB4130DF,

    FrontendPauseAlternate = 0x4A903C11,

    FrontendX = 0x6DB8C62F,
    FrontendY = 0x7C0162C0,
    FrontendLb = 0xE885EF16,
    FrontendRb = 0x17BEC168,
    FrontendLt = 0x51104035,
    FrontendRt = 0x6FED71BC,
    FrontendLs = 0x43CDA5B0,
    FrontendRs = 0x7DA48D2A,
    FrontendLeaderboard = 0x9EDC8D65,
    FrontendSocialClub = 0x064D1698,
    FrontendSocialClubSecondary = 0xBDB8D6F3,

    FrontendEndscreenAccept = 0x3E32FCEE,
    FrontendEndscreenExpand = 0xC79BDE9F,
    FrontendSelect = 0x171910DC,
    FrontendPhotoMode = 0x44CD301B,
    FrontendNavUp = 0x8CFFE0A1,
    FrontendNavDown = 0x78114AB3,
    FrontendNavLeft = 0x877F1027,
    FrontendNavRight = 0x08BD758C,
    FrontendMapNavUp = 0x125A70E5,
    FrontendMapNavDown = 0xF8480EED,
    FrontendMapNavLeft = 0xE0D75B00,
    FrontendMapNavRight = 0x28725E5D,
    FrontendMapZoom = 0x6B359A27,
    GameMenuAccept = 0x43DBF61F,
    GameMenuCancel = 0x308588E6,
    GameMenuOption = 0xFBD7B3E6,
    GameMenuExtraOption = 0xD596CFB0,
    GameMenuUp = 0x911CB09E,
    GameMenuDown = 0x4403F97F,
    GameMenuLeft = 0xAD7FCC5B,
    GameMenuRight = 0x65F9EC5B,
    GameMenuTabLeft = 0xCBD5B26E,
    GameMenuTabRight = 0x110AD1D2,
    GameMenuTabLeftSecondary = 0x26E9DC00,
    GameMenuTabRightSecondary = 0x8CC9CD42,
    GameMenuScrollForward = 0x81457A1A,
    GameMenuScrollBackward = 0x9DA42644,
    GameMenuStickUp = 0x9CA97399,
    GameMenuStickDown = 0x63898D36,
    GameMenuStickLeft = 0x06C089D4,
    GameMenuStickRight = 0x5BDBE841,
    GameMenuRightStickUp = 0xF0232A03,
    GameMenuRightStickDown = 0xADB78673,
    GameMenuRightStickLeft = 0x71E38966,
    GameMenuRightStickRight = 0xE1CECE4B,
    GameMenuLs = 0xA8F6DE66,
    GameMenuRs = 0x89EA3FA5,
    GameMenuRightAxisX = 0x4685AA33,
    GameMenuRightAxisY = 0x60C65EB4,
    GameMenuLeftAxisX = 0xF431D57A,
    GameMenuLeftAxisY = 0x226EB1EF,
    Quit = 0x8E90C7BB,
    DocumentPageNext = 0xC97792B7,
    DocumentPagePrev = 0x20190AB4,
    DocumentScroll = 0xAC70F311,
    DocumentScrollUpOnly = 0x3D0C19EC,
    DocumentScrollDownOnly = 0xD72F3E29,
    Attack2 = 0x028


import asyncio
from langgraph.prebuilt import create_react_agent
from langgraph.prebuilt.chat_agent_executor import AgentState
from langgraph.checkpoint.memory import InMemorySaver
from langchain_sandbox import PyodideSandboxTool, PyodideSandbox
from dotenv import load_dotenv

load_dotenv()

class State(AgentState):
    # important: add session_bytes & session_metadata keys to your graph state schema -
    # these keys are required to store the session data between tool invocations.
    # `session_bytes` contains pickled session state. It should not be unpickled
    # and is only meant to be used by the sandbox itself
    session_bytes: bytes
    session_metadata: dict

tool = PyodideSandboxTool(
    # Create stateful sandbox
    stateful=True,
    # Allow Pyodide to install python packages that
    # might be required.
    allow_net=True
)
agent = create_react_agent(
    "gpt-4o-mini",
    tools=[tool],
    checkpointer=InMemorySaver(),
    state_schema=State
)

async def run_agent():
    async for typ, chunk in agent.astream(
        {
            "messages": [
                {"role": "user", "content": "what's 5 + 7? save result as 'a'"}
            ],
            # Important: set session_bytes & session_metadata for Input State
            "session_bytes": None,
            "session_metadata": None
        },
        stream_mode=["messages"],
        config={"configurable": {"thread_id": "123"}},
    ):
        if typ == "messages":
            print(chunk[0].content, end="")

    print("\n")
    print("-"*100)
    print("\n")

    async for typ, chunk in agent.astream(
        {"messages": [{"role": "user", "content": "what's the sine of 'a'?"}]},
        stream_mode=["messages"],
        config={"configurable": {"thread_id": "123"}},
    ):
        if typ == "messages":
            print(chunk[0].content, end="")
    print("\n")

if __name__ == "__main__":
    asyncio.run(run_agent())


emmat',
	headersColumn: 'Ensimmäinen sarake',
	headersNone: 'Ei',
	headersRow: 'Ensimmäinen rivi',
	invalidBorder: 'Reunan koon täytyy olla numero.',
	invalidCellPadding: 'Solujen sisennyksen täytyy olla numero.',
	invalidCellSpacing: 'Solujen välin täytyy olla numero.',
	invalidCols: 'Sarakkeiden määrän täytyy olla suurempi kuin 0.',
	invalidHeight: 'Taulun korkeuden täytyy olla numero.',
	invalidRows: 'Rivien määrän täytyy olla suurempi kuin 0.',
	invalidWidth: 'Taulun leveyden täytyy olla numero.',
	menu: 'Taulun ominaisuudet',
	row: {
		menu: 'Rivi',
		insertBefore: 'Lisää rivi yläpuolelle',
		insertAfter: 'Lisää rivi alapuolelle',
		deleteRow: 'Poista rivit'
	},
	rows: 'Rivit',
	summary: 'Yhteenveto',
	title: 'Taulun ominaisuudet',
	toolbar: 'Taulu',
	widthPc: 'prosenttia',
	widthPx: 'pikseliä',
	widthUnit: 'leveysyksikkö'
} );
/*
Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'table', 'it', {
	border: 'Dimensione bordo',
	caption: 'Intestazione',
	cell: {
		menu: 'Cella',
		insertBefore: 'Inserisci Cella Prima',
		insertAfter: 'Inserisci Cella Dopo',
		deleteCell: 'Elimina celle',
		merge: 'Unisce celle',
		mergeRight: 'Unisci a Destra',
		mergeDown: 'Unisci in Basso',
		splitHorizontal: 'Dividi Cella Orizzontalmente',
		splitVertical: 'Dividi Cella Verticalmente',
		title: 'Proprietà della cella',
		cellType: 'Tipo di cella',
		rowSpan: 'Su più righe',
		colSpan: 'Su più colonne',
		wordWrap: 'Ritorno a capo',
		hAlign: 'Allineamento orizzontale',
		vAlign: 'Allineamento verticale',
		alignBaseline: 'Linea Base',
		bgColor: 'Colore di Sfondo',
		borderColor: 'Colore del Bordo',
		data: 'Dati',
		header: 'Intestazione',
		yes: 'Si',
		no: 'No',
		invalidWidth: 'La larghezza della cella dev\'essere un numero.',
		invalidHeight: 'L\'altezza della cella dev\'essere un numero.',
		invalidRowSpan: 'Il numero di righe dev\'essere un numero intero.',
		invalidColSpan: 'Il numero di colonne dev\'essere un numero intero.',
		chooseColor: 'Scegli'
	},
	cellPad: 'Padding celle',
	cellSpace: 'Spaziatura celle',
	column: {
		menu: 'Colonna',
		insertBefore: 'Inserisci Colonna Prima',
		insertAfter: 'Inserisci Colonna Dopo',
		deleteColumn: 'Elimina colonne'
	},
	columns: 'Colonne',
	deleteTable: 'Cancella Tabella',
	headers: 'Intestazione',
	headersBoth: 'Entrambe',
	headersColumn:


pala 는 분석 업무를 하는 사람들을 위해 만들어졌기 때문에 훨씬 빠릅니다.

[Zeppelin](https://zeppelin.apache.org/) 은 요즘 말하는 노트북(notebook) 인터페이스 입니다. 웹페이지 내에서 쿼리나 코드를 작성하면 인터프리터가 바로 실행하여 결과 데이터를 보여줍니다. 결과는 표로 나타낼 수도 있고, 그래프로 표시할 수도 있습니다. Spark 인터프리터가 있어서 하둡 시스템과의 연동이 강력합니다.

<hr>

# 데이터 엔지니어를 찾습니다

‘빅 데이터’ 라는 말이 화제가 되더니 이제 어느덧 일상적인 용어가 되었습니다. 그러면서 데이터 분석가, 데이터 사이언티스트, 데이터 엔지니어 등의 직업에 관심을 가지는 사람이 많아졌습니다. 리디북스에도 데이터 엔지니어 포지션에 지원하는 사람들이 많고, 어떻게 하면 데이터 엔지니어로 일할 수 있는지 문의하시는 분들도 많습니다. 특히 대학을 갓 졸업한 신입 개발자 분들, 또는 다른 분야에서 일하시다가 이쪽 분야에 새로 눈을 돌리신 분들이 많은 것 같습니다.

우선 말씀드릴 것은, “데이터 엔지니어”는 “데이터 분석가”와는 확실히 다르다는 것입니다. 수많은 데이터 속에서 아무도 발견하지 못했던 어떤 한줄기 인사이트를 멋지게 찾아내는 역할을 기대하며 찾아오시는 분들이 많은데, 그것은 데이터 엔지니어라기보다는 데이터 분석가의 역할입니다. (리디북스는 데이터 분석가 포지션의 채용도 하고 있습니다.)

**데이터 엔지니어는 보다 “엔지니어”, 즉 소프트웨어 개발자에 가깝습니다.** 소프트웨어를 작성하고 다양한 기술적 문제를 해결하는 것이 주 업무입니다


）酸、微寒、无毒。

**主治**

1、脾虚下痢，日夜不止。用野鸡一只，治净，加桔皮、葱、椒等五味，作成馄饨，空心吃下。

2、消渴饮水，小便频数。用野鸡一只，加五味煮汤喝，肉亦可食。

3、心腹胀满。用野鸡一只、茴香（炒）、马芹子（炒）、川椒（炒）、陈皮、生姜吃下。吃鸡的这一天，早上服喜禾散，辰时服此方，得午时服导气枳壳丸。

## 鸽

**释名**鹁鸽、飞奴。

**气味**白鸽肉：咸、平、无毒。鸽屎：辛、温、微毒。

**主治**

白鸽肉：解药毒，治恶疮、疥癣、白癜风等。

屎：（左盘龙）

1、带下排脓。用野鸽屎一两，炒至微焦。白术、麝香各一分，赤芍药、青木香各半两，延胡索（炒赤）一两，柴胡三分，共研为末。每服一钱，空心服，温酒调下，脓排尽后，可服其他药物补养身体。

2、蛔虫寄生。用白鸽屎烧过，研细，水送服适量。

3、项上瘰疬。用鸽屎炒过，研为末。加饭做成丸子，如梧子大。每服三、五十丸，米汤送下。

4、头痒生疮。用白鸽屎五合，加醋煮开三次，捣烂敷涂。一天三次。

## 雀

**释名**瓦雀、宾雀（按：即常见的麻雀）。雀屎：白丁香、青丹、雀苏。

**气味**肉：甘、温、无毒。雀卵：酸、温、无毒。雄雀屎：苦、温、微毒。

**主治**

雀卵：男子阳痿、女子带下、便溺不利。和天雄、菟丝子末为丸，空心服五粒，酒送下。

肉：

1、老人脏腑虚弱。用雀儿五只，治净，炒熟，加酒一俣同煮。过一段时间，再加水二碗、粟米一保、葱白三根，一起煮粥吃。

2、肾冷偏坠（疝气）。用生雀三只，燎毛去肠，


# dr14_t.meter: compute the DR14 value of the given audiofiles
# Copyright (C) 2011  Simone Riva
#
# 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 3 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, see <http://www.gnu.org/licenses/>.

from dr14tmeter.audio_math import *
from dr14tmeter.out_messages import *

import numpy as np

import math
import time

def compute_dr14(Y, Fs, duration=None, Dr_lr=None):

    s = Y.shape

    if len(Y.shape) > 1:
        ch = s[1]
    else:
        ch = 1

    if Fs == 44100:
        delta_fs = 60
    else:
        delta_fs = 0

    dr14_log_debug("compute_dr14: Y: Fs: %d ; ch: %d ; shape: %d " %
                   (Fs, ch, s[0]))
    time_a = time.time()

    block_time = 3
    cut_best_bins = 0.2
    block_samples = block_time * (Fs + delta_fs)

    seg_cnt = int(math.floor(s[0] / block_samples) + 1)

    if seg_cnt < 1:
        dr14_log_debug("compute_dr14: EXIT - too short")
        return (0, -100, -100)

    curr_sam = 0
    rms = np.zeros((seg_cnt, ch))
    peaks = np.zeros((seg_cnt, ch))

    for i in range(seg_cnt - 1):
        rms[i, :] = np.sqrt(2.0 * np.sum(Y[curr_sam:curr_sam + block_samples, :]**2.0, 0) /
                            float(block_samples))
        peaks[i, :] = np.max(
            np.abs(Y[curr_sam:curr_sam + block_samples, :]), 0)
        curr_sam = curr_sam + block_samples

    i = seg_cnt - 1

    if curr_sam < s[0]:
        rms[i, :] = dr_rms(Y[curr_sam:s[0] - 1, :])
        peaks[i, :] = np.max(np.abs(Y[curr_sam:s[0] - 1, :]), 0)

    peaks = np.sort(peaks, 0)
    rms = np.sort(rms, 0)

    n_blk = int(math.floor(seg_cnt * cut_best_bins))
    if n_blk == 0:
        n_blk = 1

    r = np.arange(seg_cnt - n_blk, seg_cnt)

    rms_sum = np.sum(rms[r, :]**2, 0)

    ch_dr14 = -20.0 * np.log10(np.sqrt(rms_sum / n_blk)
                               * 1.0 / peaks[seg_cnt - 2, :])

    err_i = np.logical_or(rms_sum < audio_min(),
                          np.abs(ch_dr14) > max_dynamic(24))
    ch_dr14[err_i] = 0.0

    dr14 = round(np.mean(ch_dr14))

    db_peak = decibel_u(np.max(peaks), 1.0)

    #y_rms = np.sqrt(np.sum(((np.sum(Y, 1) / 2)**2)) / Y.shape[0])

    y_rms = dr_rms(Y)
    y_rms = np.mean(y_rms)

    db_rms = decibel_u(y_rms, 1.0)

    if duration != None:
        duration.set_samples(s[0], Fs)

    if Dr_lr != None:
        Dr_lr = ch_dr14

    time_b = time.time()
    dr14_log_info("compute_dr14: Clock: %2.8f" % (time_b - time_a))

    return (dr14, db_peak, db_rms)


伊尔萨·枪酒谈一谈。"}},
[11498] = {"学习飞翔", nil, {"与影月谷影月村的欧尔洛克谈一谈。"}},
[11499] = {"悬赏：凯尔萨斯王子的徽记之戒", nil, {"商人扎雷姆要求你夺得凯尔萨斯王子的徽记之戒。将戒指带回沙塔斯城的贫民窟交给他，就能领取奖赏。\n\n该任务只能在英雄模式的魔导师平台完成。"}},
[11500] = {"悬赏：痛苦妖女", nil, {"虚空猎手玛哈杜恩要求你杀死4名痛苦妖女。完成任务后返回沙塔斯城的贫民窟，向他领取奖赏。"}},
[11501] = {"东边来的消息", nil, {"与西部卫戍要塞的亚当斯上尉谈一谈。"}},
[11502] = {"保卫哈兰", nil, {"在哈兰击败10名敌对方玩家，然后向塔拉的拉库尔复命。"}},
[11503] = {"新仇旧怨", nil, {"在哈兰击败10名敌对方玩家，然后向加拉达尔的卡尔托格复命。"}},
[11504] = {"亡者复生！", nil, {"上古升降梯的奥弗斯希望你去寻找芬基尔的线索、洛丁的线索、伊斯多弗的线索和温丹的线索。"}},
[11505] = {"奥金顿的幽魂", nil, {"帮助联盟占据白骨荒野上的一座灵魂之塔。"}},
[11506] = {"奥金顿的幽魂", nil, {"帮助部落占据白骨荒野上的一座灵魂之塔。"}},
[11507] = {"卡玛古的长者阿图伊克", nil, {"嚎风峡湾的奥弗斯希望你能把他的包裹交给卡玛古的长者阿图伊克。"}},
[11508] = {"格雷兹克斯·斯宾德斯纳普", nil, {"与格雷兹克斯·斯宾德斯纳普谈一谈。"}},
[11509] = {"“银月”哈瑞", nil, {"与无赖港的“银月”哈瑞谈论失踪的维库人圣物。"}},
[11510] = {"斯库德", nil, {"无赖港的“银月”哈瑞希望你能从逆戟鲸斯库德那里夺回他的辛多雷占卜水晶。"}},
[11511] = {"风暴愤怒法


T__43               = 44
	fhirpathParserT__44               = 45
	fhirpathParserT__45               = 46
	fhirpathParserT__46               = 47
	fhirpathParserT__47               = 48
	fhirpathParserT__48               = 49
	fhirpathParserT__49               = 50
	fhirpathParserT__50               = 51
	fhirpathParserT__51               = 52
	fhirpathParserT__52               = 53
	fhirpathParserT__53               = 54
	fhirpathParserDATE                = 55
	fhirpathParserDATETIME            = 56
	fhirpathParserTIME                = 57
	fhirpathParserIDENTIFIER          = 58
	fhirpathParserDELIMITEDIDENTIFIER = 59
	fhirpathParserSTRING              = 60
	fhirpathParserNUMBER              = 61
	fhirpathParserWS                  = 62
	fhirpathParserCOMMENT             = 63
	fhirpathParserLINE_COMMENT        = 64
)

// fhirpathParser rules.
const (
	fhirpathParserRULE_prog                    = 0
	fhirpathParserRULE_expression              = 1
	fhirpathParserRULE_term                    = 2
	fhirpathParserRULE_literal                 = 3
	fhirpathParserRULE_externalConstant        = 4
	fhirpathParserRULE_invocation              = 5
	fhirpathParserRULE_function                = 6
	fhirpathParserRULE_paramList               = 7
	fhirpathParserRULE_quantity                = 8
	fhirpathParserRULE_unit                    = 9
	fhirpathParserRULE_dateTimePrecision       = 10
	fhirpathParserRULE_pluralDateTimePrecision = 11
	fhirpathParserRULE_typeSpecifier           = 12
	fhirpathParserRULE_qualifiedIdentifier     = 13
	fhirpathParserRULE_identifier              = 14
)

// IProgContext is an interface to support dynamic dispatch.
type IProgContext interface {
	antlr.ParserRuleContext

	// GetParser returns the parser.
	GetParser() antlr.Parser

	// Getter signatures
	Expression() IExpressionContext
	EOF() antlr.TerminalNode

	// IsProgContext differentiates from other interfaces.
	IsProgContext()
}

type ProgContext struct {
	antlr.BaseParserRuleContext
	parser antlr.Parser
}

func NewEmptyProgContext() *ProgContext {
	var p = new(ProgContext)
	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
	p.RuleIndex = fhirpathParserRULE_prog
	return p
}

func InitEmptyProgContext(p *ProgContext) {
	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
	p.RuleIndex = fhirpathParserRULE_prog
}

func (*ProgContext) IsProgContext() {}

func NewProgContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ProgContext {
	var p = new(ProgContext)

	antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)

	p.parser = parser
	p.RuleIndex = fhirpathParserRULE_prog

	return p
}

func (s *ProgContext) GetParser() antlr.Parser { return s.parser }

func (s *ProgContext) Expression() IExpressionContext {
	var t antlr.RuleContext
	for _, ctx := range s.GetChildren() {
		if _, ok := ctx.(IExpressionContext); ok {
			t = ctx.(antlr.RuleContext)
			break
		}
	}

	if t == nil {
		return nil
	}

	return t.(IExpressionContext)
}

func (s *ProgContext) EOF() antlr.TerminalNode {
	return s.GetToken(fhirpathParserEOF, 0)
}

func (s *ProgContext) GetRule


* syncMotorForm = new SyncMachineForm(parent, this);
	syncMotorForm->SetTitle(_("Synchronous Condenser"));
	if (syncMotorForm->ShowModal() == wxID_OK) {
		syncMotorForm->Destroy();
		return true;
	}

	syncMotorForm->Destroy();
	return false;
}

SyncMotorElectricalData SyncMotor::GetPUElectricalData(double systemPowerBase)
{
	SyncMotorElectricalData data = m_electricalData;
	double machineBasePower = 1.0;
	if (data.useMachineBase) { machineBasePower = GetValueFromUnit(data.nominalPower, data.nominalPowerUnit); }

	// Active power
	double activePower = GetValueFromUnit(data.activePower, data.activePowerUnit);
	if (!m_online) activePower = 0.0;
	if (data.activePowerUnit == ElectricalUnit::UNIT_PU) {
		if (data.useMachineBase) data.activePower = (activePower * machineBasePower) / systemPowerBase;
	}
	else {
		data.activePower = activePower / systemPowerBase;
	}
	data.activePowerUnit = ElectricalUnit::UNIT_PU;

	// Reactive power
	double reactivePower = GetValueFromUnit(data.reactivePower, data.reactivePowerUnit);
	if (!m_online) reactivePower = 0.0;
	if (data.reactivePowerUnit == ElectricalUnit::UNIT_PU) {
		if (data.useMachineBase) data.reactivePower = (reactivePower * machineBasePower) / systemPowerBase;
	}
	else {
		data.reactivePower = reactivePower / systemPowerBase;
	}
	data.reactivePowerUnit = ElectricalUnit::UNIT_PU;

	// Max reactive power
	double maxReactive = GetValueFromUnit(data.maxReactive, data.maxReactiveUnit);
	if (data.maxReactiveUnit == ElectricalUnit::UNIT_PU) {
		if (data.useMachineBase) data.maxReactive = (maxReactive * machineBasePower) / systemPowerBase;
	}
	else {
		data.maxReactive = maxReactive / systemPowerBase;
	}
	data.maxReactiveUnit = ElectricalUnit::UNIT_PU;

	// Min reactive power
	double minReactive = GetValueFromUnit(data.minReactive, data.minReactiveUnit);
	if (data.minReactiveUnit == ElectricalUnit::UNIT_PU) {
		if (data.useMachineBase) data.minReactive = (minReactive * machineBasePower) / systemPowerBase;
	}
	else {
		data.minReactive = minReactive / systemPowerBase;
	}
	data.minReactiveUnit = ElectricalUnit::UNIT_PU;

	double baseVoltage = GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit);
	double systemBaseImpedance = (baseVoltage * baseVoltage) / systemPowerBase;
	double machineBaseImpedance = (baseVoltage * baseVoltage) / machineBasePower;

	// Fault data
	if (data.useMachineBase) {
		data.positiveResistance = (data.positiveResistance * machineBaseImpedance) / systemBaseImpedance;
		data.positiveReactance = (data.positiveReactance * machineBaseImpedance) / systemBaseImpedance;
		data.negativeResistance = (data.negativeResistance * machineBaseImpedance) / systemBaseImpedance;
		data.negativeReactance = (data.negativeReactance * machineBaseImpedance) / systemBaseImpedance;
		data.zeroResistance = (data.zeroResistance * machineBaseImpedance) / systemBaseImpedance;
		data.zeroReactance = (data.zeroReactance * machineBaseImpedance) / systemBaseImpedance;
		data.groundResistance = (da


		local Array = symmath.Array
		local TensorRef = require 'symmath.tensor.Ref'
		local Variable = symmath.Variable

		local t = expr[1]
		local indexes = table.sub(expr,2)
		local separateVarianceSymbols
		local indexStrs = indexes:mapi(function(index)
			local s = self:apply(index)
			if strlen(s[1]:sub(2)) > 1 then
				separateVarianceSymbols = true
			end
			return s
		end)

		local s = self:apply(t)
		if not (Variable:isa(t) or Array:isa(t) or TensorRef:isa(t)) then
			wrap(s, nil, par)
		end

		--[[ trusting the TensorIndex for proper generation
		for _,index in ipairs(indexes) do
			s = self:combine(s, self:apply(index))
		end
		--]]
		-- [[ compacting a few symbols
		local lastLower
		for i,index in ipairs(indexes) do
			local is = indexStrs[i]
			local lower = index.lower or false
			if not separateVarianceSymbols
			and i ~= 1
			and lower == lastLower
			then
				is[1] = is[1]:sub(2)
			end
			lastLower = lower
			-- TODO combine valign to top or bottom
			s = self:combine(s, is)
		end
		--]]

		return s
	end,
}:setmetatable(nil)

-- MultiLine passes around tables of strings, but sometimes falls back on SingleLine.
-- In that case just wrap it in {} so MultiLine:apply() will always return a table-of-strings
function MultiLine:apply(...)
	local result = table.pack(MultiLine.super.apply(self, ...))
	if type(result[1]) == 'string' then result[1] = table{result[1]} end
	return result:unpack()
end

-- while most Export.__call methods deal in strings,
--  MultiLine passes around an array of strings (per-newline)
-- so we recombine them into one string here at the end
function MultiLine:__call(...)
	local result = MultiLine.super.__call(self, ...)
	if type(result) == 'string' then return '\n'..result end
	return result:concat('\n')
end

return MultiLine()	-- singleton


ction/simple-line-icons
class SimpleLineIcons {
  static const String action_redo =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024" preserveAspectRatio="xMidYMid meet" viewBox="0 0 1024 1024"><path fill="currentColor" d="M33.935 942.336c.336 0 .72 0 1.088-.031 16.193-.529 26.4-13.088 27.777-29.216C63.888 901.217 95.775 614 544.048 614.305l1.008 183.664c0 12.368 7.12 23.664 18.335 28.944 11.088 5.312 24.432 3.68 33.968-4.224l414.976-343.776a31.864 31.864 0 0011.681-24.784c-.032-9.6-4.336-18.687-11.776-24.752L597.28 88.817c-9.569-7.807-22.785-9.311-33.937-4.095-11.152 5.311-18.288 16.56-18.288 28.91l-1.008 179.633c-185.952 5.887-329.968 65.712-423.328 174.96C-31.217 646 2.69 904.385 4.287 915.137c2.368 15.68 13.872 27.199 29.649 27.199zm543.121-392.527h-.063c-320.208.192-442.591 108.32-512.464 203.824 10.224-76.496 40.064-168.72 105.008-244.031 86.336-100.096 225.44-152.848 407.536-152.848 17.68 0 32-14.32 32-32V180.978l332.433 273.344-332.448 275.904v-148.4a31.953 31.953 0 00-9.409-22.656 31.96 31.96 0 00-22.592-9.36z"/></svg>';
  static const String action_undo =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024" preserveAspectRatio="xMidYMid meet" viewBox="0 0 1024 1024"><path fill="currentColor" d="M990.064 942.336c-.336 0-.72 0-1.088-.031-16.192-.529-26.4-13.088-27.776-29.216-1.088-11.872-33.968-299.088-482.256-298.784v183.664c0 12.368-7.12 23.664-18.336 28.944-11.088 5.312-24.432 3.68-33.968-4.224L11.664 478.913a31.864 31.864 0 01-11.68-24.784c.032-9.6 4.335-18.687 11.776-24.752l414.96-340.56c9.568-7.807 22.784-9.311 33.936-4.095 11.153 5.311 18.288 16.56 18.288 28.91v179.633c185.968 5.904 330.992 65.712 424.336 174.976 151.936 177.776 118.031 436.16 116.432 446.912-2.368 15.664-13.872 27.183-29.648 27.183zm-543.12-392.527.063-.001C767.23 550 889.599 658.128 959.47 753.617c-10.224-76.496-40.064-168.72-105.008-244.031-86.336-100.096-225.44-152.848-407.535-152.848-17.68 0-32-14.32-32-32V180.962L82.496 454.322l332.432 275.904v-148.4a31.953 31.953 0 019.408-22.656 32.02 32.02 0 0122.608-9.36z"/></svg>';
  static const String anchor =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1024" height="1024" preserveAspectRatio="xMidYMid meet" viewBox="0 0 1024 1024"><path


io,
    bool enableLogInterceptor = true,
    List<Interceptor>? interceptors,
    int maxConcurrency = 5,
  }) : this(
          accessKeyIdProvider: () => accessKeyId,
          accessKeySecretProvider: () => accessKeySecret,
          securityTokenProvider:
              securityToken != null ? () => securityToken : null,
          bucketName: bucketName,
          endpoint: endpoint,
          region: region,
          cname: cname,
          dio: dio,
          enableLogInterceptor: enableLogInterceptor,
          interceptors: interceptors,
          maxConcurrency: maxConcurrency,
        );

  /// 从 JSON 数据创建 OSSConfig 实例
  ///
  /// 这在从配置文件或远程服务加载配置时非常有用。
  /// 注意：此方法创建的是静态配置，不支持动态刷新。
  ///
  /// 参数：
  /// - [json] 包含配置数据的 Map
  ///
  /// 返回一个新的 [OSSConfig] 实例
  factory OSSConfig.fromJson(Map<String, dynamic> json) {
    return OSSConfig.static(
      accessKeyId: json['accessKeyId'] as String,
      accessKeySecret: json['accessKeySecret'] as String,
      bucketName: json['bucketName'] as String,
      endpoint: json['endpoint'] as String,
      region: json['region'] as String,
      securityToken: json['securityToken'] as String?,
      cname: json['cname'] as bool? ?? false,
      enableLogInterceptor: json['enableLogInterceptor'] as bool? ?? true,
      maxConcurrency: json['maxConcurrency'] as int? ?? 5,
    );
  }

  /// 访问密钥ID获取函数
  ///
  /// 每次需要访问密钥ID时都会调用此函数，支持动态获取最新值
  final String Function() accessKeyIdProvider;

  /// 访问密钥Secret获取函数
  ///
  /// 每次需要访问密钥Secret时都会调用此函数，支持动态获取最新值
  final String Function() accessKeySecretProvider;

  /// 安全令牌获取函数（可选，用于STS）
  ///
  /// 每次需要安全令牌时都会调用此函数，支持动态获取最新值
  /// 如果为null，表示不使用STS临时凭证
  final String? Function()? securityTokenProvider;

  /// 当前有效的访问密钥ID
  ///
  /// 通过调用accessKeyIdProvider获取最新值
  String get accessKeyId => accessKeyIdProvider();

  /// 当前有效的访问密钥Secret
  ///
  /


_io(less_than_eight_pm, 7, 1);
        test_machine_run_io(less_than_eight_pm, 8, 0);
        test_machine_run_io(less_than_eight_pm, 9, 0);

        let jump_test_zero_if_zero_pm = "3,12,6,12,15,1,13,14,13,4,13,99,-1,0,1,9";
        test_machine_run_io(jump_test_zero_if_zero_pm, 0, 0);
        test_machine_run_io(jump_test_zero_if_zero_pm, 9, 1);

        let jump_test_zero_if_zero_im = "3,3,1105,-1,9,1101,0,0,12,4,12,99,1";
        test_machine_run_io(jump_test_zero_if_zero_im, 0, 0);
        test_machine_run_io(jump_test_zero_if_zero_im, 9, 1);

        let complex_cmp_eight = "3,21,1008,21,8,20,1005,20,22,107,8,21,20,1006,20,31, \
                                 1106,0,36,98,0,0,1002,21,125,20,4,20,1105,1,46,104, \
                                 999,1105,1,46,1101,1000,1,20,4,20,1105,1,46,98,99";
        test_machine_run_io(complex_cmp_eight, 7, 999);
        test_machine_run_io(complex_cmp_eight, 8, 1000);
        test_machine_run_io(complex_cmp_eight, 9, 1001);

        let quine = Program::from("109,1,204,-1,1001,100,1,100,1008,100,16,101,1006,101,0,99");
        let output = Machine::new(&quine).run_as_iter().collect();
        assert_eq!(Program(output), quine);

        test_machine_run_output("1102,34915192,34915192,7,4,7,99,0", 1_219_070_632_396_864);
        test_machine_run_output("104,1125899906842624,99", 1_125_899_906_842_624);
    }
}
use std::collections::HashMap;
use utils;

// abcdef contains no letters that appear exactly two or three times.
// bababc contains two a and three b, so it counts for both.
// abbcde contains two b, but no letter appears exactly three times.
// abcccd contains three c, but no letter appears exactly two times.
// aabcdd contains two a and two d, but it only counts once.
// abcdee contains two e.
// ababab contains three a and three b, but it only counts once.

// Todo: should return a tuple (repeat_2, repeat_3)
fn repeated_character(s: &str, c: &str, max_repeats: i32) -> bool {
  let mut has_repeat = false;
  let mut count = 0;
  for curr in s.chars() {
    if curr.to_string() == c {
      count += 1;
    }
    if count == max_repeats {
      has_repeat = true;
    } else {
      has_repeat = false;
    }
  }
  has_repeat
}

#[test]
fn will_check_for_repetitions_of_a_character() {
  let repeat_2 = vec![
    ("abcdef", "a", false),
    ("bababc", "b", true),
    ("abbcde", "b", true),
    ("aabcdd", "d", true),
  ];
  let repeat_3 = vec![
    ("abcdef", "a", false),
    ("bababc", "b", true),
    ("abbcde", "b", false),
    ("aabcdd", "d", false),
  ];

  for i in repeat_2 {
    let (q, c, a) = i;
    let res = repeated_character(q, c, 2);
    assert_eq!(res, a);
  }

  for i in repeat_3 {
    let (q, c, a) = i;
    let res = repeated_character(q, c, 3);
    assert_eq!(res, a);
  }
}

fn calculate_checksum(lines: &str) -> i32 {
  let mut repeat_2 = 0;
  let mut repeat_3 = 0;


XTERNAL MACROS =======================================================

//===== INCLUDES ==============================================================

//----------
#include "definition/def.h"
#include "toolbox/Exception.h"
#include "toolbox/TorchEx.hpp"
#include "smpl/LinearBlendSkinning.h"
//----------

//===== EXTERNAL FORWARD DECLARATIONS =========================================

//===== NAMESPACES ============================================================

namespace smpl {

//===== INTERNAL MACROS =======================================================

//===== INTERNAL FORWARD DECLARATIONS =========================================

//===== CLASS IMPLEMENTATIONS =================================================

/**LinearBlendSkinning
 *
 * Brief
 * ----------
 *
 *      Default constructor.
 *
 * Arguments
 * ----------
 *
 *
 * Return
 * ----------
 *
 *
 */
LinearBlendSkinning::LinearBlendSkinning() noexcept(true) :
    m__device(torch::kCPU),
    m__restShape(),
    m__transformation(),
    m__weights(),
    m__posedVert()
{
}

/**LinearBlendSkinning (overload)
 *
 * Brief
 * ----------
 *
 *      Constructor to initialize weights for linear blend skinning.
 *
 * Arguments
 * ----------
 *
 *      @weights: - Tensor -
 *          Weights for linear blend skinning, (6890, 24).
 *
 *      @device: - Device -
 *          Torch device to run the module, CPUs or GPUs.
 *
 * Return
 * ----------
 *
 *
 */
LinearBlendSkinning::LinearBlendSkinning(torch::Tensor &weights,
    torch::Device &device)
    noexcept(false) :
    m__device(torch::kCPU)
{
    if (device.has_index()) {
        m__device = device;
    }
    else {
        throw smpl_error("LinearBlendSkinning",
            "Failed to fetch device index!");
    }

    if (weights.sizes() ==
        torch::IntArrayRef({VERTEX_NUM, JOINT_NUM})) {
        m__weights = weights.clone().to(m__device);
    }
    else {
        throw smpl_error("LinearBlendSkinning",
            "Failed to initialize linear blend weights!");
    }
}

/**LinearBlendSkinning (overload)
 *
 * Brief
 * ----------
 *
 *      Copy constructor.
 *
 * Arguments
 * ----------
 *
 *      @linearBlendSkinning: - const LinearBlendSkinning & -
 *          The <LinearBlendSkinning> instantiation to copy with.
 *
 * Return
 * ----------
 *
 *
 */
LinearBlendSkinning::LinearBlendSkinning(
    const LinearBlendSkinning &linearBlendSkinning) noexcept(false) :
    m__device(torch::kCPU),
    m__posedVert()
{
    try {
        *this = linearBlendSkinning;
    }
    catch(std::exception &e) {
        throw;
    }
}

/**~LinearBlendSkinning
 *
 * Brief
 * ----------
 *
 *      Destructor.
 *
 * Arguments
 * ----------
 *
 *
 * Return
 * ----------
 *
 *
 */
LinearBlendSkinning::~LinearBlendSkinning() noexcept(true)
{
}

/**operator=
 *
 * Brief
 * ----------
 *
 *      Assignment is used to copy a <LinearBlendSkinning> instantiation.
 *
 * Arguments
 * ----------
 *
 *      @linearBlendSkinning: - Tensor -
 *          The <LinearBlendSkinning> instantiation to copy with.
 *
 * Return
 * ----------
 *
 *      @*this: - LinearBlendSkinning & -
 *          Current instantiation.
 *
 */
LinearBlendSkinning &LinearBlendSkinning::operator=(
    const LinearBlendSkinning &linearBlendSkinning) noexcept(false)
{
    //
    // hard copy
    //
    if (linearBlendSkinning.m__device.has_index()) {
        m__device = linearBlendSkinning.m__device;
    }
    else {
        throw smpl_error("LinearBlendSkinning",
            "Failed to fetch device index!");
    }

    if (linearBlendSkinning.m__restShape.sizes() ==
        torch::IntArrayRef({BATCH_SIZE, VERTEX_NUM, 3})) {
        m__restShape =


,
      mapping = cmp.mapping.preset.insert({
        ["<C-k>"] = cmp.mapping.select_prev_item(), -- previous suggestion
        ["<C-j>"] = cmp.mapping.select_next_item(), -- next suggestion
        ["<C-b>"] = cmp.mapping.scroll_docs(-4),
        ["<C-f>"] = cmp.mapping.scroll_docs(4),
        ["<C-Space>"] = cmp.mapping.complete(), -- show completion suggestions
        ["<C-e>"] = cmp.mapping.abort(), -- close completion window
        ["<CR>"] = cmp.mapping.confirm({ select = false }),
      }),
      -- sources for autocompletion
      sources = cmp.config.sources({
        { name = "nvim_lsp"},
        { name = "luasnip" }, -- snippets
        { name = "buffer" }, -- text within current buffer
        { name = "path" }, -- file system paths
      }),

      -- configure lspkind for vs-code like pictograms in completion menu
      formatting = {
        format = lspkind.cmp_format({
          maxwidth = 50,
          ellipsis_char = "...",
        }),
      },
    })
  end,
}


o-madeira-hulha-biomassa-biocombustiveis-e-energia-nuclear" class="q-link q-hidden-crumb">
          Petróleo, Gás Natural e Carvão, Madeira, Hulha, Biomassa, Biocombustíveis e Energia Nuclear                      ,

          Soluções: características, tipos de concentração, diluição, mistura, titulação e soluções coloidais.

        ( assuntos)

  Ano: 2022

    Banca:
    INEP

    Órgão:
    ENEM

              Prova:
        INEP - 2022 - ENEM - Exame Nacional do Ensino Médio - Segundo Dia - Edital 2022        |

    Q1985873
    Química

        <div class="q-question-enunciation" role="text" aria-label="    O etanol é um combustível produzido a partir da fermentação da sacarose presente no caldo de cana-de-açúcar. Um dos fatores que afeta a produção desse álcool é o grau de deterioração da sacarose, que se inicia após o corte, por causa da ação  de microrganismos. Foram analisadas cinco amostras de diferentes tipos de cana-de-açúcar e cada uma recebeu um código de identificação. No quadro são apresentados os dados de concentração de sacarose e de microrganismos presentes nessas amostras.   Pretende-se escolher o tipo de cana-de-açúcar que conterá o maior teor de sacarose 10 horas após o corte e que, consequentemente, produzirá a maior quantidade de etanol por fermentação. Considere que existe uma redução de aproximadamente 50% da concentração de sacarose nesse tempo, para cada 1,0mgL-1 de microrganismos presentes na cana-de-açúcar.Disponível em: www.inovacao.unicamp.br. Acesso em: 11 ago. 2012 (adaptado) Qual tipo de cana-de-açúcar deve ser escolhido? ">

    O etanol é um combustível produzido a partir da fermentação da sacarose presente no caldo de cana-de-açúcar. Um dos fatores que afeta a produção desse álcool é o grau de deterioração da sacarose, que se inicia após o corte, por causa da ação  de microrganismos. Foram analisadas cinco amostras de diferentes tipos d


	child-fill-x:true;
	child-fill-y:true;
}

.parambox
{
	margin:0px;
	child-layout:vertical;
	child-spacing:1px;
	child-fill-x:true;
}

#parambox button
{
	height:15px;
}

#parambox label
{
	height: 12px;
}

#parambox trackbar
{
	height: 13px;
}

#techdatabox
{
	child-layout:vertical;
	child-spacing:1px;
	child-fill-x:true;
	height:31px;
}

.techdatabox
{
	margin:auto;
	child-layout:none;
	height:15px;
}

.techdatabox label
{
	left:0px;
	top:1px;
	width:52px;
	height:15px;
}

.techdatabox dropdown
{
	left:52px;
	right:0px;
	top:0px;
}

.techdatabox button
{
	left:52px;
	right:0px;
	top:0px;
}

.newdelbox
{
	margin:auto;
	height: 15px;
	child-layout: horizontal;
	child-fill-x: true;
	child-fill-y: true;
	child-spacing: 1px;
}

#matedbox
{
	width:140px;
}

#globaltechpool
{
	width:140px;
}

#techpasslist
{
	width:140px;
}

#passlist
{
	height:100%-32px;
}

#matedbox
{
	width:15%;
}

#globaltechpool
{
	width:15%;
}#tfhbox
{
    margin: 1px;
    bottom: auto;
    height: 160px;
    child-layout: horizontal;
    child-fill-x: true;
    child-fill-y: true;
    child-spacing: 1;
    border: 1px;
    padding: 1px;
}

    #tfhbox box
    {
        child-layout: vertical;
        child-spacing: 1;
        child-fill-x: true;
    }

    #tfhbox label
    {
        height: 13px;
    }

    #tfhbox trackbar
    {
        height: 13px;
    }

.buttonbox
{
    height: 16px;
    child-layout: horizontal;
    child-spacing: 1;
    child-fill-y: true;
}

#filterlist
{
    top: 31px;
    bottom: 0px;
}

#filtertype
{
    height: 50px;
}

#filterrandom
{
    height: 13px;
}

#paramlist
{
    top: 31px;
    bottom: 0px;
}

#paramtype
{
    height: 62px;
}

#filtercode
{
    margin: 1px;
    top: 162px;
	bottom: 100px;
    font: ProFont;
    text-transform:none;
    border: 1px;
}

#compileroutput
{
	margin:1px;
	right:50%;
	top: 100%-99px;
	border:1px;
        font: ProFont;
	text-transform:none;
}

#minioutput
{
	margin:1px;
	top: 100%-99px;
	left:50%;
	border:1px;
	font: ProFont;
	text-transform:none;
}

#paramdatabox
{
	border: 0px;
	height: 100%-77px;
	child-layout: none;
}

#paramdatabox box
{
	visibility: hidden;
	margin:


#!/usr/bin/env python
from vtkmodules.vtkFiltersCore import vtkGlyph2D
from vtkmodules.vtkFiltersSources import (
    vtkGlyphSource2D,
    vtkSphereSource,
)
from vtkmodules.vtkRenderingCore import (
    vtkActor2D,
    vtkPolyDataMapper2D,
    vtkRenderWindow,
    vtkRenderWindowInteractor,
    vtkRenderer,
    vtkTransformCoordinateSystems,
)
import vtkmodules.vtkInteractionStyle
import vtkmodules.vtkRenderingFreeType
import vtkmodules.vtkRenderingOpenGL2
from vtkmodules.util.misc import vtkGetDataRoot
VTK_DATA_ROOT = vtkGetDataRoot()

# Create the RenderWindow, Renderer and both Actors
#
ren1 = vtkRenderer()
renWin = vtkRenderWindow()
renWin.SetMultiSamples(0)
renWin.AddRenderer(ren1)
iren = vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)

# pipeline stuff
#
sphere = vtkSphereSource()
sphere.SetPhiResolution(10)
sphere.SetThetaResolution(20)

xform = vtkTransformCoordinateSystems()
xform.SetInputConnection(sphere.GetOutputPort())
xform.SetInputCoordinateSystemToWorld()
xform.SetOutputCoordinateSystemToDisplay()
xform.SetViewport(ren1)

gs = vtkGlyphSource2D()
gs.SetGlyphTypeToCircle()
gs.SetScale(20)
gs.FilledOff()
gs.CrossOn()
gs.Update()

# Create a table of glyphs
glypher = vtkGlyph2D()
glypher.SetInputConnection(xform.GetOutputPort())
glypher.SetSourceData(0, gs.GetOutput())
glypher.SetScaleModeToDataScalingOff()

mapper = vtkPolyDataMapper2D()
mapper.SetInputConnection(glypher.GetOutputPort())

glyphActor = vtkActor2D()
glyphActor.SetMapper(mapper)

# Add the actors to the renderer, set the background and size
#
ren1.AddActor(glyphActor)
ren1.SetBackground(0, 0, 0)

renWin.SetSize(300, 300)

iren.Initialize()
renWin.Render()

# render the image
#iren.Start()


                  0o664
                    })
                    .large_file(content.len() >= 4294967000); // 4 GiB
                    //.last_modified_time(...) TODO: DateTime of last commit to this file

                writer.start_file(format!("{}", path.display()), options)?;
                writer.write_all(&content[..])?;
            }
            EntryMode::Link | EntryMode::Commit => { /* TODO: implement symlinks and submodules */ }
        }
    }

    Ok(())
}
<reponame>LPGhatguy/keybee<gh_stars>1-10
#![allow(missing_docs)]

#[macro_use]
mod macros;

#[cfg(feature = "winit")]
use winit::event::MouseButton as WinitMouseButton;

wrapper_enum! {
    Button {
        Keyboard(KeyboardKey, keyboard),
        Mouse(MouseButton, mouse),
        Gamepad(GamepadButton, gamepad),
    }
}

wrapper_enum! {
    Axis1d {
        Mouse(MouseAxis1d, mouse),
        Gamepad(GamepadAxis1d, gamepad),
    }
}

wrapper_enum! {
    Axis2d {
        Mouse(MouseAxis2d, mouse),
        Gamepad(GamepadAxis2d, gamepad),
    }
}

wrapper_enum! {
    Input {
        Keyboard(KeyboardKey, keyboard),
        Mouse(Mouse, mouse),
        Gamepad(Gamepad, gamepad),
    }
}

keyboard! {
    A(a),
    B(b),
    C(c),
    D(d),
    E(e),
    F(f),
    G(g),
    H(h),
    I(i),
    J(j),
    K(k),
    L(l),
    M(m),
    N(n),
    O(o),
    P(p),
    Q(q),
    R(r),
    S(s),
    T(t),
    U(u),
    V(v),
    W(w),
    X(x),
    Y(y),
    Z(z),

    Zero(zero),
    One(one),
    Two(two),
    Three(three),
    Four(four),
    Five(five),
    Six(six),
    Seven(seven),
    Eight(eight),
    Nine(nine),

    F1(f1),
    F2(f2),
    F3(f3),
    F4(f4),
    F5(f5),
    F6(f6),
    F7(f7),
    F8(f8),
    F9(f9),
    F10(f10),
    F11(f11),
    F12(f12),
    F13(f13),
    F14(f14),
    F15(f15),
    F16(f16),
    F17(f17),
    F18(f18),
    F19(f19),
    F20(f20),
    F21(f21),
    F22(f22),
    F23(f23),
    F24(f24),

    Return(return),

    Up(up),
    Down(down),
    Left(left),
    Right(right),

    Space(space),
    LShift(leftshift),
    RShift(rightshift),
    LControl(leftctrl),
    RControl(rightctrl),
    LAlt(leftalt),
    RAlt(rightalt),
    Escape(escape),
}

keyboard_winit! {
    A => A,
    B => B,
    C => C,
    D => D,
    E => E,
    F => F,
    G => G,
    H => H,
    I => I,
    J => J,
    K => K,
    L => L,
    M => M,
    N => N,
    O => O,
    P => P,
    Q => Q,
    R => R,
    S => S,
    T => T,
    U => U,
    V => V,
    W => W,
    X => X,
    Y => Y,
    Z => Z,

    Zero => Key0,
    One => Key1,
    Two => Key2,
    Three => Key3,
    Four => Key4,
    Five => Key5,
    Six => Key6,
    Seven => Key7,
    Eight => Key8,
    Nine => Key9,

    F1 => F1,
    F2 => F2,
    F3 => F3,
    F


rror opening connection to " + host);
			e.printStackTrace();
		}

    }

    private void showPeer(HttpsURLConnection con) throws SSLPeerUnverifiedException {
    		System.out.println("Connected to URL " + con.getURL());
    		System.out.println("Using cipher suite " + con.getCipherSuite());
    		System.out.println("Last modified " + con.getIfModifiedSince());
    		Certificate[] certs = con.getServerCertificates();
    		System.out.println("Peer certificate : " + certs[0].toString());

    		System.out.println("Peer principal name : " + con.getPeerPrincipal().getName());
    }

    public static void main(String[] args) {
        WolfSSL.loadLibrary();
        Security.addProvider(new WolfSSLProvider());

        URLClient client = new URLClient();
        try {
            client.run(args);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private void printUsage() {
        System.out.println("Java wolfJSSE example client usage:");
        System.out.println("-?\t\tHelp, print this usage");
        System.out.println("-h <host>\tHost to connect to, default 127.0.0.1");
        System.out.println("-p <num>\tPort to connect to, default 11111");
        System.out.println("-v <num>\tSSL version [0-4], SSLv3(0) - " +
                           "TLS1.3(4)), default 3 : use 'd' for downgrade");
        System.out.println("-l <str>\tComma seperated cipher list");
        System.out.println("-e\t\tGet all supported cipher suites");
        System.out.println("-getp\t\tGet enabled protocols");
        System.out.println("-setp <protocols> \tSet enabled protocols " +
                           "e.g \"TLSv1.1 TLSv1.2\"");
        System.out.println("-c <file>:<password>\tCertificate/key JKS,\t\tdefault " +
                "../provider/rsa.jks:wolfSSL test");
        System.out.println("-A <file>:<password>\tCertificate/key CA JKS file,\tdefault " +
                "../provider/cacerts.jks:wolfSSL test");
        System.exit(1);
    }
}

/*
 *       ____ _  _ ____ ___ ____ _  _ ____ ____ ____ ____ ___ _ _  _ ____
 *       |    |  | [__   |  |  | |\/| |    |__/ |__| |___  |  | |\ | | __
 *       |___ |__| ___]  |  |__| |  | |___ |  \ |  | |     |  | | \| |__]
 *
 *       CustomCrafting Recipe creation and management tool for Minecraft
 *                      Copyright (C) 2021  WolfyScript
 *
 *     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 3 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, see <https://www.gnu.org/licenses/>.
 */

package me.wolfyscript.customcrafting.listeners;

import com.wolfyscript.utilities.bukkit.items.CustomItemBlockData;
import me.wolfyscript.customcrafting.configs.customitem.EliteCraftingTableSettings;
import me.wolfyscript.customcrafting.data.CCCache;
import me.wolfyscript.utilities.api.WolfyUtilities;
import me.wolfyscript.utilities.api.inventory.gui.GuiHandler;
import me.wolfyscript.utilities.util.NamespacedKey;
import org


76.76.76 0 01.752-.76zm11.167 1.951a1.044 1.044 0 01.018 0 1.044 1.044 0 011.043 1.044 1.044 1.044 0 01-1.043 1.044 1.044 1.044 0 01-1.044-1.044 1.044 1.044 0 011.026-1.043zm-4.454.095a.949.949 0 01.95.95.949.949 0 01-.95.948.949.949 0 01-.949-.948.949.949 0 01.95-.95zm-4.47.095a.854.854 0 01.854.854.854.854 0 01-.855.854.854.854 0 01-.854-.854.854.854 0 01.854-.854zm11.176 1.951a1.139 1.139 0 011.139 1.139 1.139 1.139 0 01-1.139 1.138 1.139 1.139 0 01-1.139-1.138 1.139 1.139 0 011.139-1.139zm-4.47.095a1.044 1.044 0 011.043 1.044 1.044 1.044 0 01-1.043 1.043 1.044 1.044 0 01-1.044-1.043 1.044 1.044 0 011.044-1.044zm-4.471.094a.949.949 0 01.95.949.949.949 0 01-.95.949.949.949 0 01-.95-.949.949.949 0 01.95-.949zm6.706 2.046a1.139 1.139 0 011.139 1.14 1.139 1.139 0 01-1.14 1.137 1.139 1.139 0 01-1.138-1.138 1.139 1.139 0 011.139-1.139zm-4.489.095a1.044 1.044 0 01.018 0 1.044 1.044 0 011.044 1.043 1.044 1.044 0 01-1.044 1.044 1.044 1.044 0 01-1.044-1.044 1.044 1.044 0 011.026-1.043zm-4.46.284a.76.76 0 01.007 0 .76.76 0 01.76.76.76.76 0 01-.76.76.76.76 0 01-.759-.76.76.76 0 01.752-.76zm6.68 1.857a1.139 1.139 0 01.033 0 1.139 1.139 0 011.14 1.138 1.139 1.139 0 01-1.14 1.139 1.139 1.139 0 01-1.139-1.14 1.139 1.139 0 011.106-1.137zm-8.915.379a.76.76 0 01.007 0 .76.76 0 01.76.759.76.76 0 01-.76.76.76.76 0 01-.759-.76.76.76 0 01.752-.76zm4.47 0a.76.76 0 01.008 0 .76.76 0 01.76.759.76.76 0 01-.76.76.76.76 0 01-.76-.76.76.76 0 01.753-.76zM4.417 17.99a.76.76 0 01.007 0 .76.76 0 01.76.76.76.76 0 01-.76.759.76.76 0 01-.76-.759.76.76 0 01.753-.76zm4.47 0a.76.76 0 01.006 0 .76.76 0 01.76.76.76.76 0 01-.76.76.76.76 0 01-.759-.76.76.76 0 01.752-.76zm4.477.002a.76.76 0 01.538.222.76.76 0 010 1.073.76.76 0 01-1.075 0 .76.76 0 010-1.073.756.756 0 01.537-.222Z"/></svg>';
  static const String prettier =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24"


ne determined by fit_and_predict_fn.\\n    \\"\\"\\"\\n    seasonal_forecast_component = np.zeros(prediction_length, dtype=float)\\n    fitted_seasonal_on_train = np.zeros(train_len, dtype=float)\\n\\n    effective_season_length = max(1, season_length) # Ensure season_length is at least 1\\n    if effective_season_length <= 1 or train_len == 0:\\n        return seasonal_forecast_component, fitted_seasonal_on_train\\n\\n    seasonal_avg_window_multiplier = component_config.get('seasonal_avg_window_multiplier', 3.0)\\n    seasonal_data_len_for_avg = min(train_len, int(seasonal_avg_window_multiplier * effective_season_length))\\n\\n    seasonal_pattern = np.zeros(effective_season_length, dtype=float)\\n\\n    if seasonal_data_len_for_avg > 0:\\n        seasonal_avg_data = historical_data[-seasonal_data_len_for_avg:]\\n        # Pad with NaNs for robust median calculation across cycles. Padding at the beginning.\\n        # This ensures that np.nanmedian can operate on full columns, even if the last cycle is incomplete.\\n        padding_needed = (effective_season_length - (len(seasonal_avg_data) % effective_season_length)) % effective_season_length\\n        padded_seasonal_avg_data = np.pad(seasonal_avg_data, (padding_needed, 0), 'constant', constant_values=np.nan)\\n\\n        num_cycles = len(padded_seasonal_avg_data) // effective_season_length\\n        # Only compute seasonal pattern if at least one full cycle is available\\n        if num_cycles > 0:\\n            reshaped_data = padded_seasonal_avg_data.reshape(num_cycles, effective_season_length)\\n            seasonal_pattern = np.nanmedian(reshaped_data, axis=0) # Use np.nanmedian to handle NaNs from padding\\n    \\n    # Ensure seasonal pattern is finite before tiling and using in predictions.\\n    # np.nanmedian can return NaN if all values in a column are NaN.\\n    seasonal_pattern = np.nan_to_num(seasonal_pattern, nan=0.0, posinf=0.0, neginf=0.0)\\n\\n    effective_pattern_length = max(1, len(seasonal_pattern))\\n    num_repeats_seasonal = (prediction_length + effective_pattern_length - 1) // effective_pattern_length\\n    seasonal_forecast_component = np.tile(seasonal_pattern, num_repeats_seasonal)[:prediction_length]\\n\\n    fitted_seasonal_on_train = np.tile(seasonal_pattern, (train_len + effective_pattern_length - 1) // effective_pattern_length)[:train_len]\\n\\n    return seasonal_forecast_component, fitted_seasonal_on_train\\n\\ndef _fit_predict_seasonal_secondary_component(\\n    historical_data: np.ndarray, prediction_index: pd.Index, input_targets_index: pd.Index,\\n    prediction_length: int, train_len: int, component_config: Dict[str, Any]\\n) -> Tuple[np.ndarray, np.ndarray]:\\n    \\"\\"\\"\\n    Calculates secondary seasonal patterns (DOW, HOD, Month of Year, Day of Year) from residuals.\\n    \`historical_data\` is expected to be finite.\\n    Optimized to use pure NumPy for median calculations, avoiding Pandas groupby overhead.\\n    Includes logic for DayOfWeek-HourOfDay interaction.\\n    \\"\\"\\"\\n    secondary_seasonal_forecast_component = np.zeros(prediction_length,


r: #21313a; */
/* } */
/* .label.label-default { */
/*   background-color: #888888; */
/* } */
/* .pagination { */
/*   border-radius: 0; */
/*   border-top: 1px solid #d8d8d8; */
/* } */
/* .pagination.o_pagination_big { */
/*   width: 100%; */
/* } */
/* .pagination > li { */
/*   margin-top: -1px; */
/*   margin-right: 4px; */
/*   display: inline-block; */
/* } */
/* .pagination > li:nth-last-child(2) { */
/*   margin-right: 0; */
/* } */
/* .pagination > li:last-child { */
/*   margin-left: 4px; */
/*   margin-right: 0; */
/* } */
/* .pagination > li > a, */
/* .pagination > li > span { */
/*   -webkit-transition: all 0.1s ease; */
/*   -o-transition: all 0.1s ease; */
/*   transition: all 0.1s ease; */
/*   border-radius: 0!important; */
/*   border-width: 1px 0 0 0; */
/* } */
/* .pagination > li.disabled { */
/*   display: none; */
/* } */
/* blockquote p { */
/*   font-size: 14px; */
/*   color: #21313a; */
/* } */
/* blockquote small { */
/*   font-size: 90%; */
/* } */
/* .list-group .list-group-item { */
/*   border-width: 1px 0 0; */
/*   box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.17); */
/* } */
/* .list-group .list-group-item.deep_hover:hover { */
/*   -webkit-transition: box-shadow 0.3s cubic-bezier(0.55, 0, 0.1, 1) 0s; */
/*   -moz-transition: box-shadow 0.3s cubic-bezier(0.55, 0, 0.1, 1) 0s; */
/*   -o-transition: box-shadow 0.3s cubic-bezier(0.55, 0, 0.1, 1) 0s; */
/*   transition: box-shadow 0.3s cubic-bezier(0.55, 0, 0.1, 1) 0s; */
/*   box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.1), 0 2px 2px 0 rgba(0, 0, 0, 0.05); */
/* } */
/* .list-group .list-group-item.deep_hover:hover { */
/*   -webkit-transition: box-shadow 0.3s cubic-bezier(0.55, 0, 0.1, 1) 0s; */
/*   -moz-transition: box-shadow 0.3s cubic-bezier(0.55, 0, 0.1, 1) 0s; */
/*   -o-transition: box-shadow 0.3s cubic-bezier(0.55, 0, 0.1, 1) 0s; */
/*   transition: box-shadow 0.3s cubic-bezier(0.55, 0, 0.1, 1) 0s; */
/*   box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.1), 0 2px 2px 0 rgba(0, 0, 0, 0.05); */
/* } */
/* .list-group .list-group-item:first-child { */
/*   border-width: 0; */
/* } */
/* .tooltip .tooltip-inner { */
/*   padding: 12px 10px; */
/*   font-size: 13px; */
/*   line-height: 1.3; */
/*   font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; */
/*   box-shadow: 0 6px 10px 0 rgba(0,


 registerPOD(keyb.repeat.rate);
        registerPOD(keyb.command);
        registerPOD(keyb.p60data);
        registerPOD(keyb.p60changed);
        registerPOD(keyb.active);
        registerPOD(keyb.scanning);
        registerPOD(keyb.scheduled);
        registerPOD(port_61_data);
    }
} dummy;
}
/*
 *  Copyright (C) 2002-2021  The DOSBox Team
 *
 *  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.
 */

#include <string.h>
#include <assert.h>
#include <math.h>
#include <stdio.h>
#include "dosbox.h"
#if defined (WIN32)
#include <d3d9.h>
#endif
#include "logging.h"
#include "time.h"
#include "timer.h"
#include "setup.h"
#include "support.h"
#include "hardware.h"
#include "video.h"
#include "render.h"
#include "../gui/render_scalers.h"
#include "vga.h"
#include "pic.h"
#include "jfont.h"
#include "menu.h"
#include "timer.h"
#include "config.h"
#include "control.h"
#include "sdlmain.h"
#include "shiftjis.h"
#include "../ints/int10.h"
#include "pc98_cg.h"
#include "pc98_gdc.h"
#include "pc98_gdc_const.h"

#if (C_SSHOT) || (C_AVCODEC)
#include <zlib.h>
#include <png.h>
#include "../libs/zmbv/zmbv.h"
#endif

/* do not issue CPU-side I/O here -- this code emulates functions that the GDC itself carries out, not on the CPU */
#include "cpu_io_is_forbidden.h"

static constexpr unsigned int MCH_RAW_SNAPSHOT = 0xFFFF;

bool ega200 = false;
bool mcga_double_scan = false;
bool dbg_event_maxscan = false;
bool dbg_event_scanstep = false;
bool dbg_event_hretrace = false;
bool dbg_event_color_select = false;
bool dbg_event_color_plane_enable = false;

extern bool vga_render_on_demand;
extern signed char vga_render_on_demand_user;

/* S3 streams processor state.
 * Registers are only loaded into hardware on vertical sync anyway. */
struct s3drawstream {
    unsigned int        starty,endy; /* scanlines to draw, starty <= y < endy */
    unsigned int        startx,endx; /* pixels to draw, startx <= x < endx */
    uint32_t            vmem_addr;
    uint32_t            stride;
    uint8_t             pixfmt;
    uint8_t             filter;


  delete_file(test_file);
}

TEST(cgroupTest, read_numerical_key_beyond_max_path) {
  char larger_than_max[MAXPATHLEN + 1];
  for (int i = 0; i < (MAXPATHLEN); i++) {
    larger_than_max[i] = 'A' + (i % 26);
  }
  larger_than_max[MAXPATHLEN] = '\0';
  TestController* too_large_path_controller = new TestController(larger_than_max);
  const char* test_file_path = "/file-not-found";
  const char* key = "something";
  julong a = 0xBAD;
  bool is_ok = too_large_path_controller->read_numerical_key_value(test_file_path, key, &a);
  EXPECT_FALSE(is_ok) << "Too long path should be an error";
  EXPECT_EQ((julong)0xBAD, a) << "Expected untouched scan value";
}

TEST(cgroupTest, read_numerical_key_file_not_exist) {
  TestController* unknown_path_ctrl = new TestController((char*)"/do/not/exist");
  const char* test_file_path = "/file-not-found";
  const char* key = "something";
  julong a = 0xBAD;
  bool is_ok = unknown_path_ctrl->read_numerical_key_value(test_file_path, key, &a);
  EXPECT_FALSE(is_ok) << "File not found should be an error";
  EXPECT_EQ((julong)0xBAD, a) << "Expected untouched scan value";
}

TEST(cgroupTest, set_cgroupv1_subsystem_path) {
  TestCase host = {
    "/sys/fs/cgroup/memory",                                             // mount_path
    "/",                                                                 // root_path
    "/user.slice/user-1000.slice/user@1000.service",                     // cgroup_path
    "/sys/fs/cgroup/memory/user.slice/user-1000.slice/user@1000.service" // expected_path
  };
  TestCase container_engine = {
    "/sys/fs/cgroup/mem",                            // mount_path
    "/user.slice/user-1000.slice/user@1000.service", // root_path
    "/user.slice/user-1000.slice/user@1000.service", // cgroup_path
    "/sys/fs/cgroup/mem"                             // expected_path
  };
  TestCase container_moving_cgroup = {
    "/sys/fs/cgroup/cpu,cpuacct",                                            // mount_path
    "/system.slice/garden.service/garden/good/2f57368b-0eda-4e52-64d8-af5c", // root_path
    "/system.slice/garden.service/garden/bad/2f57368b-0eda-4e52-64d8-af5c",  // cgroup_path
    "/sys/fs/cgroup/cpu,cpuacct"                                             // expected_path
  };
  int length = 3;
  TestCase* testCases[] = { &host,
                            &container_engine,
                            &container_moving_cgroup };
  for (int i = 0; i < length; i++) {
    CgroupV1Controller* ctrl = new CgroupV1Controller( (char*)testCases[i]->root_path,
                                                       (char*)testCases[i]->mount_path,
                                                       true /* read-only mount */);
    ctrl->set_subsystem_path((char*)testCases[i]->cgroup_path);
    ASSERT_STREQ(testCases[i]->expected_path, ctrl->subsystem_path());
  }
}

TEST(cgroupTest, set_cgroupv1_subsystem_path_adjusted) {
  TestCase memory = {
    "/sys/fs/cgroup/memory", // mount_path
    "/",                     // root_path
    "../test1",              // cgroup_path
    "/sys/fs/cgroup/memory"  // expected_path
  };
  TestCase cpu = {
    "/sys/fs/cgroup/cpu", // mount_path
    "/",                  // root_path
    "../../test2"


ream,java.util.zip.Inflater,~N")});w("java.util.zip");A(["java.util.zip.InflaterInputStream","$.CRC32"],"java.util.zip.GZIPInputStream",["java.io.EOFException","$.IOException","java.util.zip.CheckedInputStream","$.Inflater","$.ZipException"],function(){c$=B(function(){this.crc=null;this.$closed=this.eos=!1;this.tmpbuf=null;y(this,arguments)},
java.util.zip,"GZIPInputStream",java.util.zip.InflaterInputStream);H(c$,function(){this.crc=new java.util.zip.CRC32;this.tmpbuf=q(128,0)});d(c$,"ensureOpen",function(){if(this.$closed)throw new java.io.IOException("Stream closed");});z(c$,function(a,b){E(this,java.util.zip.GZIPInputStream,[a,(new java.util.zip.Inflater).init(0,!0),b]);this.readHeader(a)},"java.io.InputStream,~N");f(c$,"read",function(a,b,c){this.ensureOpen();if(this.eos)return-1;var e=this.readInf(a,b,c);if(-1==e)if(this.readTrailer())this.eos=
!0;else return this.read(a,b,c);else this.crc.update(a,b,e);return e},"~A,~N,~N");d(c$,"close",function(){this.$closed||(O(this,java.util.zip.GZIPInputStream,"close",[]),this.$closed=this.eos=!0)});d(c$,"readHeader",function(a){a=(new java.util.zip.CheckedInputStream(a)).set(this.crc);this.crc.reset();if(35615!=this.readUShort(a))throw new java.util.zip.ZipException("Not in GZIP format");if(8!=this.readUByte(a))throw new java.util.zip.ZipException("Unsupported compression method");var b=this.readUByte(a);
this.skipBytes(a,6);var c=10;if(4==(b&4)){var e=this.readUShort(a);this.skipBytes(a,e);c+=e+2}if(8==(b&8)){do c++;while(0!=this.readUByte(a))}if(16==(b&16)){do c++;while(0!=this.readUByte(a))}if(2==(b&2)){b=this.crc.getValue()&65535;if(this.readUShort(a)!=b)throw new java.util.zip.ZipException("Corrupt GZIP header");c+=2}this.crc.reset();return c},"java.io.InputStream");d(c$,"readTrailer",function(){return!0});d(c$,"readUShort",function(a){var b=this.readUByte(a);return this.readUByte(a)<<8|b},"java.io.InputStream");
d(c$,"readUByte",function(a){a=a.readByteAsInt();if(-1==a)throw new java.io.EOFException;if(-1>a||255<a)throw new java.io.IOException(this.$in.getClass().getName()+".read() returned value out of range -1..255: "+a);return a},"java.io.InputStream");d(c$,"skipBytes",function(a,b){for(;0<b;){var c=a.read(this.tmpbuf,0,b<this.tmpbuf.length?b:this.tmpbuf.length);if(-1==c)throw new java.io.EOFException;b-=c}},"java.io.InputStream,~N");C(c$,"GZIP_MAGIC",35615,"FHCRC",2,"FEXTRA",4,"FNAME",8,"FCOMMENT",16)});
w("javajs.api");A(["java.util


//
//  MNNAbsMaxFP16_Pack8.S
//  MNN
//
//  Created by MNN on 2023/10/31.
//  Copyright © 2018, Alibaba Group Holding Limited
//

#ifdef __aarch64__

#include "MNNAsmGlobal.h"
.text
.align 5

.macro Abs z0, z1, z2, z3
    fabs \z0\().8h, \z0\().8h
    fabs \z1\().8h, \z1\().8h
    fabs \z2\().8h, \z2\().8h
    fabs \z3\().8h, \z3\().8h
.endm

.macro Max d0, d1, d2, d3, z0, z1, z2, z3
    fmax \d0\().8h, \d0\().8h, \z0\().8h
    fmax \d1\().8h, \d1\().8h, \z1\().8h
    fmax \d2\().8h, \d2\().8h, \z2\().8h
    fmax \d3\().8h, \d3\().8h, \z3\().8h
.endm

.macro ReduceSum s0, s1, s2, s3, zero
    faddp \s0\().8h, \s0\().8h, \s1\().8h // 0 0 0 0 1 1 1 1
    faddp \s2\().8h, \s2\().8h, \s3\().8h // 2 2 2 2 3 3 3 3
    faddp \s0\().8h, \s0\().8h, \s2\().8h // 0 0 1 1 2 2 3 3
    faddp \s0\().8h, \s0\().8h, \zero\().8h // 0 1 2 3
.endm

.macro ReduceMax_8 s0, s1, s2, s3, s4, s5, s6, s7
    fmaxp \s0\().8h, \s0\().8h, \s1\().8h // 0 0 0 0 1 1 1 1
    fmaxp \s2\().8h, \s2\().8h, \s3\().8h // 2 2 2 2 3 3 3 3
    fmaxp \s4\().8h, \s4\().8h, \s5\().8h // 0 0 0 0 1 1 1 1
    fmaxp \s6\().8h, \s6\().8h, \s7\().8h // 2 2 2 2 3 3 3 3
    fmaxp \s0\().8h, \s0\().8h, \s2\().8h // 0 0 1 1 2 2 3 3
    fmaxp \s4\().8h, \s4\().8h, \s6\().8h // 0 0 1 1 2 2 3 3
    fmaxp \s0\().8h, \s0\().8h, \s4\().8h // 0 1 2 3 0 1 2 3
.endm

.macro ReduceMax_4 s0, s1, s2, s3
    fmaxp \s0\().8h, \s0\().8h, \s1\().8h // 0 0 0 0 1 1 1 1
    fmaxp \s2\().8h, \s2\().8h, \s3\().8h // 2 2 2 2 3 3 3 3
    fmaxp \s0\().8h, \s0\().8h, \s2\().8h // 0 0 1 1 2 2 3 3
    fmaxp \s0\().8h, \s0\().8h, \s0\().8h // 0 0 1 1 2 2 3 3
.endm

//void MNNAbsMaxFP16_Pack8(const float* source, float* absmax, size_t


，请把绷带交给我，我会奖励你的。",
    ["O"] = "把20卷绒线绷带交给奥格瑞玛精神谷的医师朗兰纳。",
    ["T"] = "部落需要绒线绷带！",
  },
  [8605] = {
    ["D"] = "你好，$C。为了准备安其拉之战，我在这里帮助部落协调收集绒线绷带。在战场上，士兵们不能指望总有医师跟着他们，所以我们要为他们准备急救包。$B$B如果你有时间的话，我需要很多绒线绷带，请把绷带交给我，我会奖励你的。",
    ["O"] = "把20卷绒线绷带交给奥格瑞玛精神谷的医师朗兰纳。",
    ["T"] = "部落需要更多绒线绷带！",
  },
  [8607] = {
    ["D"] = "我相信你来找我是想要帮助我收集东西？很好！不管怎么样，我接受所有的帮助，并且我需要你帮忙去收集厚魔纹绷带。最好是新做的，但不是必须。把它们交给我，$C，我会给你适当的奖励的。",
    ["O"] = "把20卷魔纹绷带交给奥格瑞玛精神谷的卡隆。",
    ["T"] = "部落需要魔纹布绷带！",
  },
  [8608] = {
    ["D"] = "你回来了?真有趣。你看我还在收集安其拉战役要用的东西。这表示我需要你再次为我收集一堆魔纹布绷带。如果你能再做一次会相当令人惊讶的$C。",
    ["O"] = "把20卷魔纹绷带交给奥格瑞玛精神谷的卡隆。",
    ["T"] = "部落需要更多魔纹布绷带！",
  },
  [8609] = {
    ["D"] = "看来安其拉战役会造成部落和联盟间不可避免的冲突。但令人惊讶的是，这不是场双方间的战争，而是对抗异种蝎和控制他们的力量。双方都在收集打一场胜仗所需的资源。$B$B我在收集要分配给士兵们的符文布绷带。但是我没有协助是不会成功的。你能帮我这个忙吗，$C?",
    ["O"] = "带20个符文布绷带给奥格玛精神谷的尼根·陶蹄。",
    ["T"] = "部落需要符文布绷带!",
  },
  [8610] = {
    ["D"] = "毫无疑问，部落和联盟在准备安其拉之�


)}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),this._instanceFeatureIdLabel=e}}});Wo.fromIonAssetId=async function(e,t){let n=await qu.fromAssetId(e);return Wo.fromUrl(n,t)};Wo.fromUrl=async function(e,t){t=y(t,y.EMPTY_OBJECT);let n=De.createIfNeeded(e),i;n.extension==="json"?i=n.getBaseUri(!0):n.isDataUri&&(i="");let o=await Wo.loadJson(n),r=await _je(n,o),s=new Wo(t);s._resource=n,s._url=n.url,s._basePath=i,s._metadataExtension=r,s._geometricError=o.geometricError,s._scaledGeometricError=o.geometricError;let a=o.asset;s._asset=a,s._extras=o.extras,Vae(s);let c=l(o.asset.gltfUpAxis)?wo.fromName(o.asset.gltfUpAxis):wo.Y,u=y(t.modelUpAxis,c),f=y(t.modelForwardAxis,wo.X);s._properties=o.properties,s._extensionsUsed=o.extensionsUsed,s._extensions=o.extensions,s._modelUpAxis=u,s._modelForwardAxis=f,s._root=s.loadTileset(n,o);let p=s._root.createBoundingVolume(o.root.boundingVolume,F.IDENTITY).boundingSphere.center,g=s._ellipsoid.cartesianToCartographic(p);return l(g)&&g.height>ri._defaultMinTerrainHeight&&(s._initialClippingPlanesOriginMatrix=It.eastNorthUpToFixedFrame(p)),s._clippingPlanesOriginMatrix=F.clone(s._initialClippingPlanesOriginMatrix),s};Wo.loadJson=function(e){return De.createIfNeeded(e).fetchJson()};Wo.prototype.makeStyleDirty=function(){this._styleEngine.makeDirty()};Wo.prototype.loadTileset=function(e,t,n){let i=t.asset;if(!l(i))throw new le("Tileset must have an asset property.");if(i.version!=="0.0"&&i.version!=="1.0"&&i.version!=="1.1")throw new le("The tileset must be 3D Tiles version 0.0, 1.0, or 1.1");l(t.extensionsRequired)&&Wo.checkSupportedExtensions(t.extensionsRequired);let o=this._statistics,r=i.tilesetVersion;l(r)&&(this._basePath+=`?v=${r}`,e=e.clone(),e.setQueryParameters({v:r}));let s=Oae(this,e,t.root,n);l(n)&&(n.children.push(s),s._depth=n._depth+1);let a=[];for(a.push(s);a.length>0;){let c=a.pop();++o.numberOfTilesTotal,this._allTilesAdditive=this._allTilesAdditive&&c.refine===Vo.ADD;let u=c._header.children;if(l(u))for(let f=0;f<u.length;++f){let d=u[f],p=Oae(this,e,d,c);c.children.push(p),p._depth=c._depth+1,a.push(p)}this._cullWithChildrenBounds&&s


how-text.min.js"></script>

<!DOCTYPE html>

<meta charset="utf-8"/>
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<meta content="国光的 PVE 环境搭建教程" name="description"/>
<meta content="国光" name="author"/>
<link href="https://pve.sqlsec.com/4/5/" rel="canonical"/>
<link href="https://image.3001.net/images/20200922/16007336487809.jpg" rel="icon"/>
<meta content="mkdocs-1.4.2, mkdocs-material-8.5.1" name="generator"/>
<title>vGPU教程 - 国光的 PVE 环境搭建教程</title>
<link href="../../assets/stylesheets/main.2e8b5541.min.css" rel="stylesheet"/>
<link href="../../assets/stylesheets/palette.cbb835fc.min.css" rel="stylesheet"/>

<link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/>


m);
    xtmp = x - page->LocalTransform.GetTranslate().X();
    ytmp = ym - page->LocalTransform.GetTranslate().Y();
    float hzm = page->GetHeight(xtmp,ytmp);

    AVector normal(hmz - hpz, hzm - hzp, 1.0f);
    normal.Normalize();
    return normal;
}
//----------------------------------------------------------------------------
void Terrain::LoadHeader (const std::string& heightName)
{
    // Load the data into temporary variables.  EndianCopy uses memcpy, so
    // if you were to load directly into the class members and use memcpy,
    // the source and destination overlap, in which case memcpy results are
    // unpredictable.
    std::string fileName = heightName + ".wmhf";
    FileIO header(fileName, mMode);
    assertion(header, "Cannot open file %s\n", fileName);

    header.Read(sizeof(int), &mNumRows);
    header.Read(sizeof(int), &mNumCols);

    unsigned short size;
    header.Read(sizeof(unsigned short), &size);
    mSize = (int)size;

    header.Read(sizeof(float), &mMinElevation);
    header.Read(sizeof(float), &mMaxElevation);
    header.Read(sizeof(float), &mSpacing);

    header.Close();
}
//----------------------------------------------------------------------------
void Terrain::LoadPage (int row, int col, const std::string& heightName,
    const std::string& heightSuffix)
{
    int numHeights = mSize*mSize;
    unsigned short* heights = new1<unsigned short>(numHeights);
    std::string fileName = heightName + "." + heightSuffix + ".wmhf";
    FileIO heightFile(fileName, mMode);
    assertion(heightFile, "Cannot open file %s\n", fileName);
    if (heightFile)
    {
        heightFile.Read(sizeof(unsigned short), numHeights, heights);
        heightFile.Close();
    }
    else
    {
        memset(heights, 0, numHeights*sizeof(unsigned short));
    }

    float length = mSpacing*(float)(mSize - 1);
    Float2 origin(col*length, row*length);
    TerrainPage* page = new0 TerrainPage(mVFormat, mSize, heights, origin,
        mMinElevation, mMaxElevation, mSpacing);

    mPages[row][col] = page;
}
//----------------------------------------------------------------------------
TerrainPagePtr Terrain::ReplacePage (int row, int col,
    const std::string& heightName, const std::string& heightSuffix)
{
    if (0 <= row && row < mNumRows && 0 <= col && col < mNumCols)
    {
        TerrainPagePtr save = mPages[row][col];
        LoadPage(row, col, heightName, heightSuffix);
        return save;
    }

    assertion(false, "Invalid row or column index\n");
    return 0;
}
//----------------------------------------------------------------------------
TerrainPagePtr Terrain::ReplacePage (int row, int col, TerrainPage* newPage)
{
    if (0 <= row && row < mNumRows && 0 <= col && col < mNumCols)
    {
        TerrainPagePtr save = mPages[row][col];
        mPages[row][col] = newPage;
        return save;
    }

    assertion(false, "Invalid row or column index\n");
    return 0;
}
//----------------------------------------------------------------------------
void Terrain::OnCameraMotion ()
{
    assertion(mCamera != 0, "Camera must exist\n");
    if (!mCamera)
    {
        return;
    }

    // Get camera location/direction in model space of terrain.
    APoint worldEye = mCamera->GetPosition();
    AVector worldDir = mCamera->GetDVector();
    APoint modelEye = WorldTransform.Inverse()*worldEye;
    AVector modelDir = WorldTransform.Inverse()*worldDir;

    // Update the model-space origins of the