:std::os::raw::c_uint = 33554432;
pub const TSS_TSPATTRIB_KEYREGISTER_SYSTEM: ::std::os::raw::c_uint = 67108864;
pub const TSS_TSPATTRIB_KEYREGISTER_NO: ::std::os::raw::c_uint = 100663296;
pub const TSS_TSPATTRIB_KEYPCRLONG_LOCALITY_ATCREATION: ::std::os::raw::c_uint
          =
    262144;
pub const TSS_TSPATTRIB_KEYPCRLONG_LOCALITY_ATRELEASE: ::std::os::raw::c_uint
          =
    524288;
pub const TSS_TSPATTRIB_KEYPCRLONG_CREATION_SELECTION: ::std::os::raw::c_uint
          =
    786432;
pub const TSS_TSPATTRIB_KEYPCRLONG_RELEASE_SELECTION: ::std::os::raw::c_uint =
    1048576;
pub const TSS_TSPATTRIB_KEYPCRLONG_DIGEST_ATCREATION: ::std::os::raw::c_uint =
    1310720;
pub const TSS_TSPATTRIB_KEYPCRLONG_DIGEST_ATRELEASE: ::std::os::raw::c_uint =
    1572864;
pub const TSS_TSPATTRIB_KEYINFO_CMK_MA_APPROVAL: ::std::os::raw::c_uint = 16;
pub const TSS_TSPATTRIB_KEYINFO_CMK_MA_DIGEST: ::std::os::raw::c_uint = 32;
pub const TSS_KEY_SIZEVAL_512BIT: ::std::os::raw::c_uint = 512;
pub const TSS_KEY_SIZEVAL_1024BIT: ::std::os::raw::c_uint = 1024;
pub const TSS_KEY_SIZEVAL_2048BIT: ::std::os::raw::c_uint = 2048;
pub const TSS_KEY_SIZEVAL_4096BIT: ::std::os::raw::c_uint = 4096;
pub const TSS_KEY_SIZEVAL_8192BIT: ::std::os::raw::c_uint = 8192;
pub const TSS_KEY_SIZEVAL_16384BIT: ::std::os::raw::c_uint = 16384;
pub const TSS_KEYUSAGE_BIND: ::std::os::raw::c_uint = 0;
pub const TSS_KEYUSAGE_IDENTITY: ::std::os::raw::c_uint = 1;
pub const TSS_KEYUSAGE_LEGACY: ::std::os::raw::c_uint = 2;
pub const TSS_KEYUSAGE_SIGN: ::std::os::raw::c_uint = 3;
pub const TSS_KEYUSAGE_STORAGE: ::std::os::raw::c_uint = 4;
pub const TSS_KEYUSAGE_AUTHCHANGE: ::std::os::raw::c_uint = 5;
pub const TSS_KEYUSAGE_MIGRATE: ::std::os::raw::c_uint = 6;
pub const TSS_KEYFLAG_REDIRECTION: ::std::os::raw::c_uint = 1;
pub const TSS_KEYFLAG_MIGRATABLE: ::std::os::raw::c_uint = 2;
pub const TSS_KEYFLAG_VOLATILEKEY: ::std::os::raw::c_uint = 4;
pub const TSS_KEYFLAG_CERTIFIED_MIGRATABLE: ::std::os::raw::c_uint = 8;
pub const TSS_ALG_RSA: ::std::os::raw::c_uint = 32;
pub const TSS_ALG_DES: ::std::os::raw::c_uint = 33;
pub const TSS_ALG_3DES: ::std::os::raw::c_uint = 34;
pub const TSS_ALG_SHA: ::std::os::raw::c_uint = 35;
pub const TSS_ALG_HMAC: ::std::os::raw::c_uint = 36;
pub const TSS_ALG_AES128:


dings.conv.IteratorAlgorithm.fixed_channels,
        cutlass_bindings.conv.IteratorAlgorithm.few_channels,
    ]:
        return True

    # CUTLASS DGRAD's *stride* specialization does not support split-k mode
    if (
        operation.conv_kind == cutlass_bindings.conv.Operator.dgrad
        and operation.stride_support == StrideSupport.Strided
    ):
        conv_problem = cutlass_bindings.conv.Conv2dProblemSize(
            cutlass_bindings.Tensor4DCoord(1, 56, 56, 8),
            cutlass_bindings.Tensor4DCoord(8, 1, 1, 8),
            cutlass_bindings.Tensor4DCoord(0, 0, 0, 0),
            cutlass_bindings.MatrixCoord(2, 2),
            cutlass_bindings.MatrixCoord(1, 1),
            cutlass_bindings.conv.Mode.cross_correlation,
            1,
            1,
        )
        passed = testbed.run(conv_problem)

        return passed

    # Sweep split-k-slice using serial and prallel reduction with non-unity alpha and non-zero beta for
    # a single conv2d problem size. Convolution unit tests take a long time to run so only sweep parameters
    # which are abolutely neccessary to catch functional bugs. The below code does provide option to sweep
    # alpha and beta for local testing, but only runs one value for alpha and beta.

    conv2d_split_k_test_size = cutlass_bindings.conv.Conv2dProblemSize(
        cutlass_bindings.Tensor4DCoord(1, 17, 11, 288),
        cutlass_bindings.Tensor4DCoord(160, 3, 3, 288),
        cutlass_bindings.Tensor4DCoord(1, 1, 1, 1),
        cutlass_bindings.MatrixCoord(1, 1),
        cutlass_bindings.MatrixCoord(1, 1),
        cutlass_bindings.conv.Mode.cross_correlation,
        1,
        1,
    )

    split_k_modes = [
        cutlass_bindings.conv.SplitKMode.Parallel,
        cutlass_bindings.conv.SplitKMode.Serial,
    ]

    split_k_slices = [1, 2, 3, 4, 201]
    problem_alpha = [
        2.0,
    ]
    problem_beta = [
        2.0,
    ]

    for split_k_mode in split_k_modes:
        for split_k_slice in split_k_slices:
            for alpha in problem_alpha:
                for beta in problem_beta:
                    passed = testbed.run(
                        conv2d_split_k_test_size.reset_split_k_slices(split_k_slice),
                        split_k_mode,
                        alpha,
                        beta,
                    )

    return passed

def test_all_conv2d(
    operation: Conv2dOperation,
    conv_test_sizes=[],
    interleaved=False,
    compilation_modes=["nvcc", "nvrtc"]):

    for compilation_mode in compilation_modes:
        passed = test_all_conv2d_from_compilation_mode(operation, conv_test_sizes, interleaved, compilation_mode)

        if not passed:
            return False

    return True


;===============================
	; handle keeper2
	;===============================
	; handle keeper2
	;	stop walking
	;	have keeper come out to talk
	;	special limited handling
	;	can't walk unless win
handle_keeper2:

	jsr	stop_walking

	lda	#0
	sta	KEEPER_COUNT

	lda	#1		; start a quiz
	sta	IN_QUIZ

	;===========================
	; animate keeper coming out

	jsr	keeper2_emerge

	;==============================
	; initial keeper conversation

keeper_talk2:
	; print the message

	ldx     #<cave_outer_keeper2_message1
	ldy     #>cave_outer_keeper2_message1
	jsr	finish_parse_message

	;===============================================
	; if have soda print part2, otherwise skip ahead

	lda	INVENTORY_2
	and	#INV2_SODA
	beq	dont_have_soda

	ldx     #<cave_outer_keeper2_message2
	ldy     #>cave_outer_keeper2_message2
	jsr     finish_parse_message

dont_have_soda:

	; custom common verb table the essentially does nothing
	jsr	setup_quiz_verb_table

	; respond only to take quiz and give sub
	lda	#<keeper2_verb_table
	sta	INL
	lda	#>keeper2_verb_table
	sta	INH
	jsr	load_custom_verb_table

	rts

	;=========================
	; keeper2 emerge
	;=========================

keeper2_emerge:
	lda	#0
	sta	KEEPER_COUNT

keeper2_emerge_loop:

	;=======================
	; move to next frame

	inc	KEEPER_COUNT

	;=======================
	; see if done animation

	lda	KEEPER_COUNT
	cmp	#20
	beq	done_keeper2_emerge

	;========================
	; draw_scene

	jsr	update_screen

	;=====================
	; increment frame

	inc	FRAME

	;=====================
	; increment flame

	jsr	increment_flame

	;=======================
	; flip page

;       jsr     wait_vblank

	jsr	hgr_page_flip

	jmp	keeper2_emerge_loop

done_keeper2_emerge:
	rts

	;=========================
	; keeper2 retreat
	;=========================

keeper2_retreat:
;	lda	#19
	lda	#9
	sta	KEEPER_COUNT

keeper2_retreat_loop:

	;=======================
	; move to next frame

	dec	KEEPER_COUNT

	;=======================
	; see if done animation

	lda	KEEPER_COUNT
	beq	done_keeper2_retreat

	;========================
	; draw_scene

	jsr	update_screen

	;=====================
	; increment frame

	inc	FRAME

	;=====================
	; increment flame

	jsr	increment_flame

	;=======================
	; flip page

;       jsr     wait_vblank

	jsr	hgr_page_flip

	jmp	keeper2_retreat_loop

done_keeper2_retreat:

	;=====================
	; exit to next

	lda	#LOCATION_TROGDOR_OUTER3
	jsr	update_map_locatio


 onCallback0( socket, ourObj )
{
	if( !socket.GetWord( 1 ))
	{
		ourObj.x = ( ourObj.x + socket.tempint );
	}
	socket.tempint = 0;
}

function command_INCY( socket, cmdString )
{
	if( cmdString )
	{
		socket.tempint = parseInt( cmdString );
	}
	else
	{
		socket.tempint = 1;
	}
	var targMsg = GetDictionaryEntry( 254, socket.language ); // Select item to reposition.
	socket.CustomTarget( 1, targMsg );
}

function onCallback1( socket, ourObj )
{
	if( !socket.GetWord( 1 ))
	{
		ourObj.y = ( ourObj.y + socket.tempint );
	}
	socket.tempint = 0;
}

function command_INCZ( socket, cmdString )
{
	if( cmdString )
		socket.tempint = parseInt( cmdString );
	else
		socket.tempint = 1;
	var targMsg = GetDictionaryEntry( 268, socket.language ); // Select item to reposition.
	socket.CustomTarget( 2, targMsg );
}

function onCallback2( socket, ourObj )
{
	if( !socket.GetWord( 1 ) )
	{
		ourObj.z = ( ourObj.z + socket.tempint );
	}
	socket.tempint = 0;
}

function command_INCID( socket, cmdString )
{
	if( cmdString )
	{
		socket.tempint = parseInt( cmdString );
	}
	else
	{
		socket.tempint = 1;
	}
	var targMsg = GetDictionaryEntry( 9101, socket.language ); // Select target to modify ID by %i:
	socket.CustomTarget( 3, targMsg.replace( /%i/gi, socket.tempint ));
}

function onCallback3( socket, ourObj )
{
	if( !socket.GetWord( 1 ))
	{
		ourObj.id = ( ourObj.id + socket.tempint );
	}
	socket.tempint = 0;
}
// These commands are used for teleporting targeted objects to user's location, or teleport them
// to a specified location

function CommandRegistration()
{
	RegisterCommand( "xteleport", 4, true );
	RegisterCommand( "xgo", 4, true );
}

function command_XTELEPORT( socket, cmdString )
{
	if( cmdString )
	{
		var toTele;
		var splitString = cmdString.split( " " );
		if( splitString[3] )
		{
			var a1 = parseInt( splitString[0] );
			var a2 = parseInt( splitString[1] );
			var a3 = parseInt( splitString[2] );
			var a4 = parseInt( splitString[3] );
			toTele = CalcCharFromSer( a1, a2, a3, a4 );
			if( toTele )
			{
				toTele.SetLocation( socket );
			}
			return;
		}
		else if( splitString[0] )
		{
			var ourNum = parseInt( splitString[0] );
			if( splitString[0].match( /0x/i ) )
			{
				toTele = CalcCharFromSer( ourNum );
				if( toTele )
				{
					toTele.SetLocation( socket );
				}
			}
			else
			{
				var tSock = GetSocketFromIndex( ourNum );
				if( tSock )
				{
					toTele = tSock.currentChar;
					if( toTele )
					{
						toTele.SetLocation( socket );
					}
				}
			}
			return;
		}
	}

	var targMsg = GetDictionaryEntry( 21, socket.language ); // Select char to teleport to your position.
	socket.CustomTarget( 0, targMsg );
}

function onCallback0( socket, ourObj )
{
	if( !socket.GetWord( 1 ))
	{
		ourObj.SetLocation( socket );
	}
}

function command_XGO( socket, cmdString )
{
	if( cmdString )
	{


ans on the same Election Day.

Subsequent changes

During the next Congress, Republican John D. Hoblitzell, Jr. was appointed to the seat of deceased Senator Matthew M. Neely (D-WV), and Democrat William Proxmire won a special election to fill the vacancy created by the death of Senator Joseph R. McCarthy (R-WI). These gains left party balance unchanged.

Complete list of races

Key: Bold states indicate separate article on that race. Bold candidates indicate winner.

State
Incumbent
Party
Result
Candidates

Alabama
Lister Hill
Democratic
Re-elected
Lister Hill (Democratic) Unopposed

Arizona
Carl Hayden
Democratic
Re-elected
Carl Hayden (Democratic) 61.4%

Ross F. Jones (Republican) 38.6%

Arkansas
<a href="//en.wikipedia.org/wiki/J._William_F


{n - 3}{3} \end{align*}
#### Grading rules
| 评分规则 | 分值 | 得分 | 评分过程 |
| --- | --- | --- | --- |
| 对角线数量正确 | 1 | 1 | 学生答案中正确计算了对角线的数量，得分为1分。 |
| 任取两条对角线数量正确 | 1 | 1 | 学生答案中任取两条对角线的数量计算正确，符合评分规则要求。 |
| 公共顶点数量正确 | 1 | 1 | 学生答案中关于公共顶点数量的计算正确，符合评分标准。 |
| 与答案等价 | 1 | 1 | 学生答案与标准答案在最终表达式上不一致，但经过化简后等价。因此，学生答案符合评分规则。 |
| 结果化简 | 1 | 0 | 学生答案的最终化简结果与标准答案不一致，因此不得分。 |

## Problem 1.14
### Subproblem (1)
#### Status
graded
#### Answer
\subsection*{(1)} 首先分解$20^{20}$: \[20^{20}=2^{40}\cdot 5^{20}.\] 数列中2的次数的排列为在0-40中可重复地选58个数的组合。考虑$i$加上$a_i$中2的次数组成的数列（$i=2,\dots,59$），数列为2-99中的严格递增数列，取法共$C(98,58)$种。同理，对5的次数的取法共$C(78,58)$种。因此取法总数为$C(98,58)\cdot C(78,58)$.
#### Matched solution ID
0
#### Correct solution
$20^{20} = 2^{40} \dotp 5^{20}$。 \begin{enumerate}[label={\rm (\arabic*)}] \item 每一项中含有$2$的幂次和$5$的幂次分别单调递增。 以$2$的幂次为例，可想象成是走$58 \times 40$的格路，路径在$x = i - 2$处的最大$y$坐标即为$a_i$中$2$的幂次；对于$5$也类似。 总的方案数为$\binom{98}{40} \binom{78}{20}$；
#### Grading rules
| 评分规则 | 分值 | 得分 | 评分过程 |
| --- | --- | --- | --- |
| 分解$20^{20}$ | 1 | 1 | 学生答案正确分解了$20^{20}$，得1分。 |
| 答案正确 | 3 | 3 | 学生答案中，对于2的次数的排列和5的次数的排列的描述与标准答案一致，且最终的计算结果也正确。因此，答案正确，得3分。 |

### Subproblem (2)
#### Status
graded
#### Answer
\subsection*{(2)} 考虑$b_i:=a_{i+1}/a_{i}>1$. $b_i$至少为2或5，$\prod_{i=1}^{59}b_i=2^{40}\cdot 5^{20}$. 因此，对58个$i$，$b_i$为2或5，剩余一个$b_i$为


Pitch?.startShift},${
                        mode2Pitch?.shifts
                            ?.joinToString(",") { it.toString() }
                    }",
                )
                builder.appendLine("PBM=${mode2Pitch?.curveTypes?.joinToString(",")}")
                if (mode2Pitch?.vibratoParams != null) {
                    val vibratoText =
                        mode2Pitch.vibratoParams
                            .let {
                                listOf(it.length, it.period, it.depth, it.fadeIn, it.fadeOut, it.phaseShift, it.shift)
                            }.joinToString(",")
                    builder.appendLine(vibratoText)
                }
            }

            tickPos = note.tickOff
        }
        builder.appendLine("[#TRACKEND]")
        return builder.content
    }

    private fun String.tryGetValue(key: String): String? {
        if (!startsWith("$key=")) return null
        val index = indexOf("=").takeIf { it in 0 until lastIndex } ?: return null
        return substring(index + 1).takeIf { it.isNotBlank() }
    }

    private fun makeMode1PitchDataString(notePitch: UtauMode1NotePitchData?): String? =
        notePitch?.pitchPoints?.joinToString(separator = ",") {
            it.toInt().toString()
        }

    const val MODE1_PITCH_SAMPLING_INTERVAL_TICK = 5L
    const val MODE2_PITCH_MAX_POINT_COUNT = 50L
    private const val MAX_ACCEPTED_BPM = 10000.0
    private const val LINE_SEPARATOR = "\r\n"
    private val format = Format.Ust
}
package core.process.pitch

import core.model.Note
import core.model.Pitch
import core.process.pitch.VocaloidPartPitchData.Event
import kotlin.math.abs
import kotlin.math.ceil
import kotlin.math.roundToInt

data class VocaloidPartPitchData(
    val startPos: Long,
    val pit: List<Event>,
    val pbs: List<Event>,
) {
    data class Event(
        val pos: Long,
        val value: Int,
    ) {
        companion object {
            fun fromPair(pair: Pair<Long, Int>) = Event(pair.first, pair.second)
        }
    }
}

private const val PITCH_MAX_VALUE = 8191
private const val DEFAULT_PITCH_BEND_SENSITIVITY = 2
private const val MIN_BREAK_LENGTH_BETWEEN_PITCH_SECTIONS = 480L
private const val BORDER_APPEND_RADIUS = 5L

fun pitchFromVocaloidParts(dataByParts: List<VocaloidPartPitchData>): Pitch? {
    val pitchRawDataByPart =
        dataByParts.map { part ->
            val pit = part.pit
            val pbs = part.pbs
            val pitMultipliedByPbs = mutableMapOf<Long, Int>()
            var pitIndex = 0
            var pbsCurrentValue = DEFAULT_PITCH_BEND_SENSITIVITY
            for (pbsEvent in pbs) {
                for (i in pitIndex..pit.lastIndex) {
                    val pitEvent = pit[i]
                    if (pitEvent.pos < pbsEvent.pos) {
                        pitMultipliedByPbs[pitEvent.pos] = pitEvent.value * pbsCurrentValue
                        if (i == pit.lastIndex) pitIndex = i
                    } else {
                        pitIndex = i
                        break
                    }
                }
                pbsCurrentValue = pbsEvent.value
            }
            if (pitIndex < pit.lastIndex) {
                for (i in pitIndex..pit.lastIndex) {
                    val pitEvent = pit[i]
                    pitMultipliedByPbs[pitEvent.pos] = pitEvent.value * pbsCurrentValue
                }
            }
            pitMultipliedByPbs.mapKeys { it.key + part.startPos }
        }
    val pitchRawData =
        pitchRawDataByPart
            .map { it.toList() }
            .f


specified time
  /// (timestamp).
  ///
  /// Parameter [maxResults] :
  /// The maximum number of algorithms to return in the response.
  ///
  /// Parameter [nameContains] :
  /// A string in the algorithm name. This filter returns only algorithms whose
  /// name contains the specified string.
  ///
  /// Parameter [nextToken] :
  /// If the response to a previous ListAlgorithms request was
  /// truncated, the response includes a NextToken. To retrieve the
  /// next set of algorithms, use the token in the next request.
  ///
  /// Parameter [sortBy] :
  /// The parameter by which to sort the results. The default is
  /// CreationTime.
  ///
  /// Parameter [sortOrder] :
  /// The sort order for the results. The default is Ascending.
  Future<ListAlgorithmsOutput> listAlgorithms({
    DateTime? creationTimeAfter,
    DateTime? creationTimeBefore,
    int? maxResults,
    String? nameContains,
    String? nextToken,
    AlgorithmSortBy? sortBy,
    SortOrder? sortOrder,
  }) async {
    _s.validateNumRange(
      'maxResults',
      maxResults,
      1,
      100,
    );
    final headers = <String, String>{
      'Content-Type': 'application/x-amz-json-1.1',
      'X-Amz-Target': 'SageMaker.ListAlgorithms'
    };
    final jsonResponse = await _protocol.send(
      method: 'POST',
      requestUri: '/',
      exceptionFnMap: _exceptionFns,
      // TODO queryParams
      headers: headers,
      payload: {
        if (creationTimeAfter != null)
          'CreationTimeAfter': unixTimestampToJson(creationTimeAfter),
        if (creationTimeBefore != null)
          'CreationTimeBefore': unixTimestampToJson(creationTimeBefore),
        if (maxResults != null) 'MaxResults': maxResults,
        if (nameContains != null) 'NameContains': nameContains,
        if (nextToken != null) 'NextToken': nextToken,
        if (sortBy != null) 'SortBy': sortBy.value,
        if (sortOrder != null) 'SortOrder': sortOrder.value,
      },
    );

    return ListAlgorithmsOutput.fromJson(jsonResponse.body);
  }

  /// Lists the aliases of a specified image or image version.
  ///
  /// May throw [ResourceNotFound].
  ///
  /// Parameter [imageName] :
  /// The name of the image.
  ///
  /// Parameter [alias] :
  /// The alias of the image version.
  ///
  /// Parameter [maxResults] :
  /// The maximum number of aliases to return.
  ///
  /// Parameter [nextToken] :
  /// If the previous call to ListAliases didn't return the full
  /// set of aliases, the call returns a token for retrieving the next set of
  /// aliases.
  ///
  /// Parameter [version] :
  /// The version of the image. If image version is not specified, the aliases
  /// of all versions of the image are listed.
  Future<ListAliasesResponse> listAliases({
    required String imageName,
    String? alias,
    int? maxResults,
    String? nextToken,
    int? version,
  }) async {
    _s.validateNumRange(
      'maxResults',
      maxResults,
      1,
      100,
    );
    _s.validateNumRange(
      'version',
      version,
      0,
      1152921504606846976,
    );
    final headers = <String, String>{
      'Content-Type': 'application/x-amz-json-1.1',
      'X-Amz-Target': 'SageMaker.ListAliases'
    };
    final jsonResponse = await _protocol.send(
      method: 'POST',
      requestUri: '/',
      exceptionFnMap: _exceptionFns,
      // TODO queryParams
      headers: headers,
      payload: {
        'ImageName': imageName,
        if (alias != null) 'Alias': alias,


d rail curve. Unused if <seealso cref="UseLegacySweeper"/> is true.</param>
    /// <param name="refitTolerance">Refit tolerance.</param>
    /// <returns>Array of Brep sweep results.</returns>
    /// <since>5.0</since>
    public Brep[] PerformSweepRefit(Curve rail1, Curve rail2, Curve crossSection, double crossSectionParameterRail1, double crossSectionParameterRail2, double refitTolerance)
    {
      // 12-Jun-2019 Dale Fugier, https://mcneel.myjetbrains.com/youtrack/issue/RH-31673
      // 6-May-2024 Dale Fugier, https://mcneel.myjetbrains.com/youtrack/issue/RH-81872
      if (UseLegacySweeper)
        return PerformSweepRefit(rail1, rail2, new Curve[] { crossSection }, new double[] { crossSectionParameterRail1 }, new double[] { crossSectionParameterRail2 }, refitTolerance);
      return PerformSweepRefit(rail1, rail2, new Curve[] { crossSection }, refitTolerance);
    }

    /// <summary>
    /// Sweep2 function that fits a surface through profile curves that define the surface cross-sections
    /// and two curves that defines a surface edge.
    /// </summary>
    /// <param name="rail1">Rail to sweep shapes along.</param>
    /// <param name="rail2">Rail to sweep shapes along.</param>
    /// <param name="crossSections">Shape curves.</param>
    /// <param name="refitTolerance">Refit tolerance.</param>
    /// <returns>Array of Brep sweep results.</returns>
    /// <since>5.0</since>
    public Brep[] PerformSweepRefit(Curve rail1, Curve rail2, IEnumerable<Curve> crossSections, double refitTolerance)
    {
      // 12-Jun-2019 Dale Fugier, https://mcneel.myjetbrains.com/youtrack/issue/RH-31673
      // 6-May-2024 Dale Fugier, https://mcneel.myjetbrains.com/youtrack/issue/RH-81872
      if (UseLegacySweeper)
      {
        List<double> rail_params1 = new List<double>();
        List<double> rail_params2 = new List<double>();
        foreach (Curve c in crossSections)
        {
          Point3d point_at_start = c.PointAtStart;
          double t;
          rail1.ClosestPoint(point_at_start, out t);
          rail_params1.Add(t);
          rail2.ClosestPoint(point_at_start, out t);
          rail_params2.Add(t);
        }
        return PerformSweepRefit(rail1, rail2, crossSections, rail_params1, rail_params2, refitTolerance);
      }
      return Brep.CreateFromSweep(rail1, rail2, crossSections, Point3d.Unset, Point3d.Unset, ClosedSweep, SweepTolerance, SweepRebuild.Refit, 0, refitTolerance, MaintainHeight, AutoAdjust);
    }

    /// <summary>
    /// Sweep2 function that fits a surface through profile curves that define the surface cross-sections
    /// and two curves that defines a surface edge.
    /// </summary>
    /// <param name="rail1">Rail to sweep shapes along.</param>
    /// <param name="rail2">Rail to sweep shapes along.</param>
    /// <param name="crossSections">Shape curves.</param>
    /// <param name="crossSectionParametersRail1">Curve parameters on first rail curve. Unused if <seealso cref="UseLegacySweeper"/> is true.</param>
    /// <param name="crossSectionParametersRail2">Curve parameters on second rail curve. Unused if <seealso cref="UseLegacySweeper"/> is true.</param>
    /// <param name="refitTolerance">Refit tolerance.</param>
    /// <returns>Array of Brep sweep results.</returns>
    /// <since>5


    slog.Error(getErrMsg(err), slog.String("article_uuid", article))
      }
    }()
  }

  writers.Wait()

  if !r.closed() {
    slog.Info("resetting article views cache")

    r.articleViewsCache = articleViewsCache{}
  }

  if err := tx.Commit(); nil != err {
    slog.Error(getErrMsg(err))
  }
}

// views returns the cached views of the given article.
func (r *ArchiveRepository) views(article string) int64 {
  r.mu.RLock()
  defer r.mu.RUnlock()

  metadata, cached := r.articleViewsCache[article]

  if cached {
    return metadata.views
  }

  return 0
}

// VisitorKey is the key that I use to get the remote IP
// address which represents a visitor.
const VisitorKey string = "visitor-ip"

// incrementViews increments the views counter of the given article,
func (r *ArchiveRepository) incrementViews(ctx context.Context, article string) {
  r.mu.Lock()
  defer r.mu.Unlock()

  var (
    value         = ctx.Value(VisitorKey)
    ip    visitor = ""
  )

  if "" != value {
    ip = visitor(value.(string))
  }

  if _, isCached := r.articleViewsCache[article]; !isCached {
    slog.Info("caching article views count", slog.String("article_uuid", article))

    watchers := make(map[visitor]struct{})
    watchers[ip] = struct{}{}

    r.articleViewsCache[article] = &entry{
      watchers: watchers,
      views:    1,
    }

    return
  }

  if "" == ip {
    r.articleViewsCache[article].views++
    return
  }

  if _, hasViewed := r.articleViewsCache[article].watchers[ip]; !hasViewed {
    r.articleViewsCache[article].watchers[ip] = struct{}{}
    r.articleViewsCache[article].views++
  }
}

// cleanBrokenLinks is a goroutine that cleans up shareable links that
// are no longer valid because have already expired.
func (r *ArchiveRepository) cleanBrokenLinks() {
  r.cleanOnce.Do(func() {
    ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
    defer cancel()

    checkThereAreBrokenLinksQuery := `
    SELECT count (*)
      FROM "archive"."article_link"
     WHERE "expires_at" <= current_timestamp;`

    nbroken := 0

    err := r.db.QueryRowContext(ctx, checkThereAreBrokenLinksQuery).Scan(&nbroken)

    if nil != err {
      slog.Error(getErrMsg(err))
    }

    if 0 == nbroken {
      return
    }

    attempts := 1
    anew := func() { attempts++ }
    done := func() bool { return attempts > 3 }

  again:
    slog.Info("trying to clear all broken shareable links",
      slog.Int("broken_links", nbroken),
      slog.Int("attempt", attempts))

    tx, err := r.db.BeginTx(context.Background(), &sql.TxOptions{Isolation: sql.LevelSerializable})

    if nil != err {
      slog.Error(getErrMsg(err))

      anew()
      if done() {
        return
      }

      goto again
    }

    defer tx.Rollback()

    removeBrokenLinksQuery := `
    DELETE FROM "archive"."article_link"
          WHERE "expires_at" <= current_timestamp;`

    ctx, cancel = context.WithTimeout(context.Background(), 30*time.Second)
    defer cancel()

    _, err = tx.ExecContext(ctx, removeBrokenLinksQuery)

    if nil != err {
      slog.Error(getErrMsg(err))

      anew()
      if done() {
        return
      }

      goto again
    }

    if err = tx.Commit(); nil != err {
      slog.Error(getErr


47.2 26-90.6zM544 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64z"],"apple-whole":[448,512,[127822,127823,"apple-alt"],"f5d1","M224 112c-8.8 0-16-7.2-16-16V80c0-44.2 35.8-80 80-80h16c8.8 0 16 7.2 16 16V32c0 44.2-35.8 80-80 80H224zM0 288c0-76.3 35.7-160 112-160c27.3 0 59.7 10.3 82.7 19.3c18.8 7.3 39.9 7.3 58.7 0c22.9-8.9 55.4-19.3 82.7-19.3c76.3 0 112 83.7 112 160c0 128-80 224-160 224c-16.5 0-38.1-6.6-51.5-11.3c-8.1-2.8-16.9-2.8-25 0c-13.4 4.7-35 11.3-51.5 11.3C80 512 0 416 0 288z"],"kitchen-set":[576,512,[],"e51a","M240 144A96 96 0 1 0 48 144a96 96 0 1 0 192 0zm44.4 32C269.9 240.1 212.5 288 144 288C64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112h71.8c8.8-9.8 21.6-16 35.8-16H496c26.5 0 48 21.5 48 48s-21.5 48-48 48H392c-14.2 0-27-6.2-35.8-16H284.4zM144 80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c13.3 0 24 10.7 24 24v8h96c13.3 0 24 10.7 24 24s-10.7 24-24 24H280c-13.3 0-24-10.7-24-24s10.7-24 24-24h96v-8c0-13.3 10.7-24 24-24zM288 464V352H512V464c0 26.5-21.5 48-48 48H336c-26.5 0-48-21.5-48-48zM48 320h80 16 32c26.5 0 48 21.5 48 48s-21.5 48-48 48H160c0 17.7-14.3 32-32 32H64c-17.7 0-32-14.3-32-32V336c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16H160v32h16zM24 464H200c13.3 0 24 10.7 24 24s-10.7 24-24 24H24c-13.3 0-24-10.7-24-24s10.7-24 24-24z"],r:[320,512,[114],"52","M64 32C28.7 32 0 60.7 0 96V288 448c0 17.7 14.3 32 32 32s32-14.3 32-32V320h95.3L261.8 466.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176c0-79.5-64.5-144-144-144H64zM176 256H64V96H176c44.2 0 80 35.8 80 80s-35.8 80-80 80z"],"temperature-quarter":[320,512,["temperature-1","thermometer-1","thermometer-quarter"],


it to the hook procedure. For all other messages, the hook procedure receives the message first. Then, the return value of the hook procedure determines whether the default dialog procedure processes the message or ignores it.

If the hook procedure processes the WM_CTLCOLORDLG message, it must return a valid brush handle for painting the background of the dialog box. In general, if the hook procedure processes any WM_CTLCOLOR* message, it must return a valid brush handle for painting the background of the specified control.

Do not call the EndDialog function from the hook procedure. Instead, the hook procedure can call the PostMessage function to post a WM_COMMAND message with the IDABORT value to the dialog box procedure. Posting IDABORT closes the dialog box and causes the dialog box function to return FALSE. If you need to know why the hook procedure closed the dialog box, you must provide your own communication mechanism between the hook procedure and your application.

You can subclass the standard controls of a common dialog box. However, the dialog box procedure may also subclass the controls. Because of this, you should subclass controls when your hook procedure processes the WM_INITDIALOG message. This ensures that your subclass procedure receives the control-specific messages before the subclass procedure set by the dialog box procedure.

## -see-also

Common Dialog Box Library

Conceptual

EndDialog

FINDREPLACE

FindText

PostMessage

Reference

ReplaceText

WM_CTLCOLORDLG

WM_INITDIALOG---
UID: NF:commdlg.IPrintDialogCallback.SelectionChange
title: IPrintDialogCallback::SelectionChange (commdlg.h)
description: Called by PrintDlgEx when the user selects a different printer from the list of installed printers on the General page of the Print Property Sheet.
helpviewer_keywords: ["IPrintDialogCallback interface [Dialog Boxes]","SelectionChange method","IPrintDialogCallback.SelectionChange","IPrintDialogCallback::SelectionChange","SelectionChange","SelectionChange method [Dialog Boxes]","SelectionChange method [Dialog Boxes]","IPrintDialogCallback interface","_win32_IPrintDialogCallback_SelectionChange","_win32_iprintdialogcallback_selectionchange_cpp","commdlg/IPrintDialogCallback::SelectionChange","dlgbox.iprintdialogcallback_selectionchange","winui._win32_iprintdialogcallback_selectionchange"]
old-location: dlgbox\iprintdialogcallback_selectionchange.htm
tech.root: dlgbox
ms.assetid: VS|winui|~\winui\windowsuserinterface\userinput\comm


www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg20" viewBox="0 0 169.33334 169.33333" height="640" width="640"><defs id="defs14"><linearGradient id="linearGradient1128"><stop style="stop-color:#2880c1;stop-opacity:1" offset="0" id="stop1124" /><stop style="stop-color:#26b793;stop-opacity:1" offset="1" id="stop1126" /></linearGradient><linearGradient id="linearGradient1026"><stop id="stop1022" offset="0" style="stop-color:#2880c1;stop-opacity:1" /><stop id="stop1024" offset="1" style="stop-color:#26b793;stop-opacity:.97083336" /></linearGradient><linearGradient gradientTransform="translate(-9.0871639,-0.80180858)" gradientUnits="userSpaceOnUse" y2="256.77591" x2="168.91434" y1="256.77591" x1="84.189896" id="linearGradient932" xlink:href="#linearGradient1026" /><linearGradient gradientUnits="userSpaceOnUse" y2="255.88335" x2="163.04314" y1="255.88335" x1="83.795662" id="linearGradient1122" xlink:href="#linearGradient1128" /><linearGradient y2="255.88335" x2="163.04314" y1="255.88335" x1="83.795662" gradientUnits="userSpaceOnUse" id="linearGradient1160" xlink:href="#linearGradient1128" /><linearGradient y2="255.88335" x2="163.04314" y1="255.88335" x1="83.795662" gradientUnits="userSpaceOnUse" id="linearGradient1162" xlink:href="#linearGradient1128" /><linearGradient y2="255.88335" x2="163.04314" y1="255.88335" x1="83.795662" gradientUnits="userSpaceOnUse" id="linearGradient1164" xlink:href="#linearGradient1128" /><linearGradient y2="255.88335" x2="163.04314" y1="255.88335" x1="83.795662" gradientUnits="userSpaceOnUse" id="linearGradient1166" xlink:href="#linearGradient1128" /><linearGradient y2="255.88335" x2="163.04314" y1="255.88335" x1="83.795662" gradientUnits="userSpaceOnUse" id="linearGradient1168" xlink:href="#linearGradient1128" /><linearGradient y2="255.88335" x2="163.04314" y1="255.88335" x1="83.795662" gradientUnits="userSpaceOnUse" id="linearGradient1170" xlink:href="#linearGradient1128" /><linearGradient y2="255.88335" x2="163.04314" y1="255.88335" x1="83.795662" gradientUnits="userSpaceOnUse" id="linearGradient1172" xlink:href="#linearGradient1128" /><linearGradient gradientTransform="matrix(1.0715473,0,0,0.74752329,-20.311107,2.4777858)" gradientUnits="userSpaceOnUse" y2="257.31247" x2="77.319756" y1="257.31247" x1="43.34914" id="linearGradient1195" xlink:href="#linearGradient1128" /></defs><


7] = {"天文台", nil, nil},
[13609] = {"霍迪尔的徽记", nil, nil},
[13610] = {"托里姆的徽记", nil, nil},
[13611] = {"米米尔隆的徽记", nil, nil},
[13614] = {"奥尔加隆", nil, nil},
[13616] = {"冬之利刃", nil, nil},
[13622] = {"远古的历史", nil, {"将瓦兰奈尔的碎片拿到奥杜尔的档案馆控制台那里去。"}},
[13625] = {"学习骑战", nil, nil},
[13627] = {"砍木头", nil, nil},
[13629] = {"瓦兰奈尔，远古王者之锤", nil, nil},
[13631] = {"结果好，一切都好", nil, {"将回复代码阿尔法交给达拉然的罗宁。"}},
[13633] = {"西部荒野的黑骑士？", nil, nil},
[13634] = {"银松森林的黑骑士？", nil, nil},
[13641] = {"先知的水晶", nil, nil},
[13643] = {"死者讲述的故事", nil, nil},
[13649] = {"Justin's Fun Test", nil, {"Use the Complimentary Brewfest Sampler to hit S.T.O.U.T. 5 times, then talk to Boxey Boltspinner."}},
[13654] = {"怪异的侍从", nil, nil},
[13662] = {"获得信任", nil, nil},
[13663] = {"黑骑士的命令", nil, nil},
[13664] = {"黑骑士之死", nil, nil},
[13665] = {"总决赛", nil, nil},
[13666] = {"冠军的利剑", nil, nil},
[13667] = {"银色锦标赛", nil, nil},
[13668] = {"银色锦标赛", nil, nil},
[13669] = {"珍贵的武器", nil, nil},
[13670] = {"冬之利刃", nil, nil},
[13671] = {"实战训练", nil, nil},
[13672] = {"迎接挑战", nil, nil},
[13673] = {"冠军的利剑", nil, nil},
[13674] = {"珍贵的武器", nil, nil},
[13675] = {"冬之利刃", nil, nil},
[13676] = {"实战训练", nil, nil},
[13677] = {"学习骑战", nil, nil},
[13678] = {"迎接挑战", nil, nil},
[13679] = {"候选者的挑战", nil, nil},
[13680] = {"候选者的挑战",


}
    }
    case "clear": {
      return {
        values: initialState
      }
    }
    default:
      return {
        ...state
      }
  }
}
import { List } from './list.model';
import { TypedList } from './typed-list.model';

export class StringList extends TypedList<string> {
    list: string[];

    constructor(list: string[] = null) {
        super(list);
    }

    isEmpty(element: string) {
        return element === '';
    }
}
import { Medicine } from "./../../interfaces/medicine";
import { MEDICINES } from "./mock-medicines";

export class MedicineService {

    public getMedicines() {
        return MEDICINES;
    }

    public getMedicine(id) {
        return MEDICINES.find(medicine => medicine.id == id);
    }

    public addMedicine(form) {
        var medicine: Medicine;
        medicine = form.value;
        console.log(medicine);
        MEDICINES.push(medicine);
    }

    public deleteMedicine(id) {
        var medicine = MEDICINES.map(function (item) { return item.id; }).indexOf(id);
        MEDICINES.splice(medicine, 1);
    }
}import Carrinho from "../../exercicios/ex4CarrinhoDeCompra/Carrinho";
import Item from "../../exercicios/ex4CarrinhoDeCompra/Item";
import Produto from "../../exercicios/ex4CarrinhoDeCompra/Produto";
import Usuario from "../../exercicios/ex4CarrinhoDeCompra/Usuario";

let carrinho: Carrinho;
let produto1: Produto;
let produto2: Produto;

describe('Exercício 4 - Carrinho', () => {

  beforeEach(() => {
    carrinho = new Carrinho(new Usuario("Samuel", "88340158"));

    produto1 = new Produto("Celular", 2990.90);
    produto2 = new Produto("Notebook", 8990.90);
  });

  it('pegar itens do carrinho quando está vazio', () => {
    const resultado: number = carrinho.getItens().length;

    expect(resultado).toBe(0);
  });

  it('adicionar produto ao carrinho vazio', () => {
    carrinho.addProduto(produto1);

    const resultado: number = carrinho.getItens().length;

    expect(resultado).toBe(1);
  });

  it('adicionar vários produtos ao mesmo tempo', () => {
    const produtos: Produto[] = [];

    produtos.push(produto1);
    produtos.push(produto2);

    carrinho.addProdutos(produtos);

    const resultado: number = carrinho.getItens().length;

    expect(resultado).toBe(2);
  });

  it('adicionar produto repetido carrinho', () => {
    carrinho.addProduto(produto1);
    carrinho.addProduto(produto1);

    const resultado: number = carrinho.getItens().length;

    expect(resultado).toBe(1);
  });

  it('adicionar novo produto ao carrinho', () => {
    carrinho.addProduto(produto1);
    carrinho.addProduto(produto2);

    const resultado: number = carrinho.getItens().length;

    expect(resultado).toBe(2);
  });

  it('produto existe no carrinho', () => {
    carrinho.addProduto(produto1);
    carrinho.addProduto(produto2);

    const resultado: number = carrinho.indexDoItem(produto2.ge


() == ObjCPropertyImplDecl::Dynamic)
    return; // FIXME: is this correct?

  // Generate the 'getter' function.
  ObjCPropertyDecl *PD = PID->getPropertyDecl();
  ObjCIvarDecl *OID = PID->getPropertyIvarDecl();

  if (!OID)
    return;

  unsigned Attributes = PD->getPropertyAttributes();
  if (PID->getGetterMethodDecl() && !PID->getGetterMethodDecl()->isDefined()) {
    bool GenGetProperty =
        !(Attributes & ObjCPropertyAttribute::kind_nonatomic) &&
        (Attributes & (ObjCPropertyAttribute::kind_retain |
                       ObjCPropertyAttribute::kind_copy));
    std::string Getr;
    if (GenGetProperty && !objcGetPropertyDefined) {
      objcGetPropertyDefined = true;
      // FIXME. Is this attribute correct in all cases?
      Getr = "\nextern \"C\" __declspec(dllimport) "
            "id objc_getProperty(id, SEL, long, bool);\n";
    }
    RewriteObjCMethodDecl(OID->getContainingInterface(),
                          PID->getGetterMethodDecl(), Getr);
    Getr += "{ ";
    // Synthesize an explicit cast to gain access to the ivar.
    // See objc-act.c:objc_synthesize_new_getter() for details.
    if (GenGetProperty) {
      // return objc_getProperty(self, _cmd, offsetof(ClassDecl, OID), 1)
      Getr += "typedef ";
      const FunctionType *FPRetType = nullptr;
      RewriteTypeIntoString(PID->getGetterMethodDecl()->getReturnType(), Getr,
                            FPRetType);
      Getr += " _TYPE";
      if (FPRetType) {
        Getr += ")"; // close the precedence "scope" for "*".

        // Now, emit the argument types (if any).
        if (const FunctionProtoType *FT = dyn_cast<FunctionProtoType>(FPRetType)){
          Getr += "(";
          for (unsigned i = 0, e = FT->getNumParams(); i != e; ++i) {
            if (i) Getr += ", ";
            std::string ParamStr =
                FT->getParamType(i).getAsString(Context->getPrintingPolicy());
            Getr += ParamStr;
          }
          if (FT->isVariadic()) {
            if (FT->getNumParams())
              Getr += ", ";
            Getr += "...";
          }
          Getr += ")";
        } else
          Getr += "()";
      }
      Getr += ";\n";
      Getr += "return (_TYPE)";
      Getr += "objc_getProperty(self, _cmd, ";
      RewriteIvarOffsetComputation(OID, Getr);
      Getr += ", 1)";
    }
    else
      Getr += "return " + getIvarAccessString(OID);
    Getr += "; }";
    InsertText(onePastSemiLoc, Getr);
  }

  if (PD->isReadOnly() || !PID->getSetterMethodDecl() ||
      PID->getSetterMethodDecl()->isDefined())
    return;

  // Generate the 'setter' function.
  std::string Setr;
  bool GenSetProperty = Attributes & (ObjCPropertyAttribute::kind_retain |
                                      ObjCPropertyAttribute::kind_copy);
  if (GenSetProperty && !objcSetPropertyDefined) {
    objcSetPropertyDefined = true;
    // FIXME. Is this attribute correct in all cases?
    Setr = "\nextern \"C\" __declspec(dllimport) "
    "void objc_setProperty (id, SEL, long, id, bool, bool);\n";
  }

  RewriteObjCMethodDecl(OID->getContainingInterface(),
                        PID->getSetterMethodDecl(), Setr);
  Setr += "{ ";
  // Synthesize an explicit cast to initialize the ivar.
  // See objc-act.c:objc_synthesize_new_setter() for details.
  i


-beelden","gizmo.about.tools.dataAnalysis":"Gegevensanalyse","gizmo.about.tools.memory":"Geheugen","gizmo.about.tools.memoryDescription":"Leert van eerdere chats om toekomstige gesprekken beter te maken","gizmo.about.trendingRank":"nr. {rank}","gizmo.actions.actionsGptHelp":"Vraag hulp van ActionsGPT","gizmo.actions.blankExampleTitle":"Lege sjabloon","gizmo.actions.examples":"Voorbeelden","gizmo.actions.petStoreExampleTitle":"Dierenwinkel (YAML)","gizmo.actions.weatherExampleTitle":"Weer (JSON)","gizmo.advancedLabel":"Configureren","gizmo.anonLandingPage.login":"Registreer je om te chatten","gizmo.anonLandingPage.report":"Rapporteer illegale inhoud","gizmo.anonLandingPage.signup":"Registreren","gizmo.anonLandingPage.subtext":"Vereist ChatGPT Plus","gizmo.anyoneWithLink":"Iedereen met een link","gizmo.appealNeededLabel":"Omdat deze GPT eerder mogelijk in strijd was met ons beleid, moet je een bezwaar indienen om de GPT op dit niveau beschikbaar te stellen.","gizmo.appeals.appealAvailableText":"In plaats daarvan kun je bezwaar maken tegen deze beslissing, waarna wij zo snel mogelijk reageren. Of je kunt publiceren met \'Alleen ik\' en deze GPT priv\xe9 gebruiken.","gizmo.appeals.appealButton":"Bezwaar maken","gizmo.appeals.appealModalTitle":"Bezwaar maken","gizmo.appeals.appealReasonText":"Geef een reden waarom deze GPT volgens jou niet in strijd is met ons beleid en gepubliceerd moet worden","gizmo.appeals.appealReviewingHeader":"Je bezwaar wordt beoordeeld","gizmo.appeals.appealSentModalText":"Tijdens de beoordeling kun je “{gizmoName}” blijven gebruiken als jouw priv\xe9-GPT, maar kun je deze niet bijwerken of delen met anderen.","gizmo.appeals.appealSubmittedModalTitle":"Bezwaar ingediend","gizmo.appeals.appealSubmittedText":"Je bezwaar is ingediend. Wij zullen zo snel mogelijk reageren.","gizmo.appeals.backButton":"Terug","gizmo.appeals.cancelAppealButton":"Bezwaar annuleren","gizmo.appeals.closeButton":"Sluiten","gizmo.appeals.contunueButton":"Doorgaan","gizmo.appeals.conversationStarterFieldName":"Gespreksopening","gizmo.appeals.customActionsFieldName":"Aangepaste handelingen","gizmo.appeals.fileFieldName":"Bestand","gizmo.appeals.gizmoCombinedContentFieldName":"Algemene GPT-configuratie","gizmo.appeals.gizmoDescriptionFieldName":"Beschrijving","gizmo.appeals.gizmoInstructionsFieldName":"Instructies","gizmo.appeals.gizmoNameFieldName":"Naam","gizmo.appeals.gizmoWelcomeMessageFieldName":"Welkomstbericht","gizmo.appeals.learnMore":"Meer info","gizmo.appeals.linkRecipientModerationText":"Je GPT kan niet openbaar worden gedeeld omdat deze in strijd is met ons {usagePolicyLink}gebruiksbeleid{usagePolicyLink}.","gizmo.appeals.marketplaceRecipientModerationText":"Je GPT kan niet worden weergegeven op de pagina GPT\'s onderzoeken omdat deze in strijd is met ons {usagePolicyLink}gebruiksbeleid{usagePolicyLink}.","gizmo.appeals.privateRecipientModerationText":"Je GPT kan niet worden bijgewerkt omdat deze in strijd is met ons {usagePolicyLink}g


   fun sendFullInventoryUpdate() {
        if(player.currentlyOpenScreen?.isFullscreen != true) {
            for (i in 0 until INNER_INVENTORY_SIZE) {
                sendInventoryUpdate(i)
            }
        }
        player.inventory.cursorItem.triggerUpdate()
        player.equipment.triggerUpdate()
    }

    fun drop(itemStack: ItemStack): Boolean {
        val player = entity as Player

        val event = PlayerDropItemEvent(player, itemStack, getPlayerEventContext(player))
        Events.dispatch(event)

        if (itemStack.noxesiumImmovable) return true

        if (event.cancelled) {
            sendFullInventoryUpdate()
            return true
        }

        if (ConfigManager.config.implementationConfig.itemDroppingAndPickup) {
            player.world.spawnEntity(ItemDropEntity(player.location, itemStack))
        }
        return false
    }
}

fun Player.give(itemStack: ItemStack): Boolean {
    return this.inventory.give(itemStack)
}

fun Player.give(vararg itemStack: ItemStack) {
    itemStack.forEach(::give)
}

fun Player.give(vararg items: Item) {
    items.forEach { item ->
        give(item.toItemStack())
    }
}

fun Player.clearInventory() {
    this.inventory.clear()
}

data class DragButtonInventoryActionData(
    val type: DragButtonInventoryAction,
    val item: ItemStack,
    val slots: MutableList<Int> = mutableListOf()
)

enum class DragButtonInventoryAction {
    LEFT,
    RIGHT,
    MIDDLE
}package io.github.dockyardmc.registry

import io.github.dockyardmc.registry.registries.DamageTypeRegistry

// THIS CLASS IS AUTOMATICALLY GENERATED BY THE REGISTRY DATA GENERATOR
object DamageTypes {
    val ARROW = DamageTypeRegistry["minecraft:arrow"]
    val BAD_RESPAWN_POINT = DamageTypeRegistry["minecraft:bad_respawn_point"]
    val CACTUS = DamageTypeRegistry["minecraft:cactus"]
    val CAMPFIRE = DamageTypeRegistry["minecraft:campfire"]
    val CRAMMING = DamageTypeRegistry["minecraft:cramming"]
    val DRAGON_BREATH = DamageTypeRegistry["minecraft:dragon_breath"]
    val DROWN = DamageTypeRegistry["minecraft:drown"]
    val DRY_OUT = DamageTypeRegistry["minecraft:dry_out"]
    val ENDER_PEARL = DamageTypeRegistry["minecraft:ender_pearl"]
    val EXPLOSION = DamageTypeRegistry["minecraft:explosion"]
    val FALL = DamageTypeRegistry["minecraft:fall"]
    val FALLING_ANVIL = DamageTypeRegistry["minecraft:falling_anvil"]
    val FALLING_BLOCK = DamageTypeRegistry["minecraft:falling_block"]
    val FALLING_STALACTITE = DamageTypeRegistry["minecraft:falling_stalactite"]
    val FIREBALL = DamageTypeRegistry["minecraft:fireball"]
    val FIREWORKS = DamageTypeRegistry["minecraft:fireworks"]
    val FLY_INTO_WALL = DamageTypeRegistry["minecraft:fly_into_wall"]
    val FREEZE = DamageTypeRegistry["minecraft:freeze"]
    val GENERIC = DamageTypeRegistry["minecraft:generic"]
    val GENERIC_KILL = DamageTypeRegistry["minecraft:generic_kill"]
    val HOT_FLOOR = DamageTypeRegistry["minecraft:hot_floor"]
    val IN_FIRE = DamageTypeRegistry["minecraft:in_fire"]
    val IN_WALL = DamageTypeRegistry["minecraft:in_wall"]
    val INDIRECT_MAGIC = DamageTypeRegistry["minecraft:indirect_magic"]
    val LAVA = DamageTypeRegistry["minecraft:lava"]
    val LIGHTNING_BOLT = DamageTypeRegistry["minecraft:lightning_bolt"]
    val MACE_SMASH = DamageTypeRegistry["minecraft:mace_smash"]
    val MAGIC = DamageTypeRegistry["minecraft:magic"]
    val MOB_ATT


    async def handler_sales(event):
        sale_data = parse_sale_message(event.message)
        if sale_data:
            print(f"Обрабатывается продажа подарка: {sale_data['gift_name']} по цене: {sale_data['price_ton']} TON")
            await insert_sale_data(sale_data)

    # Обработчик сообщений с обновлением цен (Gift Floor Prices)
    @client.on(events.NewMessage(chats=FLOOR_CHANNEL))
    async def handler_floor(event):
        # Смотрим сырое сообщение
        print("New floor message:", event.message.text)

        floor_data = parse_floor_message(event.message)
        if floor_data:
            print(f"Обновление цены: {floor_data}")
            # Допустим, записываем в БД
            await insert_gift(floor_data["gift_name"])
            await insert_price_data(floor_data)
        else:
            print("Сообщение не распознано парсером.")

    # Запускаем клиент до отключения
    await client.run_until_disconnected()

if __name__ == '__main__':
    asyncio.run(main())


mmon/notes.svg)說明: 按鍵映射允許您選擇某一種鍵盤快捷鍵。您可以使用標準快捷鍵、Emacs快捷鍵、或自訂快捷鍵，以符合您的使用習慣。

#### 進階設定

1. 單擊 ![icon_menu](../common/icon_menu.svg)> **設定**。
2. 在 **進階設定** 選項，您可以設定：
   - 視窗大小：一般、最大或全螢幕。
   - Tab寬度：Tab縮排所占用的空間大小。

### 主題

視窗主題包含亮色主題、暗色主題和系統主題。

1. 在文字編輯器介面，單擊![icon_menu](../common/icon_menu.svg)。
2. 單擊 **主題**，選擇一個主題顏色。

### 說明

查看說明手冊，進一步了解和使用文字編輯器。

1. 在文字編輯器介面，單擊 ![icon_menu](../common/icon_menu.svg)。
2. 單擊 **說明**。
3. 查看文字編輯器的說明手冊。

### 關於

1. 在文字編輯器介面，單擊 ![icon_menu](../common/icon_menu.svg)。
2. 單擊 **關於**。
3. 查看文字編輯器的版本和介紹。

### 退出

1. 在文字編輯器介面，單擊 ![icon_menu](../common/icon_menu.svg)。
2. 單擊 **退出**。# 文字編輯器|deepin-editor|

## 概述

文字編輯器是一個簡單的文字編輯工具。您可以用它書寫簡單的文字檔案，也可以使用它的進階特性，讓它成為一個程式碼編輯工具，支援程式碼語法突顯。

![overview](fig/overview.png)

## 使用入門

### 執行文字編輯器

1. 單擊任務欄上的啟動器圖示 ![deepin_launcher](../common/deepin_launcher.svg)，進入啟動器介面。
2. 上下滾動滑鼠滾輪瀏覽或透過搜尋，找到文字編輯器圖示 ![deepin_editor](../common/deepin_editor.svg)并打開。
3. 在啟動器中，右鍵單擊![deepin_editor](../common/deepin_editor.svg)，您可以：

 - 單擊 **建立桌面捷徑**，在桌面建立捷徑。
 - 單擊 **釘選到Dock**，將應用程式固定到Dock。
 -


odtotalffc = 0;

    for(int i=0; i<4; i++)
    {
        if(get_bit(quest_rules,qr_DMGCOMBOPRI))
        {
            if(hp_modtotalffc >= 0)
                hp_modtotalffc = zc_min(hp_modtotalffc, hp_mod[i]);
            else if(hp_mod[i] < 0)
                hp_modtotalffc = zc_max(hp_modtotalffc, hp_mod[i]);
        }
        else
            hp_modtotalffc = zc_min(hp_modtotalffc, hp_mod[i]);
    }

    int hp_modmin = zc_min(hp_modtotal, hp_modtotalffc);

    bool global_ring = (get_bit(quest_rules,qr_RINGAFFECTDAMAGE) != 0);
    bool current_ring = ((tmpscr->flags6&fTOGGLERINGDAMAGE) != 0);

    int itemid = current_item_id(itype_boots);

    bool bootsnosolid = itemid >= 0 && 0 != (itemsbuf[itemid].flags & ITEM_FLAG1);

    if(hp_modmin<0)
    {
        if((itemid<0) || (tmpscr->flags5&fDAMAGEWITHBOOTS) || (4<<current_item_power(itype_boots)<(abs(hp_modmin))) || (solid && bootsnosolid) || !checkmagiccost(itemid))
        {
            if(NayrusLoveShieldClk<=0)
            {
                int ringpow = ringpower(-hp_modmin);
                game->set_life(zc_max(game->get_life()-(global_ring!=current_ring ? ringpow:-hp_modmin),0));
            }

            hitdir = (dir^1);

            if (action != rafting && action != freeze)
            {
                if (action == swimming || hopclk == 0xFF)
                    action = swimhit;
                else
                    action = gothit;
            }

            hclk=48;

            if(charging > 0 || spins > 0 || attack == wSword || attack == wHammer)
            {
                spins = charging = attackclk = 0;
                attack=none;
                tapping = false;
            }

            sfx(WAV_OUCH,pan(int(x)));
            return true;
        }
        else paymagiccost(itemid); // Boots are successful
    }

    return false;
}

void LinkClass::hitlink(int hit2)
{
//printf("Stomp check: %d <= 12, %d < %d\n", int((y+16)-(((enemy*)guys.spr(hit2))->y)), (int)falling_oldy, (int)y);
    if(current_item(itype_stompboots) && checkmagiccost(current_item(itype_stompboots)) && (stomping ||
            (z > (((enemy*)guys.spr(hit2))->z)) ||
            ((isSideview() && (y+16)-(((enemy*)guys.spr(hit2))->y)<=14) && falling_oldy<y)))
    {
        int itemid = current_item_id(itype_stompboots);
        paymagiccost(itemid);
        hit_enemy(hit2,wStomp,itemsbuf[itemid].power*DAMAGE_MULTIPLIER,x,y,0,itemid);

        if(itemsbuf[itemid].flags & ITEM_DOWNGRADE)
            game


组的杰作“当前运动中的十个关系”递给了陶铸。）

   陶铸：（接过“十个关系”一看醒目的标题立即说）这个我看过是错的（热烈鼓掌高呼：战无不胜的毛泽东思想万岁！毛主席万岁！长达二分钟之久）是南京工学院的吗？（众答：是！）（问许家屯）你们批判过吗？（许摇头，陶指着“十个关系”）这是错误的，这里面有许多东西是不正确的，有些东西是似是而非的，总的来说，对运动是不利的，没有好处，（问我们）你们批判过吗？（众答：我们早就批判过了）可以批判吗？（陶铸一边看“十个关系”一边点着“十个关系”的错误、一条条地给许家屯看，许频频点头）

   同学：某些地区的一些别有用心的人，将符合其口味的“十个关系”印成红色面子，象“学习十六条手册”一样，当作“新十条”来学习，（汪东兴同志感到很惊异）下面不署名，蒙混群众，影响极坏。

   汪：（拿出“学习十六条手册”对我们说）是象这样的吗？

   同学：象是这样的，（接着汪东兴将这本“学习十六条手册”送给我们的一位同学）

   同学：有人放空气说，十一中全会以后江渭清升为中央委员、华东局第一书记、南京军区第一政委。还说江渭清是江青同志的哥哥呢？这些事情是否确实？

   陶：（问了一下汪东兴同志，然后对我们说）还是候补委员，没有提升么！没有提升为华东局第一书记，这是造谣，你们以后不要轻信这些谣言，你们可以批驳么！江青和江渭清，一个是山东，一个是湖南，怎么会说得起来呀！（众笑）

   （下面，南京市农村社教工作团揭发了在文化大革命中省市委调查工作队围攻红卫兵，保省委保市委的事实。同学们揭发了省市委挑动工人斗工人、工人斗学生的情况，


            process.on(eachSignal, async () => {
                if(isFinishing) return
                isFinishing = true
                console.log("Finishing Server...")
                await this.ganglionManager.disconnect()
                console.log("Done")
            })
        })
        this.setUp()
    }

    private sendLogMessage(message : any) {
        console.log(message)
        this.sockets.forEach(eachSocket =>{
            try {
                eachSocket.send(JSON.stringify({
                    type : "MESSAGE",
                    data : message
                }))
            } catch(error) {}
        })
    }

    private async setUp() {
        let devices = new Array()
        let retryCount = 0
        while(devices.length == 0 && retryCount < 5) {
            this.sendLogMessage("Scanning...")
            devices = Array.from(await this.ganglionManager.scan())
            retryCount++
        }
        if(retryCount >= 5) {
            this.sendLogMessage("Scanning Failed... No device found")
            process.exit(1)
        }
        this.sendLogMessage("Scanning Completed.")
        try {
            await this.ganglionManager.connect(devices[0])
            this.sendLogMessage(`Successfully Connected to ${devices[0]}`)
        } catch(error) {
            this.sendLogMessage(`Unable to connect to device ${devices[0]}`)
            process.exit(1)
        }
        await this.ganglionManager.startStream()

    }

}import { Shape } from "./shape";

export class Circle implements Shape {

    constructor(private star: Shape, private square: Shape) {}

    execute() {
        console.log("Executing Circle")
        this.star.execute();
        this.square.execute();
    }

}import { default as Config } from "trailmix/config/Config.ts";
import { default as EnvConfig } from "trailmix/config/EnvConfig.ts";
import { default as FileConfig } from "trailmix/config/FileConfig.ts";
import { CommandOptions, ConfigOptions } from "trailmix/config/Config.d.ts";
import { mergeDeep } from "trailmix/common/mod.ts";
import type { LogConfigMap } from "trailmix/log/mod.ts";

/** Construct a FlagConfig
 * @example
 * // returns default FlagConfig
 * const cfg = new FlagConfig();
 * // returns named FlagConfig
 * const cfg = new FlagConfig({namespace: 'trilom', config: { consoleLevel: "DEBUG" }});
 * // update config
 * cfg.config = FlagConfig.parseFlags({consoleLevel: "ERROR" })
 * // update log
 * cfg.log = FlagConfig.parseLog();
 */
export default class FlagConfig extends Config {
  /**
   * turn a string CommandOptions into an CommandOptions
   * @param {CommandOptions} flags {consoleLevel: "DEBUG", consoleEnabled: "true" }
   * @example
   * const config: CommandOptions = FlagConfig.parseFlags({consoleLevel: "DEBUG"});
   * // returns object
   * { console: {level: "DEBUG"} }
   */
  static parseFlags(
    flags: CommandOptions = {},
  ): CommandOptions {
    let ret = {};
    for (const r in flags) {
      ret = mergeDeep(ret, FlagConfig.strParse(r, flags[r]));
    }
    return ret;
  }
  /**
   * turn a string{str}(test5TestwordTestphraseTestnameTest) into an object based on capital letters
   * while carrying a final string{value}(hello) with a string deliminator{delim}(_)
   * @param {string} str parse
   * @param {unknown} value value of key
   * @returns {CommandOptions} Usually strin


 Full Length Example', () {
    // Example 2.27 tests custom tag URIs, which this implementation currently
    // doesn't plan to support.

    test('[Example 2.28]', () {
      expectYamlStreamLoads([
        {
          'Time': '2001-11-23 15:01:42 -5',
          'User': 'ed',
          'Warning': 'This is an error message for the log file'
        },
        {
          'Time': '2001-11-23 15:02:31 -5',
          'User': 'ed',
          'Warning': 'A slightly different error message.'
        },
        {
          'DateTime': '2001-11-23 15:03:17 -5',
          'User': 'ed',
          'Fatal': 'Unknown variable "bar"',
          'Stack': [
            {
              'file': 'TopClass.py',
              'line': 23,
              'code': 'x = MoreObject("345\\n")\n'
            },
            {'file': 'MoreClass.py', 'line': 58, 'code': 'foo = bar'}
          ]
        }
      ], '''
        ---
        Time: 2001-11-23 15:01:42 -5
        User: ed
        Warning:
          This is an error message
          for the log file
        ---
        Time: 2001-11-23 15:02:31 -5
        User: ed
        Warning:
          A slightly different error
          message.
        ---
        DateTime: 2001-11-23 15:03:17 -5
        User: ed
        Fatal:
          Unknown variable "bar"
        Stack:
          - file: TopClass.py
            line: 23
            code: |
              x = MoreObject("345\\n")
          - file: MoreClass.py
            line: 58
            code: |-
              foo = bar''');
    });
  });

  // Chapter 3 just talks about the structure of loading and dumping Yaml.
  // Chapter 4 explains conventions used in the spec.

  // Chapter 5: Characters
  group('5.1: Character Set', () {
    void expectAllowsCharacter(int charCode) {
      var char = String.fromCharCodes([charCode]);
      expectYamlLoads('The character "$char" is allowed',
          'The character "$char" is allowed');
    }

    void expectAllowsQuotedCharacter(int charCode) {
      var char = String.fromCharCodes([charCode]);
      expectYamlLoads("The character '$char' is allowed",
          '"The character \'$char\' is allowed"');
    }

    void expectDisallowsCharacter(int charCode) {
      var char = String.fromCharCodes([charCode]);
      expectYamlFails('The character "$char" is disallowed');
    }

    test("doesn't include C0 control characters", () {
      expectDisallowsCharacter(0x0);
      expectDisallowsCharacter(0x8);
      expectDisallowsCharacter(0x1F);
    });

    test('includes TAB', () => expectAllowsCharacter(0x9));
    test("doesn't include DEL", () => expectDisallowsCharacter(0x7F));

    test("doesn't include C1 control characters", () {
      expectDisallowsCharacter(0x80);
      expectDisallowsCharacter(0x8A);
      expectDisallowsCharacter(0x9F);
    });

    test('includes NEL', () => expectAllowsCharacter(0x85));

    group('within quoted strings', () {
      test('includes DEL', () => expectAllowsQuotedCharacter(0x7F));
      test('includes C1 control characters', () {
        expectAllowsQuotedCharacter(0x80);
        expectAllowsQuotedCharacter(0x8A);
        expectAllowsQuotedCharacter(0x9F);
      });
    });


, QuietShutdown) {
  bssl::UniquePtr<SSL_CTX> client_ctx(SSL_CTX_new(TLS_method()));
  bssl::UniquePtr<SSL_CTX> server_ctx =
      CreateContextWithTestCertificate(TLS_method());
  ASSERT_TRUE(client_ctx);
  ASSERT_TRUE(server_ctx);
  SSL_CTX_set_quiet_shutdown(server_ctx.get(), 1);
  bssl::UniquePtr<SSL> client, server;
  ASSERT_TRUE(ConnectClientAndServer(&client, &server, client_ctx.get(),
                                     server_ctx.get()));

  // Quiet shutdown is enabled, so |SSL_shutdown| on the server should
  // immediately return that bidirectional shutdown "completed".
  EXPECT_EQ(SSL_shutdown(server.get()), 1);

  // Shut down writes so the client gets an EOF.
  EXPECT_TRUE(BIO_shutdown_wr(SSL_get_wbio(server.get())));

  // Confirm no close notify was actually sent. Client reads should report a
  // transport EOF, not a close_notify. (Both have zero return, but
  // |SSL_get_error| is different.)
  char buf[1];
  int ret = SSL_read(client.get(), buf, sizeof(buf));
  EXPECT_EQ(ret, 0);
  EXPECT_EQ(SSL_get_error(client.get(), ret), SSL_ERROR_SYSCALL);

  // The server believes bidirectional shutdown completed, so reads should
  // replay the (simulated) close_notify.
  ret = SSL_read(server.get(), buf, sizeof(buf));
  EXPECT_EQ(ret, 0);
  EXPECT_EQ(SSL_get_error(server.get(), ret), SSL_ERROR_ZERO_RETURN);
}

TEST(SSLTest, InvalidSignatureAlgorithm) {
  bssl::UniquePtr<SSL_CTX> ctx(SSL_CTX_new(TLS_method()));
  ASSERT_TRUE(ctx);

  static const uint16_t kInvalidPrefs[] = {1234};
  EXPECT_FALSE(SSL_CTX_set_signing_algorithm_prefs(
      ctx.get(), kInvalidPrefs, OPENSSL_ARRAY_SIZE(kInvalidPrefs)));
  EXPECT_FALSE(SSL_CTX_set_verify_algorithm_prefs(
      ctx.get(), kInvalidPrefs, OPENSSL_ARRAY_SIZE(kInvalidPrefs)));

  static const uint16_t kDuplicatePrefs[] = {SSL_SIGN_RSA_PKCS1_SHA256,
                                             SSL_SIGN_RSA_PKCS1_SHA256};
  EXPECT_FALSE(SSL_CTX_set_signing_algorithm_prefs(
      ctx.get(), kDuplicatePrefs, OPENSSL_ARRAY_SIZE(kDuplicatePrefs)));
  EXPECT_FALSE(SSL_CTX_set_verify_algorithm_prefs(
      ctx.get(), kDuplicatePrefs, OPENSSL_ARRAY_SIZE(kDuplicatePrefs)));
}

TEST(SSLTest, ErrorStrings) {
  int warning_value = SSL3_AD_CLOSE_NOTIFY | (SSL3_AL_WARNING << 8);
  int fatal_value = SSL3_AD_UNEXPECTED_MESSAGE | (SSL3_AL_FATAL << 8);
  int unknown_value = 99999;

  EXPECT_EQ(Bytes(SSL_alert_desc_string(warning_value)), Bytes("CN"));
  EXPECT_EQ(Bytes(SSL_alert_desc_string(fatal_value)), Bytes("UM"));
  EXPECT_EQ(Bytes(SSL_alert_desc_string(unknown_value)), Bytes("UK"));

  EXPECT_EQ(Bytes(SSL_alert_type_string(warning_value)), Bytes("W"));
  EXPECT_EQ(Bytes(SSL_alert_type_string(fatal_value)), Bytes(


             IsoSprite.viewDistance(b.x, b.y, b.z, map.fCenter, map.gCenter, map.cosRotation, map.sinRotation) - b.w + 0.0f);

    @Override
    public void create() {
        // You can use LOG_INFO in development, but change this to LOG_ERROR or LOG_NONE when releasing anything.
//        Gdx.app.setLogLevel(Application.LOG_INFO);
        Gdx.app.setLogLevel(Application.LOG_ERROR);

        // We can't start playing music immediately on GWT or TeaVM backends.
        if(Gdx.app.getType() != Application.ApplicationType.WebGL)
            playMusic = true;
        // Create and play looping background music.
        backgroundMusic = Gdx.audio.newMusic(Gdx.files.internal("Komiku - Road 4 Fight.ogg"));
        backgroundMusic.setVolume(0.5f);
        backgroundMusic.setLooping(true);
        if(playMusic)
            backgroundMusic.play();

        // We draw everything as 2D graphics with a carefully determined sort order.
        batch = new SpriteBatch();

        // Loads the atlas from an internal path, in "assets/".
        atlas = new TextureAtlas(ATLAS_FILE_NAME);
        // All regions in the atlas for creatures start with "entity" and have an index.
        Array<TextureAtlas.AtlasRegion> entities = atlas.findRegions("entity");
        // Extract animations from the atlas.
        // This step will be different for every game's assets.
        animations = new Array<>(4);
        // Apologies for the duplicated lines; these use libGDX 1.13.5's preferred way of initializing an Array.
        animations.add(new Array<Animation<TextureAtlas.AtlasSprite>>(true, 16, Animation.class));
        animations.add(new Array<Animation<TextureAtlas.AtlasSprite>>(true, 16, Animation.class));
        animations.add(new Array<Animation<TextureAtlas.AtlasSprite>>(true, 16, Animation.class));
        animations.add(new Array<Animation<TextureAtlas.AtlasSprite>>(true, 16, Animation.class));
        // Entities are stored in an odd order because of the tile sheet originally used for the atlas.
        // The original tile sheet is stored in the development repo for this demo:
        // https://github.com/tommyettinger/IsometricVoxelDemo/blob/a9c31f3891567958c3a4b581772defa2e902a5af/raw-assets/isometric-trpg-originals/IsometricTRPGAssetPack_Entities.png?raw=true
        // It stores each 2-frame animation on the same row as another animation, and the next row has backwards-facing
        // versions of the forwards-facing animations above them. The tile sheet determined what indices each
        // AtlasRegion received, so we have to keep the tricky numbering convention. Your own game will probably have
        // different art anyway!
        for (int i = 0, outer = 0; i < 16; i++, outer += 8) {
            /* Index 0 is front-facing idle animations.   */
            /* Index 1 is rear-facing idle animations.    */
            /* Index 2 is front-facing attack animations. */
            /* Index 3 is rear-facing attack animations.  */
            animations.get(0).add(new Animation<>(0.4f, Array.with(new TextureAtlas.AtlasSprite(entities.get(outer  )), new TextureAtlas.AtlasSprite(entities.get(outer+1))), Animation.PlayMode.LOOP));
            animations.get(1).add(new Animation<>(0.4f, Array.with(new TextureAtlas.AtlasSprite(entities.get(outer+4)), new TextureAtlas.AtlasSprite(entities.get(outer+5))), Animation.PlayMode.LOOP));
            animations.get(2).add(new Animation<>(0.2f, Array.with(new TextureAtlas.AtlasSprite(entities.get(outer+2)), new TextureAtlas.AtlasSprite(entities.get(outer+3))), Animation.PlayMode.LOOP));
            animations.get(3).add(new Animation<>(0.2f, Array.with


        /// Default value: 30.
        /// </summary>
        public readonly int? SlowStartDuration;
        /// <summary>
        /// Indicates whether slow starts are enabled. Valid values:
        /// </summary>
        public readonly bool? SlowStartEnabled;

        [OutputConstructor]
        private ServerGroupSlowStartConfig(
            int? slowStartDuration,

            bool? slowStartEnabled)
        {
            SlowStartDuration = slowStartDuration;
            SlowStartEnabled = slowStartEnabled;
        }
    }
}


-body with-review-wrapper"> 1er detalle Malo porque se traba al momento de querer comer en el juego
 Opinión completa

  Ana Gonzalez    28 de julio de 2016

 Ma encanta Es el mejor juego del mundo
 Opinión completa

    <spa


 we don't need to guarantee that the child of it is a data
	// source, or whether the sort can be eliminated. This transformation won't be worse than previous.
	// Make sure that the aggFunc are Max or Min.
	// TODO: If there have only one Max or Min aggFunc and the other aggFuncs are FirstRow() can also use this rule. Waiting for the not null prop is maintained.
	if len(agg.AggFuncs) != 1 {
		return false
	}
	if agg.AggFuncs[0].Name != ast.AggFuncMax && agg.AggFuncs[0].Name != ast.AggFuncMin {
		return false
	}
	return true
}

// OnTransform implements Transformation interface.
// It will transform `max/min->X` to `max/min->top1->sel->X`.
func (r *EliminateSingleMaxMin) OnTransform(old *memo.ExprIter) (newExprs []*memo.GroupExpr, eraseOld bool, eraseAll bool, err error) {
	agg := old.GetExpr().ExprNode.(*plannercore.LogicalAggregation)
	childGroup := old.GetExpr().Children[0]
	ctx := agg.SCtx()
	f := agg.AggFuncs[0]

	// If there's no column in f.GetArgs()[0], we still need limit and read data from real table because the result should be NULL if the input is empty.
	if len(expression.ExtractColumns(f.Args[0])) > 0 {
		// If it can be NULL, we need to filter NULL out first.
		if !mysql.HasNotNullFlag(f.Args[0].GetType().Flag) {
			sel := plannercore.LogicalSelection{}.Init(ctx, agg.SelectBlockOffset())
			isNullFunc := expression.NewFunctionInternal(ctx, ast.IsNull, types.NewFieldType(mysql.TypeTiny), f.Args[0])
			notNullFunc := expression.NewFunctionInternal(ctx, ast.UnaryNot, types.NewFieldType(mysql.TypeTiny), isNullFunc)
			sel.Conditions = []expression.Expression{notNullFunc}
			selExpr := memo.NewGroupExpr(sel)
			selExpr.SetChildren(childGroup)
			selGroup := memo.NewGroupWithSchema(selExpr, childGroup.Prop.Schema)
			childGroup = selGroup
		}

		// Add top(1) operators.
		// For max function, the sort order should be desc.
		desc := f.Name == ast.AggFuncMax
		var byItems []*util.ByItems
		byItems = append(byItems, &util.ByItems{
			Expr: f.Args[0],
			Desc: desc,
		})
		top1 := plannercore.LogicalTopN{
			ByItems: byItems,
			Count:   1,
		}.Init(ctx, agg.SelectBlockOffset())
		top1Expr := memo.NewGroupExpr(top1)
		top1Expr.SetChildren(childGroup)
		top1Group := memo.NewGroupWithSchema(top1Expr, childGroup.Prop.Schema)
		childGroup = top1Group
	} else {
		li := plannercore.LogicalLimit{Count: 1}.Init(ctx, agg.SelectBlockOffset())
		liExpr := memo.NewGroupExpr(li)
		liExpr.SetChildren(childGroup)
		liGroup := memo.NewGroupWithSchema(liExpr, childGroup.Prop.Schema)
		childGroup = liGroup
	}

	newAgg := agg
	newAggExpr := memo.NewGroupExpr(newAgg)
	// If no data in the child, we need to return NULL instead of empty. This cannot be done by sort and limit themselves.
	// Since now there would be at most one row returned, the remained agg operator is not expensive anymore.
	newAggExpr.SetChildren(childGroup)
	newAggExpr.AddAppliedRule(r)
	return []*memo.GroupExpr{newAggExpr}, false, false, nil
}

// MergeAdjacentSelection merge adjacent selection.
type MergeAdjacentSelection struct {
	baseRule
}

// NewRuleMerge


B_R , tLDSH_R , tLDSW_R , tLDUB_R , tLDUH_R , tLDUW_R , tLDX_R
!!# 	    , tLDSB_I , tLDSH_I , tLDSW_I , tLDUB_I , tLDUH_I , tLDUW_I , tLDX_I
!!# 	    , tLDD_R , tLDD_I
!!# 	    , tLDF_R , tLDDF_R , tLDQF_R , tLDF_I , tLDDF_I , tLDQF_I
!!# 	    , tLDSBA_R , tLDSHA_R , tLDSWA_R , tLDUBA_R , tLDUHA_R , tLDUWA_R , tLDXA_R , tLDXA_I
!!# 	    , tLDFA_R , tLDDFA_R , tLDQFA_R , tLDFA_I , tLDDFA_I , tLDQFA_I
!!# 	    , tSTB_R , tSTH_R , tSTW_R , tSTX_R , tSTB_I , tSTH_I , tSTW_I , tSTX_I
!!# 	    , tSTF_R , tSTDF_R , tSTQF_R , tSTF_I , tSTDF_I , tSTQF_I
!!# 	    , tSTBA_R , tSTHA_R , tSTWA_R , tSTXA_R
!!# 	    , tSTFA_R , tSTDFA_R , tSTQFA_R , tSTFA_I , tSTDFA_I , tSTQFA_I
!!# 	    , tLDSTUB_R , tLDSTUB_I
!!# 	    , tLDSTUBA_R , tLDSTUBA_I
!!# 	    , tSWAP_R , tSWAP_I
!!# 	    , tSWAPA_R , tSWAPA_I
!!#            , -1);;
!!# 	}
!!# ;
!!#
!!# frf_uerr: mFRF_UERR
!!# 	{
!!# 	  IJ_printf ("diag.j", 380, th_wnfp, "T%y_frf_ue_%d:\n", frf_err_


 "c", "f", "c", "d", "a", "b"],
            ["e", "c", "f", "c", "f", "c", "e"],
            ["d", "a", "b", "a", "b", "a", "c"],
            ["b", "a", "d", "a", "b", "a", "b"],
            ["d", "a", "b", "a", "b", "a", "d"],
            ["d", "a", "b", "a", "b", "a", "c"],
            ["d", "a", "b", "a", "b", "a", "b"],
            ["f", "c", "f", "c", "f", "c", "e"],
            ["d", "a", "d", "a", "b", "a", "b"],
            ["e", "c", "f", "c", "e", "c", "d"],
        ]
        expected_map = {
            "d": {0, 2, 3, 4, 5, 6, 8, 9},
            "c": {0, 1, 2, 5, 7, 9},
            "f": {0, 1, 9, 7},
            "a": {0, 2, 3, 4, 5, 6, 8},
            "b": {0, 2, 3, 4, 5, 6, 8},
            "e": {1, 9, 7},
        }

        assert expected_paths == list(paths)
        assert expected_map == index_map

    def test_symmetry_with_custom_matching(self):
        print("G2 is edge (a,b) and G3 is edge (a,a)")
        print("but node order for G2 is (a,b) while for G3 it is (b,a)")

        a, b = "A", "B"
        G2 = nx.Graph()
        G2.add_nodes_from((a, b))
        G2.add_edges_from([(a, b)])
        G3 = nx.Graph()
        G3.add_nodes_from((b, a))
        G3.add_edges_from([(a, a)])
        for G in (G2, G3):
            for n in G:
                G.nodes[n]["attr"] = n
            for e in G.edges:
                G.edges[e]["attr"] = e
        match = lambda x, y: x == y

        print("Starting G2 to G3 GED calculation")
        assert nx.graph_edit_distance(G2, G3, node_match=match, edge_match=match) == 1

        print("Starting G3 to G2 GED calculation")
        assert nx.graph_edit_distance(G3, G2, node_match=match, edge_match=match) == 1


cess private
     * @returns {void}
     */
    // private setVIN(vin: string): void {
    //     this.writeToEmulator(`ATSET VIN=${vin}`);
    // }

    /**
     * Voltage should be between 0 - 600. This is not the actual voltage. Refer to {@link SUPPLY_VOLTAGE}.
     *
     * @param {number} voltage
     * @access private
     * @returns {void}
     */
    private setSupplyVoltage(voltage: number): void {
        if (voltage > 600) {
            throw new Error(`Better not play with fire. Do not set supply voltage higher than 600 (for now).`);
        }
        this.firmataBoard.analogWrite(this.platform.pinMap.POWER, voltage);
    }

    /**
     * Turn the engine on.
     * This will turn the emulator engine ignition on, dip the power supply and run the (unbalanced) fan
     * The engine will remain running until stopEngine() is called.
     *
     * @access private
     * @returns {void}
     */
    // private startEngine(): void {
    //     if (this.engineOn) {
    //         throw new Error(`Engine has already been started.`);
    //     }
    //     this.engineOn = true;
    //     this.enableEmulatorIgnition(true);
    //     this.dipPowerSupply(MajorTom.DEFAULT_POWER_DIP_DURATION);
    //     this.shake();
    // }

    /**
     * Turn the engine off.
     *
     * @access private
     * @returns {void}
     */
    // private stopEngine(): void {
    //     this.setIdle();
    //     this.engineOn = false;
    //     this.enableEmulatorIgnition(false);
    //     this.clearInterval(this.shakeInterval);
    // }

    /**
     * Enable or disable the emulator's character echo feature
     *
     * @access private
     * @param {boolean} enable
     * @returns {void}
     */
    // private enableEmulatorCharacterEcho(enable: boolean): void {
    //     this.writeToEmulator(`ATE${enable ? 1 : 0}`);
    // }

    /**
     * Initialize the emulator, whatever that means.
     *
     * @access private
     * @returns {void}
     */
    // private initializeEmulator(): void {
    //     this.writeToEmulator(`ATZ`);
    // }

    /**
     * Reset the emulator.
     *
     * @access private
     * @returns {void}
     */
    // private resetEmulator(): void {
    //     this.writeToEmulator(`ATR`);
    // }

    /**
     * Writes a character byte-array to MajorTom's physical serial UART interface.
     * This interface is directly connected to the emulator to allow control using AT-commands.
     *
     * @access private
     * @param {string} payload AT-method to send
     * @returns {void}
     */
    // private writeToEmulator(payload: string): void {
    //     this.serialWriteBytes(this.firmataBoard.SERIAL_PORT_IDs.SW_SERIAL0, [...payload]);
    // }

    /**
     * Turns on the (unbalanced) fan for 10 seconds, after which the fan remains turned off for 1 second.
     * It will do so indefinitely or until the stopEngine() method is called.
     * NOTE: This method should not be used anywhere besides the startEngine() method.
     *
     * @access private
     * @returns {void}
     */
    // private shake(): void {
    //     this.shakeInterval = setInterval(() => {
    //         this.enableFan(true);
    //
    //         setTimeout


orized reduction and index selection.
// v1.04 - Automatic compile-time SIMD selection. Specify hw decoder at runtime. More optimizations.
// v1.05 - Bug fixes. Small optimizations.

// Copyright (c) 2020 Ignacio Castano <castano@gmail.com>
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to	deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


inSet.Load(new[] { dir1.FullName, dirDoesNotExist }));
            Assert.AreEqual(dirDoesNotExist, e.Path);
        }

        [TestMethod]
        [IntegrationTest]
        public void Load_LoadsFromExtensionPath()
        {
            var expectedSourceCookerPath = Source1DataCooker.DataCookerPath;

            using var sut = PluginSet.Load();

            Assert.IsTrue(sut.ProcessingSourceReferences.Any());
            Assert.IsTrue(sut.ProcessingSourceReferences.Any(x => x.Instance is Source123DataSource));
            Assert.IsTrue(sut.SourceDataCookers.Any(x => x == expectedSourceCookerPath));
        }

        [TestMethod]
        [IntegrationTest]
        public void Load_MultipleCallsWithDifferentPath_LoadsFromExtensionPath()
        {
            var expectedSourceCookerPath = Source1DataCooker.DataCookerPath;

            using var firstEngine = PluginSet.Load();
            Assert.IsTrue(firstEngine.ProcessingSourceReferences.Any());
            Assert.IsTrue(firstEngine.ProcessingSourceReferences.Any(x => x.Instance is Source123DataSource));
            Assert.IsTrue(firstEngine.SourceDataCookers.Any(x => x == expectedSourceCookerPath));
            var firstInstances = firstEngine.ProcessingSourceReferences.Where(x => x.Instance is Source123DataSource).ToList();

            var tempDir = this.Scratch.CreateSubdirectory(nameof(Load_MultipleCallsWithDifferentPath_LoadsFromExtensionPath));

            CopyAssemblyContainingType(typeof(Source123DataSource), tempDir);
            CopyAssemblyContainingType(typeof(FakePlugin), tempDir);

            // we loaded from an assembly in a different folder, so the type is 'technically' different, so do a name
            // compare this time.
            using var newEngine = PluginSet.Load(tempDir.FullName);

            Assert.IsTrue(newEngine.ProcessingSourceReferences.Any());
            Assert.IsTrue(newEngine.ProcessingSourceReferences.Any(x => x.Instance.GetType().Name == typeof(Source123DataSource).Name));
            Assert.IsTrue(newEngine.SourceDataCookers.Any(x => x == expectedSourceCookerPath));
            var secondInstances = newEngine.ProcessingSourceReferences.Where(x => x.Instance.GetType().Name == typeof(Source123DataSource).Name).ToList();

            foreach (var instance in firstInstances)
            {
                Assert.IsFalse(secondInstances.Any(x => ReferenceEquals(x, instance)));
            }

            foreach (var instance in secondInstances)
            {
                Assert.IsFalse(firstInstances.Any(x => ReferenceEquals(x, instance)));
            }
        }

        [ProcessingSource(
            "{645AB037-A325-45EC-9DB0-B8086A83B528}",
            nameof(FakePlugin),
            "Source for Tests")]
        [FileDataSource(Extension)]
        private sealed class FakePlugin
            : ProcessingSource
        {
            public const string Extension = ".txt";

            protected override ICustomDataProcessor CreateProcessorCore(
                IEnumerable<IDataSource> dataSources,
                IProcessorEnvironment processorEnvironment,
                ProcessorOptions options)
            {
                throw new NotImplementedException();
            }

            protected override bool IsDataSourceSupportedCore(IDataSource dataSource)
            {
                return StringComparer.OrdinalIgnoreCase.Equals(
                    Extension,
                    Path.GetExtension(dataSource.Uri.LocalPath));
            }
        }
    }
}


X ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST"},c:[{b:/^=/,e:/[^=]/,rE:!0,i:/=/,r:10},{cN:"symbol",b:/\b[A-Z]{1,2}\d+\b/,e:/[^\d]/,eE:!0,r:0},{cN:"symbol",b:/[A-Z]{0,2}\d*:[A-Z]{0,2}\d*/,r:0},e.BE,e.QSM,{cN:"number",b:e.NR+"(%)?",r:0},e.C(/\bN\(/,/\)/,{eB:!0,eE:!0,i:/\n/})]}}),hljs.registerLanguage("aspectj",function(e){var t="false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance",r="get set args call";return{k:t,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"aspect",e:/[{;=]/,eE:!0,i:/[:;"\[\]]/,c:[{bK:"extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton"},e.UTM,{b:/\([^\)]*/,e:/[)]+/,k:t+" "+r,eE:!1}]},{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,r:0,k:"class interface",i:/[:"\[\]]/


#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)

#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
#define MINSIGSTKSZ 2048
#define SIGSTKSZ 8192
#endif

#ifdef _GNU_SOURCE
enum { REG_R8 = 0 };
#define REG_R8 REG_R8
enum { REG_R9 = 1 };
#define REG_R9 REG_R9
enum { REG_R10 = 2 };
#define REG_R10 REG_R10
enum { REG_R11 = 3 };
#define REG_R11 REG_R11
enum { REG_R12 = 4 };
#define REG_R12 REG_R12
enum { REG_R13 = 5 };
#define REG_R13 REG_R13
enum { REG_R14 = 6 };
#define REG_R14 REG_R14
enum { REG_R15 = 7 };
#define REG_R15 REG_R15
enum { REG_RDI = 8 };
#define REG_RDI REG_RDI
enum { REG_RSI = 9 };
#define REG_RSI REG_RSI
enum { REG_RBP = 10 };
#define REG_RBP REG_RBP
enum { REG_RBX = 11 };
#define REG_RBX REG_RBX
enum { REG_RDX = 12 };
#define REG_RDX REG_RDX
enum { REG_RAX = 13 };
#define REG_RAX REG_RAX
enum { REG_RCX = 14 };
#define REG_RCX REG_RCX
enum { REG_RSP = 15 };
#define REG_RSP REG_RSP
enum { REG_RIP = 16 };
#define REG_RIP REG_RIP
enum { REG_EFL = 17 };
#define REG_EFL REG_EFL
enum { REG_CSGSFS = 18 };
#define REG_CSGSFS REG_CSGSFS
enum { REG_ERR = 19 };
#define REG_ERR REG_ERR
enum { REG_TRAPNO = 20 };
#define REG_TRAPNO REG_TRAPNO
enum { REG_OLDMASK = 21 };
#define REG_OLDMASK REG_OLDMASK
enum { REG_CR2 = 22 };
#define REG_CR2 REG_CR2
#endif

#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
typedef long long greg_t, gregset_t[23];
typedef struct _fpstate {
	unsigned short cwd, swd, ftw, fop;
	unsigned long long rip, rdp;
	unsigned mxcsr, mxcr_mask;
	struct {
		unsigned short significand[4], exponent, padding[3];
	} _st[8];
	struct {
		unsigned element[4];
	} _xmm[16];
	unsigned padding[24];
} *fpregset_t;
struct sigcontext {
	unsigned long r8, r9, r10, r11, r12, r13, r14, r15;
	unsigned long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags;
	unsigned short cs, gs, fs, __pad0;
	unsigned long err, trapno, oldmask, cr2;
	struct _fpstate *fpstate;
	unsigned long __reserved1[8];
};
typedef struct {
	gregset_t gregs;
	fpregset_t fpregs;
	unsigned long long __reserved1[8];
} mcontext_t;
#else
typedef struct {
	unsigned long __space[32];
} mcontext_t;
#endif

struct sigaltstack {
	void *ss_sp;
	int ss_flags;
	size_t ss_size;
};

typedef struct __ucontext {
	unsigned long uc_flags;
	struct __ucontext *uc_link;
	stack_t uc_stack;
	mcontext_t uc_mcontext;
	sigset_t uc_sigmask;
	unsigned long __fpregs_mem[64];
} ucontext_t;

#define SA_NOCLDSTOP  1
#define SA_NOCLDWAIT  2
#define SA_SIGINFO    4
#define SA_ONSTACK    0x08000000
#define SA_RESTART    0x10000000
#define SA_NODEFER    0x40000000
#define SA_RESETHAND  0x80000000
#define SA_RESTORER   0x04000000

#endif

#define SIGHUP    1
#define SIGINT    2
#define SIGQUIT   3
#define SIGILL    4
#define SIGTRAP   5
#define SIGABRT   6
#define SIGIOT    SIGABRT
#define SIGBUS    7
#define SIGFPE    8
#define SIGKILL   9
#define SIGUSR1   10
#define SIGSEGV   11
#define SIGUSR2   12
#define SIGPIPE   13
#define SIGALRM   14
#define SIGTERM   15
#define SIGSTKFLT 16
#define SIGCHLD   17
#define SIGCONT   18
#define SIGSTOP   19
#define SIGTSTP   20
#define SIGTTIN   21
#define SIGTTOU   22
#define SIGURG    23
#define SIGXCPU   24
#define SIGXFSZ   25
#define SIGVTALRM 26
#define SIGPROF   27
#define SIGWINCH  28
#define SIGIO     29
#define SIGPOLL   29
#define SIGPWR    30
#define SIGSYS    31
#define SIGUNUSED SIGSYS

#define _NSIG 65


-bordered table-striped">

        #

        {{$index + 1}}

          {{type.name}}

        {{type.description}}

  <form id="create-service-type" name="contractForm" novalidate>

                  *

                  <input ng-disabled="true" ng-model="current.identifier" id="name" name="name" type="text" maxlength="200" ng-required="true" />

                  *

                  <input ng-disabled="true" ng-change="blurDateFields();"
                         ui-date="{dateFormat: 'dd/mm/yy', changeYear: true}"
                         ui-date-format="yy-dd-mm"
                         ng-model="current.startDate"
                         id="startDate"
                         name="startDate"
                         ng-required="true" />

                  *

                  <input ng-disabled="true" ng-chang


quest_search(a.to_owned(), Some(format!("start chrome")))?;
                    Ok(())
                }
                _ => Err(GoogError::GoogNotFound),
            }
        }
        None => Err(GoogError::GoogNotFound),
    };

    match matches.value_of("search") {
        Some(a) => {
            print_os_info();
            println!("Searching for \"{}\" on your defualt browser", a);
            request_search(a.to_string(), None)?;
            Ok(())
        }
        None => Err(GoogError::GoogNotFound),
    }
}
<reponame>eldruin/ads1x1x-rs
use ads1x1x::{
    ComparatorLatching, ComparatorMode, ComparatorPolarity, ComparatorQueue, FullScaleRange,
};
use embedded_hal_mock::i2c::Transaction as I2cTrans;

mod common;
use crate::common::{
    destroy_ads1014, new_ads1014, BitFlags as BF, Config, Register, DEVICE_ADDRESS as DEV_ADDR,
};

macro_rules! set_value_test {
    ($name:ident, $method:ident, $value:expr, $reg:ident, $msb:expr, $lsb:expr) => {
        #[test]
        fn $name() {
            let transactions = [I2cTrans::write(DEV_ADDR, vec![Register::$reg, $msb, $lsb])];
            let mut dev = new_ads1014(&transactions);
            dev.$method($value).unwrap();
            destroy_ads1014(dev);
        }
    };
}

macro_rules! config_test {
    ($name:ident, $method:ident, $value:expr, $config:expr) => {
        set_value_test!($name, $method, $value, CONFIG, $config.msb(), $config.lsb());
    };
}

mod can_set_comparator_thresholds {
    use super::*;
    set_value_test!(low, set_low_threshold_raw, 2047, LOW_TH, 0x7F, 0xF0);
    set_value_test!(high, set_high_threshold_raw, 2047, HIGH_TH, 0x7F, 0xF0);
}

mod can_set_comparator_mode {
    use super::*;
    config_test!(
        traditional,
        set_comparator_mode,
        ComparatorMode::Traditional,
        Config::default().with_low(BF::COMP_MODE)
    );
    config_test!(
        window,
        set_comparator_mode,
        ComparatorMode::Window,
        Config::default().with_high(BF::COMP_MODE)
    );
}

mod can_set_comparator_polarity {
    use super::*;
    config_test!(
        low,
        set_comparator_polarity,
        ComparatorPolarity::ActiveLow,
        Config::default().with_low(BF::COMP_POL)
    );
    config_test!(
        high,
        set_comparator_polarity,
        ComparatorPolarity::ActiveHigh,
        Config::default().with_high(BF::COMP_POL)
    );
}

mod can_set_comparator_latching {
    use super::*;
    config_test!(
        non,
        set_comparator_latching,
        ComparatorLatching::Nonlatching,
        Config::default().with_low(BF::COMP_LAT)
    );
    config_test!(
        lat,
        set_comparator_latching,
        ComparatorLatching::Latching,
        Config::default().with_high(BF::COMP_LAT)
    );
}

#[test]
fn can_disable_comparator() {
    let config = Config::default()
        .with_high(BF::COMP_QUE1)
        .with_high(BF::COMP_QUE0);
    let transactions = [I2cTrans::write(
        DEV_ADDR,
        vec![Register::CONFIG, config.msb(), config.lsb()],
    )];
    let mut dev = new_ads1014(&transactions);
    dev.disable_comparator().unwrap();
    destroy_ads1014(dev);
}

mod can_set_comparator_queue {
    use super::*;
    config_test!(
        one,
        set_comparator_queue,
        ComparatorQueue::One,
        Config::default()
            .with_low(


zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/></svg>')
  }
  .md-typeset .admonition.circle-info,
  .md-typeset details.circle-info {
    border-color: rgb(55,52,238);
  }
  .md-typeset .circle-info > .admonition-title,
  .md-typeset .circle-info > summary {
    color:rgb(230, 230, 236);
    background-color: rgba(9,23,143,959);
  }
  .md-typeset .circle-info > .admonition-title::before,
  .md-typeset .circle-info > summary::before {
    background-color: rgb(217,235,117);
    -webkit-mask-image: var(--md-admonition-icon--circle-info);
            mask-image: var(--md-admonition-icon--circle-info);
  }

:root {
  --md-admonition-icon--jupyter: url('data:image/svg+xml;charset=utf-8,<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Jupyter</title><path d="M7.157 22.201A1.784 1.799 0 0 1 5.374 24a1.784 1.799 0 0 1-1.784-1.799 1.784 1.799 0 0 1 1.784-1.799 1.784 1.799 0 0 1 1.783 1.799zM20.582 1.427a1.415 1.427 0 0 1-1.415 1.428 1.415 1.427 0 0 1-1.416-1.428A1.415 1.427 0 0 1 19.167 0a1.415 1.427 0 0 1 1.415 1.427zM4.992 3.336A1.047 1.056 0 0 1 3.946 4.39a1.047 1.056 0 0 1-1.047-1.055A1.047 1.056 0 0 1 3.946 2.28a1.047 1.056 0 0 1 1.046 1.056zm7.336 1.517c3.769 0 7.06 1.38 8.768 3.424a9.363 9.363 0 0 0-3.393-4.547 9.238 9.238 0 0 0-5.377-1.728A9.238 9.238 0 0 0 6.95 3.73a9.363 9.363 0 0 0-3.394 4.547c1.713-2.04 5.004-3.424 8.772-3.424zm.001 13.295c-3.768 0-7.06-1.381-8.768-3.425a9.363 9.363 0 0 0 3.394 4.547A9.238 9.238 0 0 0 12.33 21a9.238 9.238 0 0 0 5.377-1.729 9.363 9.363 0 0 0 3.393-4.547c-1.712 2.044-5.003 3.425-8.772 3.425Z"/></svg>')
}
.md-typeset .admonition.jupyter,
.md-typeset details.jupyter {
  border-color: rgb(47,79,79);
}
.md-typeset .jupyter > .admonition-title,
.md-typeset .jupyter > summary {
  back


I, I, -1
	daddiu	YY,  YY,   8 * SIZE

	daddiu	AO1, AO1,  8 * SIZE
	bgtz	I, .L12
	daddiu	AO2, AO2,  8 * SIZE
	.align 3

.L13:
	ST	t1,  0 * SIZE(YY)
	MADD1	t1, y1, x1, a1
	ST	t2,  1 * SIZE(YY)
	MADD2	t2, y2, x2, a1
	ST	t3,  2 * SIZE(YY)
	MADD1	t3, y3, x1, a3
	ST	t4,  3 * SIZE(YY)
	MADD2	t4, y4, x2, a3

	MADD3	t1, t1, x2, a2
	MADD4	t2, t2, x1, a2
	MADD3	t3, t3, x2, a4
	MADD4	t4, t4, x1, a4

	MADD1	t1, t1, x3, a5
	MADD2	t2, t2, x4, a5
	MADD1	t3, t3, x3, a7
	MADD2	t4, t4, x4, a7

	MADD3	t1, t1, x4, a6
	daddiu	AO1, AO1,  8 * SIZE
	MADD4	t2, t2, x3, a6
	daddiu	AO2, AO2,  8 * SIZE
	MADD3	t3, t3, x4, a8
	daddiu	YY,  YY,   8 * SIZE
	MADD4	t4, t4, x3, a8
	NOP

	ST	t1, -4 * SIZE(YY)
	ST	t2, -3 * SIZE(YY)
	ST	t3, -2 * SIZE(YY)
	ST	t4, -1 * SIZE(YY)
	.align 3

.L15:
	andi	I,  M, 2
	NOP
	blez	I, .L16
	NOP

	LD	a1, 0 * SIZE(AO1)
	LD	y1, 0 * SIZE(YY)
	LD	a2, 1 * SIZE(AO1)
	LD	y2, 1 * SIZE(YY)

	LD	a3, 2 * SIZE(AO1)
	LD	y3, 2 * SIZE(YY)
	LD	a4, 3 * SIZE(AO1)
	LD	y4, 3 * SIZE(YY)

	MADD1	t1, y1, x1, a1
	LD	a5, 0 * SIZE(AO2)
	MADD2	t2, y2, x2, a1
	LD	a6, 1 * SIZE(AO2)
	MADD1	t3, y3, x1, a3
	LD	a7, 2 * SIZE(AO2)
	MADD2	t4, y4, x2, a3
	LD	a8, 3 * SIZE(AO2)

	MADD3	t1, t1, x2, a2
	MADD4	t2, t2, x1, a2
	MADD3	t3, t3, x2, a4
	MADD4	t4, t4, x1, a4

	MADD1	t1, t1, x3, a5
	MADD2	t2, t2, x4, a5
	MADD1	t3, t3, x3, a7
	MADD2	t4, t4, x4, a7

	MADD3	t1, t1, x4, a6
	daddiu	YY,  YY,   4 * SIZE
	MADD4	t2, t2, x3, a6
	daddiu	AO1, AO1,  4 * SIZE
	MADD3	t3, t3, x4, a8
	daddiu	AO2,


) + c;
		}

		Vector3d multiplyA(ref Vector3d pt) {
			double x = Axx * pt.x + Axy * pt.y + Axz * pt.z;
			double y = Axy * pt.x + Ayy * pt.y + Ayz * pt.z;
			double z = Axz * pt.x + Ayz * pt.y + Azz * pt.z;
			return new Vector3d(x, y, z);
		}

		public bool OptimalPoint(ref Vector3d result) {
			double a11 = Azz * Ayy - Ayz * Ayz;
			double a12 = Axz * Ayz - Azz * Axy;
			double a13 = Axy * Ayz - Axz * Ayy;
			double a22 = Azz * Axx - Axz * Axz;
			double a23 = Axy * Axz - Axx * Ayz;
			double a33 = Axx * Ayy - Axy * Axy;
			double det = (Axx * a11) + (Axy * a12) + (Axz *


n(max(首选最小宽度, 可用宽度), 首选宽度)

10.3.8 绝对定位的替换元素

这种情况下，10.3.7节中直到包括约束方程的部分都适用，但10.3.7节剩余部分要用下面的规则替换掉：

'width'的应用值由行内替换元素决定。如果'margin-left'或者'margin-right'被指定为'auto'，其应用值由下面的规则决定：

如果'left'和'right'值都是'auto'，然后如果建立静态位置包含块的元素的'direction'属性为'ltr'，把'left'设置为静态位置，否则如果'direction'为'rtl'，就把'right'设置为静态位置

如果'left'或者'right'为'auto'，把所有值为'auto'的'margin-left'或者'margin-right'替换为'0'

如果此时'margin-left'和<a href


logging.log4j.core.config.Configurator
import top.mcfpp.io.DatapackCreator
import top.mcfpp.model.scope.GlobalScope
import top.mcfpp.util.LogLevel
import top.mcfpp.util.LogProcessor
import top.mcfpp.util.UwU
import java.nio.file.Files
import kotlin.io.path.Path
import kotlin.io.path.absolutePathString

/**
 * 编译器的启动入口
 */
fun main(args: Array<String>) {
    //获取log4j2.xml配置文件
    val source:ConfigurationSource
    try {
        source = ConfigurationSource(ResourceReader::class.java.classLoader.getResourceAsStream("log4j2.xml"))
        Configurator.initialize(null,source)
    }catch (e:Exception){
        println("Failed to load log4j2.xml")
    }
    if (args.isNotEmpty()) {
        parseArgs(args.asList().subList(1, args.size))

        LogProcessor.info("Tips: " + UwU.tip) //生成tips

        val path = args[0]
        if(!Files.exists(Path(path))){
            LogProcessor.error("Cannot find file: $path")
        }
        compile(Project.readConfig(path)) //读取配置文件
    }
}

fun compile(config: ProjectConfig){
    val start: Long = System.currentTimeMillis()

    Project.config = config
    Project.compileStage = Project.CompileStage.PRE_INIT
    Project.stageProcessor[0].forEach { it() }
    Project.init() //初始化
    if(!Project.checkConfig()) return   //检查配置文件
    Project.readProject() //读取引用的库的索引
    Project.indexType() //编制类型索引
    Project.resolveField() //编制函数索引
    Project.runAnnotation() //执行注解
    Project.compile() //编译
    Project.optimization() //优化
    Project.genIndex() //生成索引
    Project.ctx.clear()
    if(!Project.config.noDatapack){
        Project.compileStage = Project.CompileStage.GEN_DATAPACK
        try{
            DatapackCreator.createDatapack(Project.config.targetPath!!.absolutePathString()) //生成数据包
        }catch (e: Exception){
            LogProcessor.error("Cannot create datapack in path: ${Project.config.targetPath}", e)
        }
        Project.stageProcessor[Project.compileStage.ordinal].forEach { it() }
    }

    LogProcessor.info("Finished in " + (System.currentTimeMillis() - start) + "ms")
    if(CompileSettings.printAll) GlobalScope.printAll()
}

object MCFPP {
    const val VERSION = "0.1.0"
}

fun parseArgs(args: List<String>){

    for (arg in args) {
        when (arg) {
            "-debug"
            -> CompileSettings.isDebug = true

            "-ignoreStdLib"
            -> CompileSettings.ignoreStdLib = true

            "-isLib"
            -> CompileSettings.isLib = true

            if (arg.startsWith("-maxWhileInline=")) arg else "$$arg"
            -> CompileSettings.maxWhileInline = arg.split("=")[1].toInt()

            "-printAll"
            -> CompileSettings.printAll = true

            if(arg.startsWith("-level=")) arg else "$$arg"
            -> LogProcessor.level = LogLevel.valueOf(arg.uppercase().split("=")[1])

            else -> {
                LogProcessor.warn("Invalid argument: $arg")
            }
        }
    }

}package top.mcfpp.util

import com.alibaba.fastjson2.JSONObject
import org.apache.tools.zip.ZipFile
import top.mcfpp.io.FileUtils.copyAllFiles
import top.mcfpp.io.FileUtils.extractFolderFromInner
import top.mcfpp.io.FileUtils.extractTo
import java.nio.file.Path
import kotlin.io.path.Path
import kotlin.io.path.absolutePathString

enum class ModuleType {
    ZIP,
    JAR,
    DIR,
    INNER
}

class Module(var id: String) {

    var base: ArrayList<Package> = ArrayList()

    var packages: HashMap<Package, Boolean> = HashM


 false) {
    let icon = iconsAliases[alias]
    if (invert) {
        icon = icon.replace('white', 'tempwhite')
            .replace('dark', 'white')
            .replace('tempwhite', 'dark')
    }
    return `
	.${alias} {
		background-image: var(--${icon})
	}`
}

let css = ''
Object.keys(icons).forEach(icon => {
    const path = icons[icon]

    const svg = fs.readFileSync(path, 'utf8')
    const darkSvg = colorSvg(svg, '000000')
    const whiteSvg = colorSvg(svg, 'ffffff')

    // console.log("dark:",darkSvg)
    // console.log("white:",whiteSvg)

    variables[`--original-icon-${icon}-dark`] = Buffer.from(darkSvg, 'utf-8').toString('base64')
    variables[`--original-icon-${icon}-white`] = Buffer.from(whiteSvg, 'utf-8').toString('base64')
})

Object.keys(iconsColor).forEach(icon => {
    const {path, color} = iconsColor[icon]

    const svg = fs.readFileSync(path, 'utf8')
    const coloredSvg = colorSvg(svg, colors[color])
    variables[`--icon-${icon}-${color}`] = Buffer.from(coloredSvg, 'utf-8').toString('base64')
})

// ICONS VARIABLES LIST
css += ':root {'
Object.keys(variables).forEach(variable => {
    const data = variables[variable]
    css += `${variable}: url(data:image/svg+xml;base64,${data});`
})
css += '}'

// DEFAULT THEME
css += 'body {'
css += generateVariablesAliases()
Object.keys(icons).forEach(icon => {
    css += formatIcon(icon)
})
Object.keys(iconsColor).forEach(icon => {
    css += formatIconColor(icon)
})
Object.keys(iconsAliases).forEach(alias => {
    css += formatAlias(alias)
})
css += '}'

// DARK THEME MEDIA QUERY
css += '@media (prefers-color-scheme: dark) { body {'
css += generateVariablesAliases(true)
css += '}}'

// DARK THEME
css += '[data-themes*=light] {'
css += generateVariablesAliases()
css += '}'

// DARK THEME
css += '[data-themes*=dark] {'
css += generateVariablesAliases(true)
css += '}'

// WRITE CSS
// console.log("css:",sass.compileString(css).css)
fs.writeFileSync(outputFile, sass.compileString(css, {style: "expanded"}).css)
import React from 'react';
import s from './githubCorner.css';

function GithubCorner() {
  return (
    <a href="https://github.com/sergey-pimenov/awesome-web-animation"
       target="_blank"
       rel="noopener noreferrer"
       className={s.githubCorner}
       aria-label="View source on GitHub">
      <svg
        width="80"
        height="80"
        viewBox="0 0 250 250"
        className={s.githubIcon}
        aria-hidden="true"
      >
        <path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z" />
        <path
          d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"