case Variant.secondary:
        return enabled
            ? themeData.primaryColorDark
            : themeData.primaryColorDark.withOpacity(_kDisabledOpacity);
      case Variant.fab:
        return enabled
            ? themeData.textTheme.labelLarge.color
            : themeData.textTheme.labelLarge.color.withOpacity(_kDisabledOpacity);
    }
    throw Exception('Unknown variant: $variant');
  }
}

// Preview

void main() {
  runApp(const Preview([
    ActionButton(
      text: 'Primary',
    ),
    ActionButton(
      text: 'Secondary',
      variant: Variant.secondary,
    ),
    ActionButton(
      text: 'Disabled',
      enabled: false,
    ),
    ActionButton(
      text: 'With leading icon',
      leadingIcon: Icons.arrow_back,
    ),
    ActionButton(
      text: 'With trailing icon',
      trailingIcon: Icons.arrow_forward,
    ),
    ActionButton(
      text: 'With leading and trailing icons',
      leadingIcon: Icons.add,
      trailingIcon: Icons.expand_more,
    ),
    ActionButton(
      text: 'Fill',
      fill: true,
    ),
    ActionButton(
      text: 'Variant secondary',
      variant: Variant.secondary,
    ),
    ActionButton(
      text: 'Variant secondary disabled',
      variant: Variant.secondary,
      enabled: false,
    ),
    ActionButton(
      variant: Variant.secondary,
      trailingIcon: Icons.close,
    ),
    ActionButton(
      variant: Variant.secondary,
      enabled: false,
      trailingIcon: Icons.close,
    ),
    ActionButton(
      leadingIcon: Icons.more_vert,
    ),
    ActionButton(
      leadingIcon: Icons.more_vert,
      enabled: false,
    ),
  ]));
}
///
//  Generated code. Do not modify.
//  source: breez.proto
//
// @dart = 2.12
// ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,deprecated_member_use_from_same_package,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name

import 'dart:core' as $core;
import 'dart:convert' as $convert;
import 'dart:typed_data' as $typed_data;

@$core.Deprecated('Use signUrlRequestDescriptor instead')
const SignUrlRequest$json = const {
  '1': 'SignUrlRequest',
  '2': const [
    const {'1': 'baseUrl', '3': 1, '4': 1, '5': 9, '10': 'base_url'},
    const {'1': 'queryString', '3': 2, '4': 1, '5': 9, '10': 'query_string'},
  ],
};

/// Descriptor for `SignUrlRequest`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List signUrlRequestDescriptor = $convert.base64Decode(
    'Cg5TaWduVXJsUmVxdWVzdBIZCgdiYXNlVXJsGAEgASgJUghiYXNlX3VybBIhCgtxdWVyeVN0cmluZxgCIAEoCVIMcXVlcnlfc3RyaW5n');
@$core.Deprecated('Use signUrlResponseDescriptor instead')
const SignUrlResponse$json = const {
  '1': 'SignUrlResponse',
  '2': const [
    const {'1': 'fullUrl', '3': 1, '4': 1, '5': 9, '10': 'full_url'},
  ],
};

/// Descriptor for `SignUrlResponse`. Decode as a `google.protobuf.DescriptorProto`.
final $typed_data.Uint8List signUrlResponseDescriptor =
    $convert.base64Decode('Cg9TaWduVXJsUmVzcG9uc2USGQoHZnVsbFVybBgBIAEoCVIIZnVsbF91cmw=');
@$core.Deprecated('Use inactiveNotifyRequestDescriptor instead')
const InactiveNotifyRequest$json = const {
  '1': 'InactiveNotifyRequest',
  '2': const


py		\index,\pgd
	extrd,u,*<>	\va,31,32,%r0
	ldo		ASM_PGD_PMD_OFFSET(\pgd),\pgd
	L2_ptep		\pgd,\pte,\index,\va,\fault
	.endm

	/* Set the _PAGE_ACCESSED bit of the PTE.  Be clever and
	 * don't needlessly dirty the cache line if it was already set */
	.macro		update_ptep	ptep,pte,tmp,tmp1
	ldi		_PAGE_ACCESSED,\tmp1
	or		\tmp1,\pte,\tmp
	and,COND(<>)	\tmp1,\pte,%r0
	STREG		\tmp,0(\ptep)
	.endm

	/* Set the dirty bit (and accessed bit).  No need to be
	 * clever, this is only used from the dirty fault */
	.macro		update_dirty	ptep,pte,tmp
	ldi		_PAGE_ACCESSED|_PAGE_DIRTY,\tmp
	or		\tmp,\pte,\pte
	STREG		\pte,0(\ptep)
	.endm

	/* Convert the pte and prot to tlb insertion values.  How
	 * this happens is quite subtle, read below */
	.macro		make_insert_tlb	spc,pte,prot
	space_to_prot   \spc \prot        /* create prot id from space */
	/* The following is the real subtlety.  This is depositing
	 * T <-> _PAGE_REFTRAP
	 * D <-> _PAGE_DIRTY
	 * B <-> _PAGE_DMB (memory break)
	 *
	 * Then incredible subtlety: The access rights are
	 * _PAGE_GATEWAY _PAGE_EXEC _PAGE_READ
	 * See 3-14 of the parisc 2.0 manual
	 *
	 * Finally, _PAGE_READ goes in the top bit of PL1 (so we
	 * trigger an access rights trap in user space if the user
	 * tries to read an unreadable page */
	depd            \pte,8,7,\prot

	/* PAGE_USER indicates the page can be read with user privileges,
	 * so deposit X1|11 to PL1|PL2 (remember the upper bit of PL1
	 * contains _PAGE_READ */
	extrd,u,*=      \pte,_PAGE_USER_BIT+32,1,%r0
	depdi		7,11,3,\prot
	/* If we're a gateway page, drop PL2 back to zero for promotion
	 * to kernel privilege (so we can execute the page as kernel).
	 * Any privilege promotion page always denys read and write */
	extrd,u,*= 	\pte,_PAGE_GATEWAY_BIT+32,1,%r0
	depd		%r0,11,2,\prot	/* If Gateway, Set PL2 to 0 */

	/* Get rid of prot bits and convert to page addr for iitlbt */

	depd		%r0,63,PAGE_SHIFT,\pte
	extrd,u		\pte,56,32,\pte
	.endm

	/* Identical macro to make_insert_tlb above, except it
	 * makes the tlb entry for the differently formatted pa11
	 * insertion instructions */
	.macro		make_insert_tlb_11	spc,pte,prot
	zdep		\spc,30,15,\prot
	dep		\pte,8,7,\prot
	extru,=		\pte,_PAGE_NO_CACHE_BIT,1,%r0
	depi		1,12,1,\prot
	extru,=         \pte,_PAGE_USER_BIT,1,%r0
	depi		7,11,3,\prot   /* Set for user space (1 rsvd for read) */
	extru,= 	\pte,_PAGE_GATEWAY_BIT,1,%r0
	depi		0,11,2,\prot	/*


�设备（材料）占用的贷款加收利息５０％。
　　第四条　借款方保证在　　年　　月之前，用国家规定的还资金还清全部贷款本息。逾期不还，贷款方有权限期归还贷款或从贷款方拨、贷款户或存款户中扣收。
　　第五条　贷款方保证在下达的贷款指标额度内发放贷款，如未按期提供贷款，应承担由此造成的经济损失。
　　第六条　贷款方有权检查、监督贷款的使用情况，了解借款方的经营管理、计划执行、设备采购、财务活动、物资库存等情况。借款方应向借款方提供有关设计、会计、统计等方面的文件资料。
　　借款方不按合同规定使用贷款，贷款方有权扣回贷款本息，并对违约使用部分加收罚息１００％。
　　第七条　本合同条款以外的其他事项，双方遵照《中华人民共和国经济合同法》的有关规定办理。
　　第八条　本合同经双方签章后生效，贷款本息全部清偿后失效。合同一式五份，借款双方签章后各执一份，报送主管部门、总行、分行各一份。

　　借款方：（公章）　　　贷款方：（公章）
　　负责人：（签章）　　　负责人：（签章）
　　地　址：　　　　　　　地　址：
　　　　　　　　　　　　　　　　　　　１９　　年　　月　　日

　　　　　　　　　　　　基本建设储备款情况报告单

　　经办行：（公章）　　　　１９　　年　　月份　　　　　单位：万元
主管部门及项目名称

年初余额

本年初至报告期发放货款累计

其中：

本年初至报告期收回贷款累计

其中：

期末余额

预计下月收回贷款

备注

本月发放

本月收回

部门(公司)

××项目

　　本金

　　利息


(dynamic e) => logger.e('dispose failed with $e'),
          );
      user = null;
      client = null;
    } catch (e, s) {
      logger.e('e: $e, s: $s');
    }
  }

  @override
  Future<void> enableRoomEncyption(String roomId) async {
    try {
      if (roomId.isEmpty) return;
      final room = client?.getRoomById(roomId);
      if (room == null) return;
      if (room.encrypted) {
        logger.i('the room with id: ${room.id} encyrpted before!');
        return;
      }
      await room.enableEncryption();
      final verificationResponse =
          await DeviceKeysList(client!.userID!, client!).startVerification();
      logger.i('verification response: $verificationResponse');
      await verificationResponse.acceptVerification();
    } catch (e, s) {
      logger.e('error in enabling room e2e encryption, e: $e, s: $s');
    }
  }
}
import 'package:altme/trusted_list/model/trusted_entity.dart';
import 'package:altme/trusted_list/widget/trusted_entity_electronic_address.dart';
import 'package:altme/trusted_list/widget/trusted_entity_postal_address.dart';
import 'package:flutter/material.dart';

/// Widget to display TrustedEntity details field by field
class TrustedEntityDetails extends StatelessWidget {
  const TrustedEntityDetails({super.key, required this.trustedEntity});
  final TrustedEntity trustedEntity;

  @override
  Widget build(BuildContext context) {
    final textTheme = Theme.of(context).textTheme;
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        if (trustedEntity.name != null)
          Padding(
            padding: const EdgeInsets.all(8),
            child: Text(
              trustedEntity.name!,
              style: textTheme.bodyLarge?.copyWith(fontWeight: FontWeight.bold),
            ),
          ),
        if (trustedEntity.description != null)
          Padding(
            padding: const EdgeInsets.all(8),
            child: Text(trustedEntity.description!, style: textTheme.bodyLarge),
          ),
        if (trustedEntity.postalAddress != null)
          TrustedEntityPostalAddress(
            postalAddress: trustedEntity.postalAddress!,
            textTheme: textTheme,
          ),
        if (trustedEntity.electronicAddress != null)
          TrustedEntityElectronicAddress(
            electronicAddress: trustedEntity.electronicAddress!,
            textTheme: textTheme,
          ),
      ],
    );
  }
}
import 'package:dart_jsonwebtoken/dart_jsonwebtoken.dart';
import 'package:oidc4vc/oidc4vc.dart';

OpenIdConfiguration getIssuerOpenIdConfiguration({
  required OpenIdConfiguration issuerOpenIdConfiguration,
}) {
  late OpenIdConfiguration newIssuerOpenIdConfiguration;
  if (issuerOpenIdConfiguration.signedMetadata != null) {
    final signedMetadata = issuerOpenIdConfiguration.signedMetadata;
    // signedMetadata is a JWT containing the issuer's OpenID configuration in
    // the payload and an x509 certificate in the header.
    if (signedMetadata == null) {
      throw Exception('Signed metadata is null');
    }
// check jwt signature

    try {
      final jwt = JWT.decode(signedMetadata);
      final payload = jwt.payload as Map<String, dynamic>;

      // Check for required claims
      if (!payload.containsKey('iat')) {
        throw Exception('Missing required claim in signed metadata: iat');
      }
      if (!payload.containsKey('iss')) {
        throw Exception('Missing required claim in signed metadata: iss');
      }


eze`方法。

```javascript
const foo = Object.freeze({});

// 常规模式时，下面一行不起作用；
// 严格模式时，该行会报错
foo.prop = 123;
```

上面代码中，常量`foo`指向一个冻结的对象，所以添加新属性不起作用，严格模式时还会报错。

除了将对象本身冻结，对象的属性也应该冻结。下面是一个将对象彻底冻结的函数。

```javascript
var constantize = (obj) => {
  Object.freeze(obj);
  Object.keys(obj).forEach( (key, i) => {
    if ( typeof obj[key] === 'object' ) {
      constantize( obj[key] );
    }
  });
};
```

### ES6 声明变量的六种方法

ES5 只有两种声明变量的方法：`var`命令和`function`命令。ES6 除了添加`let`和`const`命令，后面章节还会提到，另外两种声明变量的方法：`import`命令和`class`命令。所以，ES6 一共有 6 种声明变量的方法。

## 顶层对象的属性

顶层对象，在浏览器环境指的是`window`对象，在 Node 指的是`global`对象。ES5 之中，顶层对象的属性与全局变量是等价的。

```javascript
window.a = 1;
a // 1

a = 2;
window.a // 2
```

上面代码中，顶层对象的属性赋值与全局变量的赋值，是同一件事。

顶层对象的属性与全局变量挂钩，被认为是 JavaScript 语言最大的设计败笔之一。这样的设计带来了几个很大的问题，首先是没法在编译时就报出变量未声明的错误，只有运行时才能知道（因为全局变量可能是顶层对象的属性创造的，而属性的创造是动态的）；其次，程序员很容易不知不觉地就创建了全局变量（比如打字出错）；最后，顶层对象的属性是到处可以读写的，这非常不利于模块化编程。另一方面，`window`对象有实体含义，指的是浏览器的窗口对象，顶层对象是一个有实体含义的对象，也是不合适的。

ES6 为了改变这一点，一方面规定，为了保持兼容性，`var`命令和`function`命令声明的全局变量，依旧是顶层对象的属性；另一方面规定，`let`命令、`const`命令、`class`命令声明的全局变量，不属于顶层对象的属性。也就是说，从 ES6 开始，全局变量将逐步与顶层对象的属性脱钩。

```javascript
var a = 1;
// 如果在 Node 的 REPL 环境，可以写成 global.a
// 或者采用通用方法，写成 this.a
window.a // 1

let b = 1;
window.b // undefined
```

上面代码中，全局变量`a`由`var`命令声明，所以它是顶�


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

import functools
import mindspore.nn as nn

def get_norm_layer(norm_type='instance'):
    if norm_type == 'batch':
        norm_layer = functools.partial(nn.BatchNorm2d, affine=True, use_batch_statistics=True)
    elif norm_type == 'instance':
        norm_layer = functools.partial(nn.InstanceNorm2d, affine=False)
    elif norm_type == 'none':
        norm_layer = None
    else:
        raise NotImplementedError('normalization layer [%s] is not found' % norm_type)
    return norm_layer


rite!(f, "div.{}", size),
            Opcode::DIVU(size) => write!(f, "divu.{}", size),
            Opcode::DIVX(size) => write!(f, "divx.{}", size),
            Opcode::DSBB => write!(f, "dsbb"),
            Opcode::DSUB => write!(f, "dsub"),
            Opcode::ENTER => write!(f, "enter"),
            Opcode::EXITD => write!(f, "exitd"),
            Opcode::EXTS => write!(f, "exts"),
            Opcode::GE => write!(f, "ge"),
            Opcode::INC(size) => write!(f, "inc.{}", size),
            Opcode::INT => write!(f, "int"),
            Opcode::INTO => write!(f, "into"),
            Opcode::JEQ => write!(f, "jeq"),
            Opcode::JGE => write!(f, "jge"),
            Opcode::JGEU => write!(f, "jgeu"),
            Opcode::JGT => write!(f, "jgt"),
            Opcode::JGTU => write!(f, "jgtu"),
            Opcode::JLE => write!(f, "jle"),
            Opcode::JLEU => write!(f, "jleu"),
            Opcode::JLT => write!(f, "jlt"),
            Opcode::JLTU => write!(f, "jltu"),
            Opcode::JMPI => write!(f, "jmpi"),
            Opcode::JMPS => write!(f, "jmps"),
            Opcode::JMP(size) => write!(f, "jmp.{}", size),
            Opcode::JN => write!(f, "jn"),
            Opcode::JNE => write!(f, "jne"),
            Opcode::JNO => write!(f, "jno"),
            Opcode::JO => write!(f, "jo"),
            Opcode::JPZ => write!(f, "jpz"),
            Opcode::JSRI => write!(f, "jsri"),
            Opcode::JSRS => write!(f, "jsrs"),
            Opcode::JSR(size) => write!(f, "jsr.{}", size),
            Opcode::LDC => write!(f, "ldc"),
            Opcode::LDCTX => write!(f, "ldctx"),
            Opcode::LDE => write!(f, "lde"),
            Opcode::LDIPL => write!(f, "ldipl"),
            Opcode::LT => write!(f, "lt"),
            Opcode::MOV(size) => write!(f, "mov.{}", size),
            Opcode::MOVA => write!(f, "mova"),
            Opcode::MOVHH => write!(f, "movhh"),
            Opcode::MOVHL => write!(f, "movhl"),
            Opcode::MOVLH => write!(f, "movlh"),
            Opcode::MOVLL => write!(f, "movll"),
            Opcode::MUL => write!(f, "mul"),
            Opcode::MULU(size) => write!(f, "mulu.{}", size),
            Opcode::NEG => write!(f, "neg"),
            Opcode::NO => write!(f, "no"),
            Opcode::NOP => write!(f, "nop"),
            Opcode::NOT(size) => write!(f, "not.{}", size),
            Opcode::OR(size) => write!(f, "or.{}", size),
            Opcode::POP => write!(f, "pop"),
            Opcode::POPC => write!(f, "popc"),
            Opcode::POPM => write!(f, "popm"),
            Opcode::PUSH(size) => write!(f, "push.{}", size),
            Opcode::PUSHA => write!(f, "pusha"),
            Opcode::PUSHC => write!(f, "push


marker = http_options.benchmarker ||
                             self.config.benchmarker ||
                             self.extra_options.benchmarker ||
                             exports.default_http_benchmarker;
  http_benchmarkers.run(http_options, function(error, code, used_benchmarker,
                                               result, elapsed) {
    if (cb) {
      cb(code);
    }
    if (error) {
      console.error(error);
      process.exit(code || 1);
    }
    self.config.benchmarker = used_benchmarker;
    self.report(result, elapsed);
  });
};

Benchmark.prototype._run = function() {
  const self = this;
  // If forked, report to the parent.
  if (process.send) {
    process.send({
      type: 'config',
      name: this.name,
      queueLength: this.queue.length
    });
  }

  (function recursive(queueIndex) {
    const config = self.queue[queueIndex];

    // set NODE_RUN_BENCHMARK_FN to indicate that the child shouldn't construct
    // a configuration queue, but just execute the benchmark function.
    const childEnv = Object.assign({}, process.env);
    childEnv.NODE_RUN_BENCHMARK_FN = '';

    // Create configuration arguments
    const childArgs = [];
    for (const key of Object.keys(config)) {
      childArgs.push(`${key}=${config[key]}`);
    }
    for (const key of Object.keys(self.extra_options)) {
      childArgs.push(`${key}=${self.extra_options[key]}`);
    }

    const child = child_process.fork(require.main.filename, childArgs, {
      env: childEnv,
      execArgv: self.flags.concat(process.execArgv)
    });
    child.on('message', sendResult);
    child.on('close', function(code) {
      if (code) {
        process.exit(code);
        return;
      }

      if (queueIndex + 1 < self.queue.length) {
        recursive(queueIndex + 1);
      }
    });
  })(0);
};

Benchmark.prototype.start = function() {
  if (this._started) {
    throw new Error('Called start more than once in a single benchmark');
  }
  this._started = true;
  this._time = process.hrtime();
};

Benchmark.prototype.end = function(operations) {
  // get elapsed time now and do error checking later for accuracy.
  const elapsed = process.hrtime(this._time);

  if (!this._started) {
    throw new Error('called end without start');
  }
  if (typeof operations !== 'number') {
    throw new Error('called end() without specifying operation count');
  }
  if (!process.env.NODEJS_BENCHMARK_ZERO_ALLOWED && operations <= 0) {
    throw new Error('called end() with operation count <= 0');
  }
  if (elapsed[0] === 0 && elapsed[1] === 0) {
    if (!process.env.NODEJS_BENCHMARK_ZERO_ALLOWED)
      throw new Error('insufficient clock precision for short benchmark');
    // avoid dividing by zero
    elapsed[1] = 1;
  }

  const time = elapsed[0] + elapsed[1] / 1e9;
  const rate = operations / time;
  this.report(rate, elapsed);
};

function formatResult(data) {
  // Construct configuration string, " A=a, B=b, ..."
  let conf = '';
  for (const key of Object.keys(data.conf)) {
    conf += ` ${key}=${JSON.stringify(data.conf[key])}`;
  }

  var rate = data.rate.toString().split('.');
  rate[0] = rate[0].replace(/(\d)(?=(?:\d\d\d)+(?!\d))/g, '$1,');
  rate = (rate[1] ? rate.join('.') : rate[0]);
  return `${data.name}${conf}: ${rate}`;
}

function sendResult(data)


Field(i)
			ptrField.Set(reflect.ValueOf(v))
		}

		for _, col := range s.custom {
			colName := strings.TrimPrefix(s.headers[col], "HB.field.")
			customVal := row[col]
			if customVal == "" {
				continue
			}

			rowData.Fields = append(rowData.Fields, ExportItemFields{
				Name:  colName,
				Value: customVal,
			})
		}

		s.Rows[i] = rowData
	}

	return nil
}

// ReadItems writes the sheet to a writer.
func (s *IOSheet) ReadItems(ctx context.Context, items []repo.ItemOut, GID uuid.UUID, repos *repo.AllRepos) error {
	s.Rows = make([]ExportTSVRow, len(items))

	extraHeaders := map[string]struct{}{}

	for i := range items {
		item := items[i]

		// TODO: Support fetching nested locations
		locID := item.Location.ID

		locPaths, err := repos.Locations.PathForLoc(context.Background(), GID, locID)
		if err != nil {
			log.Error().Err(err).Msg("could not get location path")
			return err
		}

		locString := fromPathSlice(locPaths)

		labelString := make([]string, len(item.Labels))

		for i, l := range item.Labels {
			labelString[i] = l.Name
		}

		customFields := make([]ExportItemFields, len(item.Fields))

		for i, f := range item.Fields {
			extraHeaders[f.Name] = struct{}{}

			customFields[i] = ExportItemFields{
				Name:  f.Name,
				Value: f.TextValue,
			}
		}

		s.Rows[i] = ExportTSVRow{
			// fill struct
			Location: locString,
			LabelStr: labelString,

			ImportRef:   item.ImportRef,
			AssetID:     item.AssetID,
			Name:        item.Name,
			Quantity:    item.Quantity,
			Description: item.Description,
			Insured:     item.Insured,
			Archived:    item.Archived,

			PurchasePrice: item.PurchasePrice,
			PurchaseFrom:  item.PurchaseFrom,
			PurchaseTime:  item.PurchaseTime,

			Manufacturer: item.Manufacturer,
			ModelNumber:  item.ModelNumber,
			SerialNumber: item.SerialNumber,

			LifetimeWarranty: item.LifetimeWarranty,
			WarrantyExpires:  item.WarrantyExpires,
			WarrantyDetails:  item.WarrantyDetails,

			SoldTo:    item.SoldTo,
			SoldTime:  item.SoldTime,
			SoldPrice: item.SoldPrice,
			SoldNotes: item.SoldNotes,

			Fields: customFields,
		}
	}

	// Extract and sort additional headers for deterministic output
	customHeaders := make([]string, 0, len(extraHeaders))

	for k := range extraHeaders {
		customHeaders = append(customHeaders, k)
	}

	sort.Strings(customHeaders)

	st := reflect.TypeOf(ExportTSVRow{})

	// Write headers
	for i := 0; i < st.NumField(); i++ {
		field := st.Field(i)
		tag := field.Tag.Get("csv")
		if tag == "" || tag == "-" {
			continue
		}

		s.headers = append(s.headers, tag)
	}

	for _, h := range customHeaders {
		s.headers = append(s.headers, "HB.field."+h)
	}

	return nil
}

// TSV writes the current sheet to a writer in TSV format.
func (s *IOSheet) TSV() ([][]string, error) {
	memcsv := make([][]string, len(s.Rows)+1)

	memcsv[0] = s.headers

	// use struct tags in rows to dertmine column order
	for i, row := range s.Rows {
		rowIdx :=


z r31, 0xc(r1)
/* 802B1F3C 002AEE7C  83 C1 00 08 */	lwz r30, 8(r1)
/* 802B1F40 002AEE80  7C 08 03 A6 */	mtlr r0
/* 802B1F44 002AEE84  38 21 00 10 */	addi r1, r1, 0x10
/* 802B1F48 002AEE88  4E 80 00 20 */	blr
.endfn exec__Q34Game9BombSarai10StateFlickFPQ24Game9EnemyBase

.fn cleanup__Q34Game9BombSarai10StateFlickFPQ24Game9EnemyBase, global
/* 802B1F4C 002AEE8C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802B1F50 002AEE90  7C 08 02 A6 */	mflr r0
/* 802B1F54 002AEE94  7C 83 23 78 */	mr r3, r4
/* 802B1F58 002AEE98  90 01 00 14 */	stw r0, 0x14(r1)
/* 802B1F5C 002AEE9C  4B E4 FA 21 */	bl setEmotionCaution__Q24Game9EnemyBaseFv
/* 802B1F60 002AEEA0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802B1F64 002AEEA4  7C 08 03 A6 */	mtlr r0
/* 802B1F68 002AEEA8  38 21 00 10 */	addi r1, r1, 0x10
/* 802B1F6C 002AEEAC  4E 80 00 20 */	blr
.endfn cleanup__Q34Game9BombSarai10StateFlickFPQ24Game9EnemyBase

.fn init__Q34Game9BombSarai14StateBombFlickFPQ24Game9EnemyBasePQ24Game8StateArg, global
/* 802B1F70 002AEEB0  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 802B1F74 002AEEB4  7C 08 02 A6 */	mflr r0
/* 802B1F78 002AEEB8  90 01 00 14 */	stw r0, 0x14(r1)
/* 802B1F7C 002AEEBC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 802B1F80 002AEEC0  7C 9F 23 78 */	mr r31, r4
/* 802B1F84 002AEEC4  7F E3 FB 78 */	mr r3, r31
/* 802B1F88 002AEEC8  80 04 01 E0 */	lwz r0, 0x1e0(r4)
/* 802B1F8C 002AEECC  60 00 00 04 */	ori r0, r0, 4
/* 802B1F90 002AEED0  90 04 01 E0 */	stw r0, 0x1e0(r4)
/* 802B1F94 002AEED4  80 04 01 E0 */	lwz r0, 0x1e0(r4)
/* 802B1F98 002AEED8  64 00 00 20 */	oris r0, r0, 0x20
/* 802B1F9C 002AEEDC  90 04 01 E0 */	stw r0, 0x1e0(r4)
/* 802B1FA0 002AEEE0  4B E4 FA 2D */	bl setEmotionExcitement__Q24Game9EnemyBaseFv
/* 802B1FA4 002AEEE4  7F E3 FB 78 */	mr r3, r31
/* 802B1FA8 002AEEE8  38 80 00 03 */	li r4, 3
/* 802B1FAC 002AEEEC  38 A0 00 00 */	li r5, 0
/* 802B1FB0 002AEEF0


 an interval or are disabled.
 */
export type RecordingConfigurationThumbnailConfigurationRecordingMode = (typeof RecordingConfigurationThumbnailConfigurationRecordingMode)[keyof typeof RecordingConfigurationThumbnailConfigurationRecordingMode];

export const RecordingConfigurationThumbnailConfigurationResolution = {
    FullHd: "FULL_HD",
    Hd: "HD",
    Sd: "SD",
    LowestResolution: "LOWEST_RESOLUTION",
} as const;

/**
 * Resolution indicates the desired resolution of recorded thumbnails.
 */
export type RecordingConfigurationThumbnailConfigurationResolution = (typeof RecordingConfigurationThumbnailConfigurationResolution)[keyof typeof RecordingConfigurationThumbnailConfigurationResolution];

export const RecordingConfigurationThumbnailConfigurationStorageItem = {
    Sequential: "SEQUENTIAL",
    Latest: "LATEST",
} as const;

export type RecordingConfigurationThumbnailConfigurationStorageItem = (typeof RecordingConfigurationThumbnailConfigurationStorageItem)[keyof typeof RecordingConfigurationThumbnailConfigurationStorageItem];
import program from 'commander'

import getJson from './getJson'

type SparkConfig = {
    filetype: string,
    output: string,
    proptypes: boolean,
    componentDirectory: boolean
}

type Args = {
    class: boolean,
    connect: boolean
}

type NameAndPath = {
    filename: string,
    filepath: string
}

type Default = Args & SparkConfig;
export type Config = Default & NameAndPath;

const defaultConfig: Default = {
    class: false,
    connect: false,
    filetype: 'jsx',
    output: 'src',
    proptypes: true,
    componentDirectory: false
}

function getFileAndPath(path: string): NameAndPath {
    const output: NameAndPath = {
        filename: path,
        filepath: '/'
    }
    if (path.includes('/')) {
        const slashIndex = path.lastIndexOf('/')
        output.filename = path.slice(slashIndex + 1)
        output.filepath = path.slice(0, slashIndex)
    }
    return output
}

export default function (): Config {
    program
        .version(require('../package.json').version)
        .option('-C, --class', `create class component`, defaultConfig.class)
        .option('-c, --connect', 'connect to Redux', defaultConfig.connect)
        .parse(process.argv)
    // console.log('program', program)

    return {
        ...defaultConfig,
        ...getJson('.sparkrc.json'),
        class: program.class,
        connect: program.connect,
        ...getFileAndPath(program.args[0])
    }
}module Begin {
    export class Map1 extends Phaser.State {
        map: Begin.Map;

        create () {
            let nomLevel = 'Map1';
            let tilemap = 'map1';
            let tileset = ['spring', 'spring'];
            let backgrounds = ['spring_bg_1', 'spring_bg_2', 'spring_bg_3'];
            this.map = new Map(this.game, nomLevel, tilemap, tileset, backgrounds);

            this.map.create();
        }

        update () {
            this.map.update();
        }

        render () {
            this.map.render();
        }
    }

    export class Map2 extends Phaser.State {
        map: Begin.Map;

        create () {
            let nomLevel = 'Map2';
            let tilemap = 'map2';
            let tileset =


T_wait_init(aINS_INSECT_ACTOR* insect, GAME* game) {
    insect->timer = (90 + RANDOM_F(90.0f)) * 2.0f;
    insect->tools_actor.actor_class.speed = 0.0f;
    insect->speed_step = 0.0f;
}

typedef void (*aITT_INIT_PROC)(aINS_INSECT_ACTOR* insect, GAME* game);

/**
 * Sets up a new action state for the insect.
 *
 * @param insect Insect to update
 * @param action New action to perform
 * @param game Current game context
 */
static void aITT_setupAction(aINS_INSECT_ACTOR* insect, int action, GAME* game) {
    static aITT_INIT_PROC init_proc[] = {
        aITT_avoid_init,
        aITT_avoid_maimai_init,
        aITT_avoid_init,
        aITT_avoid_maimai_init,
        aITT_move_init,
        aITT_wait_init,
    };

    static aINS_ACTION_PROC act_proc[] = {
        aITT_avoid,
        aITT_avoid_maimai,
        aITT_avoid,
        aITT_avoid_maimai,
        aITT_move,
        aITT_wait,
    };

    insect->action = action;
    insect->action_proc = act_proc[action];
    (*init_proc[action])(insect, game);
}

/**
 * Main movement update function for flower-based insect actors.
 *
 * @param actorx Actor to update
 * @param game Current game context
 */
static void aITT_actor_move(ACTOR* actorx, GAME* game) {
    aINS_INSECT_ACTOR* insect = (aINS_INSECT_ACTOR*)actorx;
    u32 catch_label = mPlib_Get_item_net_catch_label();

    if (catch_label == (u32)actorx) {
        // @BUG - They forgot to make a separate case for the snail,
        // so it uses the ladybug/spotted ladybug/mantis let escape behavior.
        // This was fixed in the Australian release.
        // Aus version fixes this!
#if !defined(BUGFIXES) && VERSION < VER_GAFU01_00
        aITT_setupAction(insect, aITT_ACT_LET_ESCAPE, game);
#else
        int action;

        switch (insect->type) {
            case aINS_INSECT_TYPE_SNAIL:
                actorx->world.position.y = mCoBG_GetBgY_OnlyCenter_FromWpos(actorx->world.position, 0.0f);
                actorx->home.position.y = actorx->world.position.y;
                action = aITT_ACT_LET_ESCAPE_MAIMAI;
                break;
            default:
                action = aITT_ACT_LET_ESCAPE;
                break;
        }

        aITT_setupAction(insect, action, game);
#endif
    } else if (insect->insect_flags.bit_3 == TRUE && insect->insect_flags.bit_2 == FALSE) {
        aITT_setupAction(insect, aITT_ACT_LET_ESCAPE, game);
    } else {
        insect->action_proc(actorx, game);
    }
}


hin,.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb:hover,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@supports selector(::-webkit-scrollbar){.md-sidebar__scrollwrap{scrollbar-gutter:auto}[dir=ltr] .md-sidebar__inner{padding-right:calc(100% - 11.5rem)}[dir=rtl] .md-sidebar__inner{padding-left:calc(100% - 11.5rem)}}@media screen and (max-width:76.234375em){.md-overlay{background-color:#0000008a;height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@keyframes facts{0%{height:0}to{height:.65rem}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"/></svg>');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"/></svg>');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766


; Jaws -- can remove the sine table to make smaller

; inner loop after lots of ops = 49 cycles (376320) = 2.6fps
;		optimized to 38 (256-entry sine table) = (291840) = 3.4fps
;		optimized to 37 (row_sum smc) = (284160) = 3.5fps

; zero page
GBASL	= $26
GBASH	= $27
YY	= $69
ROW_SUM = $70

HGR_X           = $E0
HGR_XH          = $E1
HGR_Y           = $E2
HGR_COLOR       = $E4
HGR_PAGE        = $E6

FRAME	= $FC
SUM	= $FD
SAVEX	= $FE
SAVEY	= $FF

; soft-switches
FULLGR	= $C052
PAGE1	= $C054

; ROM routines

HGR2	= $F3D8
HPOSN	= $F411		; (Y,X),(A)  (values stores in HGRX,XH,Y)

	;================================
	; Clear screen and setup graphics
	;================================
oval:

	jsr	HGR2		; set hi-res 140x192, page2, fullscreen

	;====================
	; create sinetable

	ldy	#0
sinetable_loop:
	tya							; 2
	and	#$3f	; wrap sine at 63 entries		; 2

	cmp	#$20
	php		; save pos/negative for later

	and	#$1f

	cmp	#$10
	bcc	sin_left

sin_right:
	; sec	carry should be set?
	eor	#$FF
	adc	#$20		; 32-X
sin_left:
	tax
	lda	sinetable_base,X				; 4+
	lsr
	lsr

	plp
	bcc	sin_done

sin_negate:
	; carry set here
	eor	#$ff
	adc	#0

sin_done:
	sta	sinetable,Y

	iny
	bne	sinetable_loop

	; NOTE: making gbash/gbasl table wasn't worth it

	;============================
	; main loop
	;============================

draw_oval:
	inc	FRAME

	ldx	#191		; YY


le hash since the key is guaranteed to be the result of a secure hash.
		pub Reasons get(fn reasons): map hasher(identity) T::Hash => Option<Vec<u8>>;

	}
}

decl_event!(
	pub enum Event<T>
	where
		Balance = BalanceOf<T>,
		<T as frame_system::Config>::AccountId,
		<T as frame_system::Config>::Hash,
	{
		/// A new tip suggestion has been opened. \[tip_hash\]
		NewTip(Hash),
		/// A tip suggestion has reached threshold and is closing. \[tip_hash\]
		TipClosing(Hash),
		/// A tip suggestion has been closed. \[tip_hash, who, payout\]
		TipClosed(Hash, AccountId, Balance),
		/// A tip suggestion has been retracted. \[tip_hash\]
		TipRetracted(Hash),
		/// A tip suggestion has been slashed. \[tip_hash, finder, deposit\]
		TipSlashed(Hash, AccountId, Balance),
	}
);

decl_error! {
	/// Error for the tips module.
	pub enum Error for Module<T: Config> {
		/// The reason given is just too big.
		ReasonTooBig,
		/// The tip was already found/started.
		AlreadyKnown,
		/// The tip hash is unknown.
		UnknownTip,
		/// The account attempting to retract the tip is not the finder of the tip.
		NotFinder,
		/// The tip cannot be claimed/closed because there are not enough tippers yet.
		StillOpen,
		/// The tip cannot be claimed/closed because it's still in the countdown period.
		Premature,
	}
}

decl_module! {
	pub struct Module<T: Config>
		for enum Call
		where origin: T::Origin
	{
		/// The period for which a tip remains open after is has achieved threshold tippers.
		const TipCountdown: T::BlockNumber = T::TipCountdown::get();

		/// The amount of the final tip which goes to the original reporter of the tip.
		const TipFindersFee: Percent = T::TipFindersFee::get();

		/// The amount held on deposit for placing a tip report.
		const TipReportDepositBase: BalanceOf<T> = T::TipReportDepositBase::get();

		/// The amount held on deposit per byte within the tip report reason.
		const DataDepositPerByte: BalanceOf<T> = T::DataDepositPerByte::get();

		/// Maximum acceptable reason length.
		const MaximumReasonLength: u32 = T::MaximumReasonLength::get();

		type Error = Error<T>;

		fn deposit_event() = default;

		/// Report something `reason` that deserves a tip and claim any eventual the finder's fee.
		///
		/// The dispatch origin for this call must be _Signed_.
		///
		/// Payment: `TipReportDepositBase` will be reserved from the origin account, as well as
		/// `DataDepositPerByte` for each byte in `reason`.
		///
		/// - `reason`: The reason for, or the thing that deserves, the tip; generally this will be
		///   a UTF-8-encoded URL.
		/// - `who`: The account which should be credited for the tip.
		///
		/// Emits `NewTip` if successful.
		///
		/// # <weight>
		/// - Complexity: `O(R)` where `R` length of `reason`.
		///   - encoding and hashing of 'reason'
		/// - DbReads: `Reasons`, `Tips`
		/// - DbWrites: `Reasons`, `Tips`
		/// # </weight>
		#[weight = <T as Config>::WeightInfo::report_awesome(reason.len() as u32)]
		fn report_awesome(origin, reason: Vec<u8>, who: T::AccountId) {
			let finder = ensure_signed(origin)?;

			ensure!(reason.len() <= T::MaximumReasonLength::get() as usize, Error::<T>::ReasonTooBig);

			let reason_hash = T::Hashing::hash(&reason[..]);
			ensure!(!Reasons::<T>::contains_key(&reason_hash), Error::<T>::AlreadyKnown);
			let hash = T::Hashing::hash_


 code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

/*
 * @test
 * @key randomness
 *
 * @summary converted from VM Testbase nsk/monitoring/ThreadMXBean/GetThreadCpuTime/illegalArgumentsTest_proxy_custom.
 * VM Testbase keywords: [quick, monitoring, feature_memory_alloc]
 * VM Testbase readme:
 * DESCRIPTION
 *     This test executes IllegalArgumentsTest
 *     For more info please refer to IllegalArgumentsTest.README
 *     Test configuration:
 *     Access to management metrics via default MBean server proxy
 * COMMENTS
 *
 * @library /vmTestbase
 *          /test/lib
 * @run main/othervm
 *      nsk.monitoring.ThreadMXBean.GetThreadCpuTime.IllegalArgumentsTest
 *      -testMode=proxy
 *      -MBeanServer=custom
 */

/*
 * Copyright (c) 2010, 2020, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

/*
 * @test
 *
 * @summary converted from VM Testbase nsk/monitoring/LockTest/LockTest001.
 * VM Testbase keywords: [monitoring, vm6]
 *
 * @library /vmTestbase
 *          /test/lib
 * @run main/othervm nsk.monitoring.LockTest.LockTest001.LockTest001
 */

package nsk.monitoring.LockTest.LockTest001;

import java.lang.management.ThreadInfo;
import java.lang.management.ManagementFactory;

import nsk.share.TestFailure;

public class LockTest001
{
  private Object syncObj = new Object();

  public LockTest001()
  {  }

  public void test()
  {

    int localVar0, localVar1, localVar2, localVar3, localVar4, localVar5, localVar6, localVar7, localVar8, localVar9;
    int localVar10, localVar11, localVar12, localVar13, localVar14, localVar15, localVar16, localVar17, localVar18, localVar19;
    int localVar20, localVar21, localVar22, localVar23, localVar24, localVar25, localVar26, localVar27, localVar28, localVar29;
    int localVar30, localVar31, localVar32, localVar33, localVar34, localVar35, localVar36, localVar37, localVar38, localVar39;
    int localVar40, localVar41, localVar42, localVar43, localVar44, localVar45, localVar46, localVar47, localVar48, localVar49;

    String threadName = Thread.currentThread().getName();
    System.out.println(threadName + "


.

[#1670] Improved
			the background color behind smiley icons and special characters in their corresponding
			dialogs.

[#1693] Custom
			error messages are now properly displayed in the file browser.

[#970] The text
			and value fields in the selection box dialog will no longer extend beyond the dialog
			limits when the user inputs a very long text or value for one of the selection options.

[#479] Fixed the
			issue where pressing Enter in an <o:p> tag in IE does not generate line breaks.

[#481] Fixed the
			issue where the image preview in image dialog sometimes doesn't display after selecting
			the image from server browser.

[#1488] PHP integration:
			the FCKeditor class is now more PHP5/6 friendly ("public" keyword is used instead
			of depreciated "var").

[#1815] PHP integration:
			removed closing tag: "?>", so no additional whitespace added when files are included.

[#1906] PHP file
			browser: fixed problems with DetectHtml() function when open_basedir was set.

[#1871] PHP file
			browser: permissions applied with the chmod command are now configurable.

[#1872] Perl
			file browser: permissions applied with the chmod command are now configurable.

[#1873] Python
			file browser: permissions applied with the chmod command are now configurable.

[#1572] ColdFusion
			integration: fixed issues with setting the editor height.

[#1692] ColdFusion
			file browser: it is possible now to define TempDirectory to avoid issues with GetTempdirectory()
			returning an empty string.

[#1379] ColdFusion
			file browser: resolved issues with OnRequestEnd.cfm breaking the file browser.

[#1509] InsertHtml()
			in IE will no longer turn the preceding normal whitespace into &nbsp;.

[#958] The AddItem
			method now has an additional fifth parameter "customData" that wi


HOLD );
		}
	}
	// Hit in the left arm?
	else if ((hitLoc==HL_ARM_LT) && (self->locationDamage[HL_ARM_LT] > LEFT_ARM_HEALTH))
	{
		if (self->locationDamage[hitLoc] >= LEFT_ARM_HEALTH)	// Blow it up?
		{
			newBolt = gi.G2API_AddBolt( &self->ghoul2[self->playerModel], "*flash3" );
			if ( newBolt != -1 )
			{
				NPC_Mark1_Part_Explode(self,newBolt);
			}

			gi.G2API_SetSurfaceOnOff( &self->ghoul2[self->playerModel], "l_arm", TURN_OFF );
		}
	}
	// Hit in the right arm?
	else if ((hitLoc==HL_ARM_RT) && (self->locationDamage[HL_ARM_RT] > RIGHT_ARM_HEALTH))	// Blow it up?
	{
		if (self->locationDamage[hitLoc] >= RIGHT_ARM_HEALTH)
		{
			newBolt = gi.G2API_AddBolt( &self->ghoul2[self->playerModel], "*flash4" );
			if ( newBolt != -1 )
			{
//				G_PlayEffect( "small_chunks", self->playerModel, self->genericBolt2, self->s.number);
				NPC_Mark1_Part_Explode( self, newBolt );
			}

			gi.G2API_SetSurfaceOnOff( &self->ghoul2[self->playerModel], "r_arm", TURN_OFF );
		}
	}
	// Check ammo pods
	else
	{
		for (i=0;i<6;i++)
		{
			if ((hitLoc==HL_GENERIC1+i) && (self->locationDamage[HL_GENERIC1+i] > AMMO_POD_HEALTH))	// Blow it up?
			{
				if (self->locationDamage[hitLoc] >= AMMO_POD_HEALTH)
				{
					newBolt = gi.G2API_AddBolt( &self->ghoul2[self->playerModel], va("*torso_tube%d",(i+1)) );
					if ( newBolt != -1 )
					{
						NPC_Mark1_Part_Explode(self,newBolt);
					}
					gi.G2API_SetSurfaceOnOff( &self->ghoul2[self->playerModel], va("torso_tube%d",(i+1)), TURN_OFF );
					NPC_SetAnim( self, SETANIM_BOTH, BOTH_PAIN1, SETANIM_FLAG_OVERRIDE|SETANIM_FLAG_HOLD );
					break;
				}
			}
		}
	}

	// Are both guns shot off?
	if ((gi.G2API_GetSurfaceRenderStatus( &self->ghoul2[self->playerModel], "l_arm" )) &&
		(gi.G2API_GetSurfaceRenderStatus( &self->ghoul2[self->playerModel], "r_arm" )))
	{
		G_Damage(self,NULL,NULL,NULL,NULL,self->health,0,MOD_UNKNOWN);
	}

}

/*
-------------------------
Mark1_Hunt
- look for enemy.
-------------------------`
*/
void Mark1_Hunt(void)
{

	if ( NPCInfo->goalEntity == NULL )
	{
		NPCInfo->goalEntity = NPC->enemy;
	}

	NPC_FaceEnemy( qtrue );

	NPCInfo->combatMove = qtrue;
	NPC_MoveToGoal( qtrue );
}

/*
-------------------------
Mark1_FireBlaster
- Shoot the left weapon, the multi-blaster
-------------------------
*/
void Mark1_FireBlaster(void)
{
	vec3_t	muzzle1,enemy_org1,delta1,angleToEnemy1;
	static	vec3_t	forward, vright, up;
	gentity_t	*missile;
	mdxaBone_t	boltMa


-meccanismo-di-calibrazione-appropriato) per sceglierne uno.

Eseguire il comando appropriato nella finestra del terminale di OctoPrint. Lo script richiederà l'interazione dell'utente nell'output del terminale OctoPrint. Sembrerà qualcosa come:

```
Recv: // Starting manual Z probe. Use TESTZ to adjust position.
Recv: // Finish with ACCEPT or ABORT command.
Recv: // Z position: ?????? --> 5.000 <-- ??????
```

L'altezza attuale dell'ugello (come la intende attualmente la stampante) è mostrata tra "--> <--". Il numero a destra è l'altezza dell'ultimo tentativo di sonda appena maggiore dell'altezza attuale e a sinistra è l'ultimo tentativo di sonda inferiore all'altezza attuale (o ?????? se non è stato effettuato alcun tentativo).

Metti la carta tra l'ugello e il letto. Può essere utile piegare un angolo della carta in modo che sia più facile da afferrare. (Cerca di non spingere il piatto quando muovi la carta avanti e indietro.)

![paper-test](img/paper-test.jpg)

Utilizzare il comando TESTZ per richiedere all'ugello di avvicinarsi alla carta. Per esempio:

```
TESTZ Z=-.1
```

Il comando TESTZ sposterà l'ugello di una distanza relativa dalla posizione corrente dell'ugello. (Quindi, `Z=-.1` richiede che l'ugello si avvicini al piatto di 0,1 mm.) Dopo che l'ugello ha smesso di muoversi, spingere la carta avanti e indietro per controllare se l'ugello è in contatto con la carta e per sentire la quantità di attrito. Continua a emettere comandi TESTZ finché non si avverte una piccola quantità di attrito durante il test con la carta.

Se si trova troppo attrito, è possibile utilizzare un valore Z positivo per spostare l'ugello verso l'alto. È anche possibile utilizzare `TESTZ Z=+` o `TESTZ Z=-` per "sezionare in due" l'ultima posizione, ovvero per spostarsi in una posizione a metà strada tra due posizioni. Ad esempio, se si riceve il seguente prompt da un comando TESTZ:

```
Recv: // Z position: 0.130 --> 0.230 <-- 0.280
```

Quindi un `TESTZ Z=-` sposterebbe l'ugello in una posizione Z di 0,180 (a metà strada tra 0,130 e 0,230). È possibile utilizzare questa funzione per ridurre rapidamente a un attrito costante. È anche possibile usare `Z=++` e `Z=--` per tornare direttamente a una misurazione passata - per esempio, dopo il prompt sopra un comando `TESTZ Z=--` sposterebbe l'ugello su una Z posizione di 0,130.

Dopo aver trovato una piccola quantità di attrito, eseguire il comando ACCETTA:

```
ACCEPT
```

Questo accetterà l'altezza Z data e procederà con lo strumento di calibrazione fornito.

L'esatta quantità di attrito percepito non è cruciale, così come la quantità di espansione termica e l'esatta larghezza della carta non sono cruciali. Cerca solo di ottenere la stessa quantità di attrito ogni volta che esegui il test.

Se qualcosa va storto durante il test, è possibile utilizzare il comando `ABORT` per uscire dallo strumento di calibrazione.

## Determinare l'espansione termica

Dopo aver eseguito con successo il livellamento del piatto, s


d2[], d3[]}, [r4:32]!
@ CHECK-ERRORS:                                               ^
@ CHECK: vld4.16 {d0[], d1[], d2[], d3[]}, [r4:64]! @ encoding: [0xa4,0xf9,0x5d,0x0f]
@ CHECK-ERRORS: error: alignment must be 64 or omitted
@ CHECK-ERRORS:         vld4.16 {d0[], d1[], d2[], d3[]}, [r4:128]!
@ CHECK-ERRORS:                                               ^
@ CHECK-ERRORS: error: alignment must be 64 or omitted
@ CHECK-ERRORS:         vld4.16 {d0[], d1[], d2[], d3[]}, [r4:256]!
@ CHECK-ERRORS:                                               ^

	vld4.16	{d0[], d1[], d2[], d3[]}, [r4], r6
	vld4.16	{d0[], d1[], d2[], d3[]}, [r4:16], r6
	vld4.16	{d0[], d1[], d2[], d3[]}, [r4:32], r6
	vld4.16	{d0[], d1[], d2[], d3[]}, [r4:64], r6
	vld4.16	{d0[], d1[], d2[], d3[]}, [r4:128], r6
	vld4.16	{d0[], d1[], d2[], d3[]}, [r4:256], r6

@ CHECK: vld4.16 {d0[], d1[], d2[], d3[]}, [r4], r6 @ encoding: [0xa4,0xf9,0x46,0x0f]
@ CHECK-ERRORS: error: alignment must be 64 or omitted
@ CHECK-ERRORS:         vld4.16 {d0[], d1[], d2[], d3[]}, [r4:16], r6
@ CHECK-ERRORS:                                               ^
@ CHECK-ERRORS: error: alignment must be 64 or omitted
@ CHECK-ERRORS:         vld4.16 {d0[], d1[], d2[], d3[]}, [r4:32], r6
@ CHECK-ERRORS:                                               ^
@ CHECK: vld4.16 {d0[], d1[], d2[], d3[]}, [r4:64], r6 @ encoding: [0xa4,0xf9,0x56,0x0f]
@ CHECK-ERRORS: error: alignment must be 64 or omitted
@ CHECK-ERRORS:         vld4.16 {d0[], d1[], d2[], d3[]}, [r4:128], r6
@ CHECK-ERRORS:                                               ^
@ CHECK-ERRORS: error: alignment must be 64 or omitted
@ CHECK-ERRORS:         vld4.16 {d0[], d1[], d2[], d3[]}, [r4:256], r6
@ CHECK-ERRORS:                                               ^

	vld4.16	{d0[], d2[], d4[], d6[]}, [r4]
	vld4.16	{d0[], d2[], d4[], d6[]}, [r4:16]
	vld4.16	{d0[], d2[], d4[], d6[]}, [r4:32]
	vld4.16	{d0[], d2[], d4[], d6[]}, [r4:64]
	vld4.16	{d0[], d2[], d4[], d6[]}, [r4:128]
	vld4.16	{d0[], d2[], d4[], d6[]}, [r4:256]

@ CHECK: vld4.16 {d0[], d2[], d4[], d6[]}, [r4] @ encoding: [0xa4,0xf9,0x6f,0x0f]
@ CHECK-ERRORS: error: alignment must be 64 or omitted
@ CHECK-


8494] = "Poleiro de Papagaio (Arara-jacinto)",
[8495] = "Poleiro de Papagaio (Senegal)",
[8496] = "Poleiro de Papagaio (Cacatua)",
[8497] = "Caixote de Coelho (Nevinhal)",
[8498] = "Dragonetinho Esmeralda",
[8499] = "Dragonetinho Carmesim",
[8500] = "Corujão-orelhudo",
[8501] = "Falcoruja",
[8502] = "Caixa de Loteria de Bronze",
[8503] = "Caixa de Loteria de Bronze Pesada",
[8504] = "Caixa de Loteria de Ferro",
[8505] = "Caixa de Loteria de Ferro Pesada",
[8506] = "Caixa de Loteria de Mithril",
[8507] = "Caixa de Loteria de Mithril Pesada",
[8508] = "Barbatana Grande",
[8523] = "Kit de Teste de Campo",
[8524] = "Modelo 4711-KTC Fonte de Energia",
[8525] = "Ordem de Compra da Zilda",
[8526] = "Tragão Violeta",
[8527] = "Kit de Teste de Campo Lacrado",
[8528] = "Pó Violeta",
[8529] = "Elixir Nublacuca",
[8543] = "Cogumelo Subaquático",
[8544] = "Bandagem de Magitrama",
[8545] = "Bandagem Grossa de Magitrama",
[8546] = "Sais Aromáticos Poderosos",
[8547] = "Formula: Powerful Smelling Salts [PH]",
[8548] = "Bastão Divinomático",
[8563] = "Mecanostruz Vermelho",
[8564] = "Ovo de Hipogrifo",
[8583] = "Trompa da Montaria Descarnada",
[8584] = "Treco de Coleta Vazio",
[8585] = "Treco de Coleta Cheio",
[8586] = "Apito do Raptor Vermelho Mosqueado",
[8587] = "Pedaços de Inseto Centiparte",
[8588] = "Apito do Raptor Esmeralda",
[8589] = "Apito Velho do Raptor Marfim",
[8590] = "Apito Velho do Raptor Obsidiano",
[8591] = "Apito do Raptor Turquesa",
[8592] = "Apito do Raptor Violeta",
[8593] = "Aparelho de Inspeção do Anilhacido",
[8594] = "Relatório de Análise de Insetos",
[8595] = "Mecanostruz Azul",
[8603] = "Orvalho Moitagulhas",
[8623] = "Transmissor de Emergência OOX-17/TN",
[8624] = "Faiscante Vermelho",
[8625] = "Faiscante Branco",
[8626] = "Faiscante Azul",
[8627] = "Rédeas do Sabre-da-noite",
[8628] = "Rédeas do Sabre-da-noite Malhado",
[8629] = "Rédeas do Sabre-da-noite Listrado",
[8630] = "Rédeas do Tigre de Bengala",
[8631] = "Rédeas do Sabre-de-gelo Listrado",
[8632] = "Rédeas do Sabre-de-gelo Malhado",
[8633] = "Rédeas do Leopardo",
[8643] = "Ovo Extraordinário",
[8644] = "Ovo Fecundo",
[8645] = "Ovo Comum",
[8646]


ntributors.
 *
 * Project Info:  http://www.jfree.org/jfreechart/index.html
 *
 * This library is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 2.1 of the License, or
 * (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
 * License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
 * USA.
 *
 * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
 * in the United States and other countries.]
 *
 * ------------------------
 * XYItemRendererState.java
 * ------------------------
 * (C) Copyright 2003-2008, by Object Refinery Limited and Contributors.
 *
 * Original Author:  David Gilbert (for Object Refinery Limited);
 * Contributor(s):   Ulrich Voigt;
 *                   Greg Darke;
 *
 * Changes:
 * --------
 * 07-Oct-2003 : Version 1 (DG);
 * 27-Jan-2004 : Added workingLine attribute (DG);
 * ------------- JFREECHART 1.0.x ---------------------------------------------
 * 04-May-2007 : Added processVisibleItemsOnly flag (DG);
 * 09-Jul-2008 : Added start/endSeriesPass() methods - see patch 1997549 by
 *               Ulrich Voigt (DG);
 * 19-Sep-2008 : Added first and last item indices, based on patch by Greg
 *               Darke (DG);
 *
 */

package org.jfree.chart.renderer.xy;

import java.awt.geom.Line2D;

import org.jfree.chart.plot.PlotRenderingInfo;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.RendererState;
import org.jfree.data.xy.XYDataset;

/**
 * The state for an {@link XYItemRenderer}.
 */
public class XYItemRendererState extends RendererState {

    /**
     * The first item in the series that will be displayed.
     *
     * @since 1.0.11
     */
    private int firstItemIndex;

    /**
     * The last item in the current series that will be displayed.
     *
     * @since 1.0.11
     */
    private int lastItemIndex;

    /**
     * A line object that the renderer can reuse to save instantiating a lot
     * of objects.
     */
    public Line2D workingLine;

    /**
     * A flag that controls whether the plot should pass ALL data items to the
     * renderer, or just the items that will be visible.
     *
     * @since 1.0.6
     */
    private boolean processVisibleItemsOnly;

    /**
     * Creates a new state.
     *
     * @param info  the plot rendering info.
     */
    public XYItemRendererState(PlotRenderingInfo info) {
        super(info);
        this.workingLine = new Line2D.Double();
        this.processVisibleItemsOnly = true;
    }

    /**
     * Returns the flag that controls whether the plot passes all data
     * items in each series to the renderer, or just the visible items.  The
     * default value is true.
     *
     * @return A boolean.
     *
     * @since 1.0.6
     *
     * @see #setProcessVisibleItemsOnly(boolean)
     */
    public boolean getProcessVisibleItemsOnly() {
        return this.processVisibleItemsOnly;
    }

    /**
     * Sets the flag that controls whether the plot passes all data
     * items in each series to the renderer, or just the visible items.
     *
     * @param flag  the new flag value.
     *
     * @since 1.0.6
     */
    public void setProcessVisibleItemsOnly(boolean flag) {
        this.processVisibleItemsOnly = flag;
    }

    /**
     * Returns


nputStream): MapSpawnType {
        val mapSquare = parseMapSquare(fileName)
        val bytes = input.use(InputStream::readAllBytes)
        val definition = MapNpcListDecoder.decode(InlineByteBuf(bytes))
        return MapSpawnType(mapSquare, definition)
    }

    private fun parseMapSquare(fileName: String): MapSquareKey {
        val parts = fileName.removePrefix("n").split('_')
        if (parts.size != 2) {
            val message = "Npc file name must be in format `n[x]_[z]` (e.g., `n50_50`): $fileName"
            throw IOException(message)
        }
        val x = parts[0].toIntOrNull() ?: error("Invalid x-coordinate in file name: $fileName")
        val z = parts[1].toIntOrNull() ?: error("Invalid z-coordinate in file name: $fileName")
        return MapSquareKey(x, z)
    }

    private fun List<MapSpawnType>.mergeToMap(): Map<MapSquareKey, MapNpcListDefinition> {
        val merged = mutableMapOf<MapSquareKey, MapNpcListDefinition>()
        for ((mapSquare, def) in this) {
            merged.merge(mapSquare, def, MapNpcListDefinition::merge)
        }
        return merged
    }

    private data class MapSpawnType(val mapSquare: MapSquareKey, val spawns: MapNpcListDefinition)

    private data class TomlNpcSpawn(val npc: String, val coords: CoordGrid)

    private companion object {
        const val TOML_SPAWN_KEY = "spawn"
    }
}
package org.rsmod.api.type.script.dsl

import kotlin.reflect.KClass
import org.rsmod.game.type.literal.CacheVarTypeMap
import org.rsmod.game.type.param.ParamTypeBuilder
import org.rsmod.game.type.param.UnpackedParamType

@DslMarker private annotation class ParamBuilderDsl

@ParamBuilderDsl
public class ParamPluginBuilder(internal: String?) {
    private val backing = TypedParamPluginBuilder<Any>(null, internal)
    public var autoDisable: Boolean? by backing::autoDisable
    public var transmit: Boolean by backing::transmit

    public fun build(id: Int): UnpackedParamType<Any> = backing.build(id)
}

@ParamBuilderDsl
public class TypedParamPluginBuilder<T : Any>(
    public val type: KClass<T>?,
    public var internal: String? = null,
) {
    public var default: T? = null
    public var autoDisable: Boolean? = null
    public var transmit: Boolean = false

    @Suppress("UNCHECKED_CAST")
    public fun build(id: Int): UnpackedParamType<T> {
        val literal = type?.let { CacheVarTypeMap.classedLiterals[it] }
        if (type != null && literal == null) {
            throw NotImplementedError(
                "`${type.simpleName}` types are not defined in `CacheVarTypeMap`."
            )
        }
        val backing = ParamTypeBuilder(type, internal)
        val default = default
        if (default != null && literal != null) {
            val codec = CacheVarTypeMap.findCodec<Any, Any>(type)
            val primitive = codec.encode(default)
            if (primitive is Int) {
                backing.defaultInt = primitive
            } else if (primitive is String) {
                backing.defaultStr = primitive
            }
        }
        backing.typeCharId = literal?.char
        backing.autoDisable = autoDisable
        backing.typedDefault = default
        backing.transmit = transmit
        return backing.build(id)
    }
}
package org.rsmod.api.type.refs.jingle

import jakarta.inject.Inject
import org.rsmod.api.type.refs.NameTypeReferences
import org


 return null
      if (keyCode[0] === 'P') {
        var code = parseInt(keyCode.substr(2))
        console.log(keyCode, code)
        return Pad.setDPadListeners(code)
      } else {
        return keyCode
      }
    }

    this.dPadLeft = set(Config.controlls.left.p)
    this.dPadRight = set(Config.controlls.right.p)
    this.dPadUp = set(Config.controlls.up.p)
    this.dPadDown = set(Config.controlls.down.p)

    this.dPadA = set(Config.controlls.a.p)
    this.dPadB = set(Config.controlls.b.p)
    this.dPadX = set(Config.controlls.x.p)
    this.dPadY = set(Config.controlls.y.p)
    this.dPadL = set(Config.controlls.l.p)
    this.dPadR = set(Config.controlls.r.p)
    this.dPadStart = set(Config.controlls.start.p)
    this.dPadSelect = set(Config.controlls.select.p)
    this.dPadAll = [this.dPadUp, this.dPadDown, this.dPadLeft, this.dPadRight, this.dPadA, this.dPadB, this.dPadX, this.dPadY, this.dPadL, this.dPadR, this.dPadStart, this.dPadSelect]

        // game.input.gamepad.onDownCallback = function(btnCode) {
        //    console.log(btnCode)
        // }

        // game.input.gamepad.onAxisCallback = function(btnCode, axis, direction) {
        //    console.log(btnCode,b,c)
        // }
  },

  debugDPad: function () {
    console.log(this.dPadLeft.value, this.dPadRight.value, this.dPadUp.value, this.dPadDown.value, this.dPadA.value, this.dPadB.value, this.dPadX.value, this.dPadY.value, this.dPadL.value, this.dPadR.value, this.dPadStart.value, this.dPadSelect.value)
  },

  isDown: function (key) {
    return this.refBTNs[key].just || this.refBTNs[key].hold
  },

  checkJustDown: function () {
    var set = function (ref, key, padKey) {
      var kDown = key.isDown
      if (key.alternateKey) kDown = kDown || key.alternateKey.isDown
      if (key.virtualBtn) kDown = kDown || key.virtualBtn.isDown
      var pDown = false
      if (padKey != null) {
        if (typeof padKey === 'string') {
          pDown = Pad.pad.axis(padKey[1]) === (padKey[2] === '+' ? 1 : -1)
        } else {
          pDown = padKey.isDown
        }
      }

      var isDown = kDown || pDown
      if (!ref.just && !ref.hold && !isDown) { ref.just = false; ref.hold = false; return }
      if (!ref.just && !ref.hold && isDown) { ref.just = true; ref.timeOnDown = game.time.time; ref.hold = false; key.count++; if (key.alternateKey)key.alternateKey.count++; return }
      if (!ref.just && ref.hold && !isDown) { ref.just = false; ref.hold = false; return }
      if (!ref.just && ref.hold && isDown) { ref.just = false; ref.hold = true; return }
      if (ref.just && !ref.hold && !isDown) { ref.just = false; ref.hold = false; return }
      if (ref.just && !ref.hold && isDown) { ref.just = false; ref.hold = true; return }
      if (ref.just && ref.hold && !isDown) { ref.just = false; ref.hold = false; return }
      if (ref.just && r


imary-default-pressed: #54b6fc;
  --color-primary-alternative: var(--brand-colors-blue-blue300);
  --color-primary-muted: #1098fc26;
  --color-primary-inverse: var(--brand-colors-grey-grey900);
  --color-primary-disabled: #1098fc80;
  --color-primary-shadow: #0376c933;
  --color-secondary-default: var(--brand-colors-orange-orange400);
  --color-secondary-alternative: var(--brand-colors-orange-orange300);
  --color-secondary-muted: #f8883b26;
  --color-secondary-inverse: var(--brand-colors-grey-grey900);
  --color-secondary-disabled: #f8883b80;
  --color-error-default: #ff5263;
  --color-error-default-hover: #ff4d58;
  --color-error-default-pressed: #f9868e;
  --color-error-alternative: var(--brand-colors-red-red300);
  --color-error-muted: #ff526326;
  --color-error-inverse: var(--brand-colors-grey-grey900);
  --color-error-disabled: #d7384780;
  --color-error-shadow: #ff526366;
  --color-warning-default: var(--brand-colors-yellow-yellow500);
  --color-warning-default-hover: #ffc60a;
  --color-warning-default-pressed: #ffeaa3d1;
  --color-warning-alternative: var(--brand-colors-yellow-yellow400);
  --color-warning-muted: #ffd33d26;
  --color-warning-inverse: var(--brand-colors-grey-grey900);
  --color-warning-disabled: #ffd33d80;
  --color-success-default: var(--brand-colors-green-green500);
  --color-success-default-hover: #05b82f;
  --color-success-default-pressed: #6aec88;
  --color-success-alternative: var(--brand-colors-green-green400);
  --color-success-muted: #28a74526;
  --color-success-inverse: var(--brand-colors-grey-grey900);
  --color-success-disabled: #28a74580;
  --color-info-default: var(--brand-colors-blue-blue400);
  --color-info-alternative: var(--brand-colors-blue-blue300);
  --color-info-muted: #1098fc26;
  --color-info-inverse: var(--brand-colors-grey-grey900);
  --color-info-disabled: #0376c980;
}

.MuiFormLabel-root {
  color: rgba(0, 0, 0, 0.54);
  padding: 0;
  font-size: 1rem;
  font-family: "Roboto", "Helvetica", "Arial", sans-serif;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 0.00938em;
}

.MuiInputLabel-root {
  display: block;
  transform-origin: top left;
}

.MuiInputLabel-formControl {
  top: 0;
  left: 0;
  position: absolute;
  transform: translate(0, 24px) scale(1);
}
.MuiInputLabel-animated {
  transition: color 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.0, 0, 0.2, 1) 0ms;
}
.jss1 {
  color: var(--color-text-alternative);
  font-weight: 400;
}

.css-5yemz9-MuiInputBase-root-MuiInput-root {
  font-family: Poppins,sans-serif;
  font-weight: 400;
  font-size: 1rem;
  line-height: 1.4375em;
  color: rgba(0, 0, 0, 0.87);
  box-sizing: border-box;


 整洁的",
"Sprudamone":"诱虫醛",
"sprude":"斯普鲁杰",
"sprue":"n. 浇口, 熔渣, 口炎性腹泻\\n[化] 浇口; 铸口; 流道",
"sprue bar":"[机] 竖浇道棒",
"sprue base":"[机] 竖浇道底",
"sprue bottom":"[机] 竖浇道底浇口套筒",
"sprue bush":"[机] 竖浇道棒定位销",
"sprue button":"[机] 竖浇道棒定位销",
"sprue cup":"[机] 浇口杯",
"sprue cutter":"[机] 浇冒口切断机",
"sprue former":"[医] 铸道形成针",
"sprue hole":"[机] 竖浇道孔",
"sprue pin":"[机] 分配销",
"sprue plug":"[机] 竖浇道塞",
"sprue plug valve":"[机] 竖浇道塞",
"sprue puller pin":"[机] 脱件销",
"sprue runner":"[机] 浇道",
"sprue wax":"[医] 铸道蜡",
"sprue wire":"[医] 铸道丝, 铸道针",
"sprues":"(sprue 的复数) n. 浇口, 熔渣, 口炎性腹泻\\n[化] 浇口; 铸口; 流道",
"spruik":"vi.<澳俚>(尤指推销员或节目主持人)演说,当众滔滔不绝地讲话",
"spruill":" [人名] 斯普鲁伊尔",
"spruille":" [人名] 斯普鲁伊尔",
"spruing":"[机] 开浇道",
"spruit":"n. (只在雨季有水的南非的)小河道",
"sprules":" [人名] 斯普鲁尔斯",
"sprung":"spring的过去式和过去分词",
"sprung knee":"[医] 膝前弯(马)",
"sprung rhythm":" 跳跃韵（一种以讲话的正常节奏为基础的英诗格律）",
"sprunstron":"聚丙烯化纤",
"sprunt":"痉挛性动作",
"spry":"a. 精神好的, 活泼的, 敏捷的",
"spryer":" [人名] 斯普赖尔",
"spryest":"a. (尤指老年人)轻快的, 敏捷的；活泼的, 生气勃勃的",
"spryly":"活泼地\\n敏捷地（spry的副词形式）",
"spryness":"n. spry的变形",
"SPS":"[计] 字符串处理系统",
"spsa":"abbr. Senate Press Secretaries Association 参议院新闻秘书协会; signal phase statiscal analyzer 信号相位统计分析仪",
"Spss":"[电] 社会科学统计套装软件",
"spst":"[电] 单极单投",
"SPT":"[计] 最短处理时间, 系统参数表",
"Spt.":


 override fun equals(other: Any?): Boolean {
        if (other !is SwapToken) return false

        return if (assetId.isNotEmpty()) {
            assetId == other.assetId && walletId == other.walletId
        } else if (address.isNotEmpty()) {
            assetKey == other.assetKey && walletId == other.walletId
        } else {
            name == other.name && chain.chainId == other.chain.chainId && walletId == other.walletId
        }
    }

    override fun hashCode(): Int {
        return if (assetId.isNotEmpty()) {
            (assetId + walletId).hashCode()
        } else if (address.isNotEmpty()) {
            (assetKey + walletId).hashCode()
        } else {
            (name + chain.chainId + walletId).hashCode()
        }
    }

    @IgnoredOnParcel
    val priceValue: BigDecimal
        get() = price?.toBigDecimalOrNull() ?: BigDecimal.ZERO

    @IgnoredOnParcel
    val balanceValue: BigDecimal
        get() = balance?.toBigDecimalOrNull() ?: BigDecimal.ZERO
}

interface Swappable : Parcelable {
    fun toSwapToken(): SwapToken
    fun getUnique(): String
}

fun List<SwapToken>.sortByKeywordAndBalance(query: String? = null): List<SwapToken> {
    return this.sortedWith(
        Comparator { o1, o2 ->
            if (o1 == null && o2 == null) return@Comparator 0
            if (o1 == null) return@Comparator 1
            if (o2 == null) return@Comparator -1

            if (query.isNullOrBlank().not()) {
                val equal2Keyword1 = o1.symbol.equalsIgnoreCase(query)
                val equal2Keyword2 = o2.symbol.equalsIgnoreCase(query)
                if (equal2Keyword1 && !equal2Keyword2) {
                    return@Comparator -1
                } else if (!equal2Keyword1 && equal2Keyword2) {
                    return@Comparator 1
                }
            }

            val priceFiat1 = o1.priceValue
            val priceFiat2 = o2.priceValue

            val balance1 = o1.balanceValue
            val balance2 = o2.balanceValue

            val capitalization1 = priceFiat1 * balance1
            val capitalization2 = priceFiat2 * balance2
            if (capitalization1 != capitalization2) {
                if (capitalization2 > capitalization1) {
                    return@Comparator 1
                } else if (capitalization2 < capitalization1) {
                    return@Comparator -1
                }
            }

            val balanceComparison = balance2.compareTo(balance1)
            if (balanceComparison != 0) {
                return@Comparator balanceComparison
            }

            if (priceFiat1 == BigDecimal.ZERO && priceFiat2 != BigDecimal.ZERO) {
                return@Comparator 1
            } else if (priceFiat1 != BigDecimal.ZERO && priceFiat2 == BigDecimal.ZERO) {
                return@Comparator -1
            }

            val hasIcon1 = o1.icon != defaultIcon
            val hasIcon2 = o2.icon != defaultIcon
            if (hasIcon1 && !hasIcon2) {
                return@Comparator -1
            } else if (!hasIcon1 && hasIcon2) {
                return@Comparator 1
            }

            return@Comparator o1.name.compareTo(o2.name)
        }
    )
}

private const val defaultIcon = "https://images.mixin.one/yH_I5b0GiV2zDmvrXRyr3bK5xusjfy5q7FX3lw3mM2Ryx4Dfuj6Xcw8SHNRnDKm7ZVE3_LvpKlLdcLrlFQUBhds=s128"
package one.mixin.android.db.converter

import android


ndler(this);

    addProjectParam(action);
  }

  @Override
  public void handle(Request request, Response response) throws Exception {
    String projectKey = request.mandatoryParam(PARAM_PROJECT);

    try (DbSession dbSession = dbClient.openSession(false)) {
      ProjectDto projectOrApp = componentFinder.getProjectOrApplicationByKey(dbSession, projectKey);
      checkPermission(projectOrApp);

      Collection<BranchDto> branches = dbClient.branchDao().selectByProject(dbSession, projectOrApp).stream()
        .filter(b -> b.getBranchType() == BRANCH)
        .toList();
      List<String> branchUuids = branches.stream().map(BranchDto::getUuid).toList();

      Map<String, MeasureDto> qualityGateMeasuresByComponentUuids = dbClient.measureDao()
        .selectByComponentUuidsAndMetricKeys(dbSession, branchUuids, singletonList(ALERT_STATUS_KEY)).stream()
        .collect(Collectors.toMap(MeasureDto::getComponentUuid, Function.identity()));
      Map<String, String> analysisDateByBranchUuid = dbClient.snapshotDao()
        .selectLastAnalysesByRootComponentUuids(dbSession, branchUuids).stream()
        .collect(Collectors.toMap(SnapshotDto::getRootComponentUuid, s -> formatDateTime(s.getCreatedAt())));

      ProjectBranches.ListWsResponse.Builder protobufResponse = ProjectBranches.ListWsResponse.newBuilder();
      branches.forEach(b -> addBranch(protobufResponse, b, qualityGateMeasuresByComponentUuids.get(b.getUuid()),
        analysisDateByBranchUuid.get(b.getUuid())));
      WsUtils.writeProtobuf(protobufResponse.build(), request, response);
    }
  }

  private static void addBranch(ProjectBranches.ListWsResponse.Builder response, BranchDto branch,
    @Nullable MeasureDto qualityGateMeasure, @Nullable String analysisDate) {
    ProjectBranches.Branch.Builder builder = toBranchBuilder(branch);
    setBranchStatus(builder, qualityGateMeasure);
    if (analysisDate != null) {
      builder.setAnalysisDate(analysisDate);
    }
    response.addBranches(builder);
  }

  private static ProjectBranches.Branch.Builder toBranchBuilder(BranchDto branch) {
    ProjectBranches.Branch.Builder builder = ProjectBranches.Branch.newBuilder();
    String branchKey = branch.getKey();
    ofNullable(branchKey).ifPresent(builder::setName);
    builder.setIsMain(branch.isMain());
    builder.setType(Common.BranchType.valueOf(branch.getBranchType().name()));
    builder.setExcludedFromPurge(branch.isExcludeFromPurge());
    builder.setBranchId(branch.getUuid());
    return builder;
  }

  private static void setBranchStatus(ProjectBranches.Branch.Builder builder, @Nullable MeasureDto qualityGateMeasure) {
    ProjectBranches.Status.Builder statusBuilder = ProjectBranches.Status.newBuilder();
    if (qualityGateMeasure != null) {
      ofNullable(qualityGateMeasure.getString(ALERT_STATUS_KEY)).ifPresent(statusBuilder::setQualityGateStatus);
    }

    builder.setStatus(statusBuilder);
  }

  private void checkPermission(ProjectDto project) {
    if (!userSession.hasEntityPermission(USER, project) &&
        !userSession.hasEntityPermission(ProjectPermission.SCAN, project) &&
        !userSession.hasPermission(SCAN)) {
      throw insufficientPrivilegesException();
    }
  }
}
/*
 * SonarQube
 * Copyright (C) 2009-2025 SonarSource SA
 * mailto:info AT sonarsource DOT com
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version


er hp_timer[CE_COUNT_MAX];
};

extern const struct ce_attr ath11k_host_ce_config_ipq8074[];
extern const struct ce_attr ath11k_host_ce_config_qca6390[];
extern const struct ce_attr ath11k_host_ce_config_qcn9074[];

void ath11k_ce_cleanup_pipes(struct ath11k_base *ab);
void ath11k_ce_rx_replenish_retry(struct timer_list *t);
void ath11k_ce_per_engine_service(struct ath11k_base *ab, u16 ce_id);
int ath11k_ce_send(struct ath11k_base *ab, struct sk_buff *skb, u8 pipe_id,
		   u16 transfer_id);
void ath11k_ce_rx_post_buf(struct ath11k_base *ab);
int ath11k_ce_init_pipes(struct ath11k_base *ab);
int ath11k_ce_alloc_pipes(struct ath11k_base *ab);
void ath11k_ce_free_pipes(struct ath11k_base *ab);
int ath11k_ce_get_attr_flags(struct ath11k_base *ab, int ce_id);
void ath11k_ce_poll_send_completed(struct ath11k_base *ab, u8 pipe_id);
int ath11k_ce_map_service_to_pipe(struct ath11k_base *ab, u16 service_id,
				  u8 *ul_pipe, u8 *dl_pipe);
int ath11k_ce_attr_attach(struct ath11k_base *ab);
void ath11k_ce_get_shadow_config(struct ath11k_base *ab,
				 u32 **shadow_cfg, u32 *shadow_cfg_len);
void ath11k_ce_stop_shadow_timers(struct ath11k_base *ab);

#endif


dColor = Color(0xFFF5F8FF);
const kPrimaryLabelColor = Color(0xFF242629);
const kSecondaryLabelColor = Color(0xFF797F8A);
const kShadowColor = Color.fromRGBO(72, 76, 82, 0.16);
const kCourseElementIconColor = Color(0xFF17294D);

// Text Styles
var kLargeTitleStyle = TextStyle(
  fontSize: 28.0,
  fontWeight: FontWeight.bold,
  color: kPrimaryLabelColor,
  fontFamily: Platform.isIOS ? 'SF Pro Text' : null,
  decoration: TextDecoration.none,
);
var kTitle1Style = TextStyle(
  fontSize: 22.0,
  fontWeight: FontWeight.bold,
  color: kPrimaryLabelColor,
  fontFamily: Platform.isIOS ? 'SF Pro Text' : null,
  decoration: TextDecoration.none,
);
var kCardTitleStyle = TextStyle(
  fontFamily: Platform.isIOS ? 'SF Pro Text' : null,
  fontWeight: FontWeight.bold,
  color: Colors.white,
  fontSize: 22.0,
  decoration: TextDecoration.none,
);
var kTitle2Style = TextStyle(
  fontSize: 20.0,
  fontWeight: FontWeight.bold,
  color: kPrimaryLabelColor,
  fontFamily: Platform.isIOS ? 'SF Pro Text' : null,
  decoration: TextDecoration.none,
);
var kHeadlineLabelStyle = TextStyle(
  fontSize: 17.0,
  fontWeight: FontWeight.w800,
  color: kPrimaryLabelColor,
  fontFamily: 'SF Pro Text',
  decoration: TextDecoration.none,
);
var kSubtitleStyle = TextStyle(
  fontSize: 16.0,
  color: kSecondaryLabelColor,
  fontFamily: Platform.isIOS ? 'SF Pro Text' : null,
  decoration: TextDecoration.none,
);
var kBodyLabelStyle = TextStyle(
  fontSize: 16.0,
  color: Colors.black,
  fontFamily: Platform.isIOS ? 'SF Pro Text' : null,
  decoration: TextDecoration.none,
);
var kCalloutLabelStyle = TextStyle(
  fontSize: 16.0,
  fontWeight: FontWeight.w800,
  color: kPrimaryLabelColor,
  fontFamily: Platform.isIOS ? 'SF Pro Text' : null,
  decoration: TextDecoration.none,
);
var kSecondaryCalloutLabelStyle = TextStyle(
  fontSize: 16.0,
  color: kSecondaryLabelColor,
  fontFamily: Platform.isIOS ? 'SF Pro Text' : null,
  decoration: TextDecoration.none,
);
var kSearchPlaceholderStyle = TextStyle(
  fontSize: 13.0,
  color: kSecondaryLabelColor,
  fontFamily: Platform.isIOS ? 'SF Pro Text' : null,
  decoration: TextDecoration.none,
);
var kSearchTextStyle = TextStyle(
  fontSize: 13.0,
  color: kPrimaryLabelColor,
  fontFamily: Platform.isIOS ? 'SF Pro Text' : null,
  decoration: TextDecoration.none,
);
var kCardSubtitleStyle = TextStyle(
  fontFamily: Platform.isIOS ? 'SF Pro Text' : null,
  color: Color(0xE6FFFFFF),
  fontSize: 13.0,
  decoration: TextDecoration.none,
);
var kCaptionLabelStyle = TextStyle(
  fontSize: 12.0,
  color: kSecondaryLabelColor,
  fontFamily: Platform.isIOS ? 'SF Pro Text' : null,
  decoration: TextDecoration.none,
);
import 'package:designcode/components/cards/completed_courses_card.dart';
import 'package:designcode/components/cards/continue_watching_card.dart';
import 'package:designcode/model/course.dart';
import 'package:flutter/material.dart';

class CompletedCoursesList extends StatefulWidget {
  @override
  _CompletedCoursesListState createState() => _CompletedCoursesListState();
}

class _CompletedCoursesListState extends State<CompletedCoursesList> {
  List<Container> indicators = [];
  int currentPage = 0;
  Widget updateIndicators() {
    return Row(
      mainAxisAlignment: MainAxisAlignment.center,


 int maxPositions);

// Returns the vertical metrics based on the current text style.
// Measured values are returned in local coordinate space.
extern NVG_EXPORT void nvgTextMetrics(NVGcontext* ctx, float* ascender, float* descender, float* lineh);

// Breaks the specified text into lines. If end is specified only the sub-string will be used.
// White space is stripped at the beginning of the rows, the text is split at word boundaries or when new-line characters are encountered.
// Words longer than the max width are slit at nearest character (i.e. no hyphenation).
extern NVG_EXPORT int nvgTextBreakLines(NVGcontext* ctx, const char* string, const char* end, float breakRowWidth, NVGtextRow* rows, int maxRows);

//
// Internal Render API
//
enum NVGtexture {
	NVG_TEXTURE_ALPHA = 0x01,
	NVG_TEXTURE_RGBA = 0x02,
};

struct NVGscissor {
	float xform[6];
	float extent[2];
};
typedef struct NVGscissor NVGscissor;

struct NVGvertex {
	float x,y,u,v;
};
typedef struct NVGvertex NVGvertex;

struct NVGpath {
	int first;
	int count;
	unsigned char closed;
	int nbevel;
	NVGvertex* fill;
	int nfill;
	NVGvertex* stroke;
	int nstroke;
	int winding;
	int convex;
};
typedef struct NVGpath NVGpath;

struct NVGparams {
	void* userPtr;
	int edgeAntiAlias;
	int (*renderCreate)(void* uptr);
	int (*renderCreateTexture)(void* uptr, int type, int w, int h, int imageFlags, const unsigned char* data);
	int (*renderDeleteTexture)(void* uptr, int image);
	int (*renderUpdateTexture)(void* uptr, int image, int x, int y, int w, int h, const unsigned char* data);
	int (*renderGetTextureSize)(void* uptr, int image, int* w, int* h);
	void (*renderViewport)(void* uptr, int width, int height, float devicePixelRatio);
	void (*renderCancel)(void* uptr);
	void (*renderFlush)(void* uptr, NVGcompositeOperationState compositeOperation);
	void (*renderFill)(void* uptr, NVGpaint* paint, NVGscissor* scissor, float fringe, const float* bounds, const NVGpath* paths, int npaths);
	void (*renderStroke)(void* uptr, NVGpaint* paint, NVGscissor* scissor, float fringe, float strokeWidth, const NVGpath* paths, int npaths);
	void (*renderTriangles)(void* uptr, NVGpaint* paint, NVGscissor* scissor, const NVGvertex* verts, int nverts);
	void (*renderDelete)(void* uptr);
};
typedef struct NVGparams NVGparams;

// Constructor and destructor, called by the render back-end.
extern NVG_EXPORT NVGcontext* nvgCreateInternal(NVGparams* params);
extern NVG_EXPORT void nvgDeleteInternal(NVGcontext* ctx);

extern NVG_EXPORT NVGparams* nvgInternalParams(NVGcontext* ctx);

// Debug function to dump cached path data.
extern NVG_EXPORT void nvgDebugDumpPathCache(NVGcontext* ctx);

#ifdef _MSC_VER
#pragma warning(pop)
#endif

#define NVG_NOTUSED(v) for (;;) { (void)(1 ? (void)0 : ( (void)(v) ) ); break; }

#ifdef __cplusplus
}
#endif

#endif // NANOVG_H


// This file is generated from a similarly-named Perl script in the BoringSSL
// source tree. Do not edit by hand.

#if !defined(__has_feature)
#define __has_feature(x) 0
#endif
#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM)
#define OPENSSL_NO_ASM
#endif

#if !defined(OPENSSL_NO_ASM)
#if defined(BORINGSSL_PREFIX)
#include <boringssl_prefix_symbols_asm.h>
#endif
.text

// abi_test_trampoline loads callee-saved registers from |state|, calls |func|
// with |argv|, then saves the callee-saved registers into |state|. It returns
// the result of |func|. The |unwind| argument is unused.
// uint64_t abi_test_trampoline(void (*func)(...), CallerState *state,
//                              const uint64_t *argv, size_t argc,
//                              uint64_t unwind);

.globl	_abi_test_trampoline
.private_extern	_abi_test_trampoline
.align	4
_abi_test_trampoline:
	// Stack layout (low to high addresses)
	//   x29,x30 (16 bytes)
	//    d8-d15 (64 bytes)
	//   x19-x28 (80 bytes)
	//    x1 (8 bytes)
	//   padding (8 bytes)
	stp	x29, x30, [sp, #-176]!
	mov	x29, sp

	// Saved callee-saved registers and |state|.
	stp	d8, d9, [sp, #16]
	stp	d10, d11, [sp, #32]
	stp	d12, d13, [sp, #48]
	stp	d14, d15, [sp, #64]
	stp	x19, x20, [sp, #80]
	stp	x21, x22, [sp, #96]
	stp	x23, x24, [sp, #112]
	stp	x25, x26, [sp, #128]
	stp	x27, x28, [sp, #144]
	str	x1, [sp, #160]

	// Load registers from |state|, with the exception of x29. x29 is the
	// frame pointer and also callee-saved, but AAPCS64 allows platforms to
	// mandate that x29 always point to a frame. iOS64 does so, which means
	// we cannot fill x29 with entropy without violating ABI rules
	// ourselves. x29 is tested separately below.
	ldp	d8, d9, [x1], #16
	ldp	d10, d11, [x1], #16
	ldp	d12, d13, [x1], #16
	ldp	d14, d15, [x1], #16
	ldp	x19, x20, [x1], #16
	ldp	x21, x22, [x1], #16
	ldp	x23, x24, [x1], #16
	ldp	x25, x26, [x1], #16
	ldp	x27, x28, [x1], #16

	// Move parameters into temporary registers.
	mov	x9, x0
	mov	x10, x2
	mov	x11, x3


 green, blue, alpha } = internal(color);
    const min           = Math.min(red, green, blue);
    const max           = Math.max(red, green, blue);
    const chroma        = max - min;
    let   hue           = 0;
    let   hslSaturation = 0;
    let   hsvSaturation = 0;
    let   hsiSaturation = 0;
    let   lightness     = (max + min) / 2;
    let   value         = max;
    let   whiteness     = min;
    let   blackness     = 1 - max;
    let   greyness      = approxEq(chroma, 1) ? 0 : min / (1 - chroma);
    let   intensity     = (red + green + blue) / 3;

    if(!approxEq(chroma, 0)) {
        const deltaR = (max - red)   / 6 / chroma;
        const deltaG = (max - green) / 6 / chroma;
        const deltaB = (max - blue)  / 6 / chroma;

        if(approxEq(red, max))
            hue = (0 / 3) + deltaB - deltaG;
        else if(approxEq(green, max))
            hue = (1 / 3) + deltaR - deltaB;
        else
            hue = (2 / 3) + deltaG - deltaR;

        if(hue < 0) hue += 1;

        hslSaturation = lightness <= 0.5 ? chroma / (max + min) : chroma / (2 - max - min);
    }

    if(!approxEq(max, 0))
        hsvSaturation = chroma / max;

    if(!approxEq(intensity, 0))
        hsiSaturation = 1 - min / intensity;

    return {
        chroma,
        hue,
        hslSaturation,
        hsvSaturation,
        hsiSaturation,
        lightness,
        value,
        whiteness,
        blackness,
        greyness,
        intensity,
        alpha,
    };
}

export function toRGB(color: partialRGB): RGB {
    return external(internal(color));
}

export function toHSL(color: partialRGB): HSL {
    const { hue, hslSaturation: saturation, lightness, alpha } = attributes(color);
    return hsl.external({ hue, saturation, lightness, alpha });
}

export function toHSV(color: partialRGB): HSV {
    const { hue, hsvSaturation: saturation, value, alpha } = attributes(color);
    return hsv.external({ hue, saturation, value, alpha });
}

export function toHSI(color: partialRGB): HSI {
    const { hue, hsiSaturation: saturation, intensity, alpha } = attributes(color);
    return hsi.external({ hue, saturation, intensity, alpha });
}

export function toHWB(color: partialRGB): HWB {
    const { hue, whiteness, blackness, alpha } = attributes(color);
    return hwb.external({ hue, whiteness, blackness, alpha });
}

export function toHCG(color: partialRGB): HCG {
    const { hue, chroma, greyness, alpha } = attributes(color);
    return hcg.external({ hue, chroma, greyness, alpha });
}

export function toCMY(color: partialRGB): CMY {
    const { red, green, blue, alpha } = internal(color);
    return cmy.external({ cyan: 1 - red, magenta: 1 - green, yellow: 1 - blue, alpha });
}

export function toCMYK(color: partialRGB): CMYK {
    const { red, green, blue, alpha } = internal(color);
    const black     = Math.min(1 - red, 1 - green, 1 - blue);
    const cyan      = (1 - red - black)   / (1 - black) || 0;
    const magenta   =


      appBar: AppBar(
        title: Text('PushAPI接口'),
        iconTheme: IconThemeData(color: Colors.black),
        textTheme: TextTheme(headline6: TextStyle(color: Colors.black, fontWeight: FontWeight.bold)),
        backgroundColor: Colors.white,
        centerTitle: true,
      ),
      body: new ListView.separated (
        padding: const EdgeInsets.all(15.0),
        itemCount: otherAllAPIs.length,
        itemBuilder: (context, i) {
          return new ListTile(
            title: new Text(
              otherAllAPIs[i],
              style: const TextStyle(fontSize: 18.0),
            ),
            trailing: new Icon(
              Icons.arrow_forward_ios
            ),
            onTap: () {
              setState(() {
                print('----->' + otherAllAPIs[i] + i.toString());
                _onListRowClicked(i);
              });
            },
          );
        },
        separatorBuilder: (context, index) => Divider(height: .0),
      )
    );
  }

  Future _onListRowClicked(int index) async {
    switch (index) {
      case 0:
        await MobpushPlugin.stopPush();
        break;
      case 1:
        await MobpushPlugin.restartPush();
        break;
      case 2:
        bool isStop = await MobpushPlugin.isPushStopped();
        print('>>>>>>>>>>>>>>>>>Push stop state:$isStop');
        break;
      case 3:
        _setAlias();
        break;
      case 4:
        MobpushPlugin.getAlias().then((Map<String, dynamic> aliasMap){
          String res = aliasMap['res'];
          String error = aliasMap['error'];
          print(">>>>>>>>>>>>>>>>>>>>>>>>>>> getAlias -> res: $res error: $error");
        });
        break;
      case 5:
        MobpushPlugin.deleteAlias().then((Map<String, dynamic> aliasMap){
          String res = aliasMap['res'];
          String error = aliasMap['error'];
          print(">>>>>>>>>>>>>>>>>>>>>>>>>>> deleteAlias -> res: $res error: $error");
        });
        break;
      case 6:
        _addTags();
        break;
      case 7:
        MobpushPlugin.getTags().then((Map<String, dynamic> tagsMap){

           List<dynamic> resList;
          if (tagsMap['res'] == null) {
            resList = [];
          } else {
            resList = tagsMap['res'].toList();
          }
          String error = tagsMap['error'];

          print(
              ">>>>>>>>>>>>>>>>>>>>>>>>>>> getTags -> res: $resList error: $error");
        });
        break;
      case 8:
        _deleteTags();
        break;
      case 9:
        MobpushPlugin.cleanTags().then((Map<String, dynamic> tagsMap){
          String res = tagsMap['res'];
          String error = tagsMap['error'];
          print(">>>>>>>>>>>>>>>>>>>>>>>>>>> cleanTags -> res: $res error: $error");
        });
        break;
      case 10:
        _bindPhoneNum();
        break;
      case 11:
        if (!Platform.isAndroid) {
          _showWarningDialog(true);
          return;
        }
        await MobpushPlugin.setSilenceTime(20, 0, 8, 0);
        break;
      case 12:
        if (!Platform.isAndroid) {
          _showWarningDialog(true);
          return;
        }
        await MobpushPlugin.removeLocalNotification(0);
        break;
      case 13:
        if (!Platform.isAndroid) {
          _showWarningDialog(true);
          return;
        }
        await MobpushPlugin.clearLocalNotifications();
        break;
      case 14:
        if (!Platform.isAndroid) {
          _showWarningDialog(true);
          return;
        }
        setState(() {
          hiddenNotify = !hiddenNotify;
        });
        await MobpushPlugin.setAppForegroundHiddenNotification(hiddenNotify);
        break;


n.ProximityPlacementGroupID, &out.ProximityPlacementGroupID
		*out = new(string)
		**out = **in
	}
	if in.RollingUpgradePolicy != nil {
		in, out := &in.RollingUpgradePolicy, &out.RollingUpgradePolicy
		*out = new(WindowsVirtualMachineScaleSetRollingUpgradePolicyInitParameters)
		(*in).DeepCopyInto(*out)
	}
	if in.ScaleIn != nil {
		in, out := &in.ScaleIn, &out.ScaleIn
		*out = new(WindowsVirtualMachineScaleSetScaleInInitParameters)
		(*in).DeepCopyInto(*out)
	}
	if in.Secret != nil {
		in, out := &in.Secret, &out.Secret
		*out = make([]WindowsVirtualMachineScaleSetSecretInitParameters, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.SecureBootEnabled != nil {
		in, out := &in.SecureBootEnabled, &out.SecureBootEnabled
		*out = new(bool)
		**out = **in
	}
	if in.SinglePlacementGroup != nil {
		in, out := &in.SinglePlacementGroup, &out.SinglePlacementGroup
		*out = new(bool)
		**out = **in
	}
	if in.Sku != nil {
		in, out := &in.Sku, &out.Sku
		*out = new(string)
		**out = **in
	}
	if in.SourceImageID != nil {
		in, out := &in.SourceImageID, &out.SourceImageID
		*out = new(string)
		**out = **in
	}
	if in.SourceImageReference != nil {
		in, out := &in.SourceImageReference, &out.SourceImageReference
		*out = new(WindowsVirtualMachineScaleSetSourceImageReferenceInitParameters)
		(*in).DeepCopyInto(*out)
	}
	if in.SpotRestore != nil {
		in, out := &in.SpotRestore, &out.SpotRestore
		*out = new(WindowsVirtualMachineScaleSetSpotRestoreInitParameters)
		(*in).DeepCopyInto(*out)
	}
	if in.Tags != nil {
		in, out := &in.Tags, &out.Tags
		*out = make(map[string]*string, len(*in))
		for key, val := range *in {
			var outVal *string
			if val == nil {
				(*out)[key] = nil
			} else {
				inVal := (*in)[key]
				in, out := &inVal, &outVal
				*out = new(string)
				**out = **in
			}
			(*out)[key] = outVal
		}
	}
	if in.TerminationNotification != nil {
		in, out := &in.TerminationNotification, &out.TerminationNotification
		*out = new(WindowsVirtualMachineScaleSetTerminationNotificationInitParameters)
		(*in).DeepCopyInto(*out)
	}
	if in.Timezone != nil {
		in, out := &in.Timezone, &out.Timezone
		*out = new(string)
		**out = **in
	}
	if in.UpgradeMode != nil {
		in, out := &in.UpgradeMode, &out.UpgradeMode
		*out = new(string)
		**out = **in
	}
	if in.UserData != nil {
		in, out := &in.UserData, &out.UserData
		*out = new(string)
		**out = **in
	}
	if in.VtpmEnabled != nil {
		in, out := &in.VtpmEnabled, &out.VtpmEnabled
		*out = new(bool)
		**out = **in
	}
	if in.WinrmListener != nil {
		in, out := &in.WinrmListener, &out.WinrmListener
		*out = make([]WindowsVirtualMachineScaleSet


de block
                insideCodeblock = true
                codeblockLanguage = line:match("^```(%w+)")
            else
                -- closing code block
                insideCodeblock = false
                codeblockLanguage = nil
                sigCaptured = true
            end
        elseif line:match("^# ") and current == "header" then
            result.title = line:match("^#%s+`(.-)`") or line:match("^#%s+(.-)$")
        elseif current == "header" and not descriptionCaptured and line:match("%S") then
            result.description = line
            descriptionCaptured = true
        elseif insideCodeblock and codeblockLanguage == "luau" and not sigCaptured then
            insert(signature, line)
            -- if not result.signature then
            --     result.signature = line
            -- else
            --     result.signature = result.signature .. "\n" .. line
            -- end
        elseif current == "parameters" and line:match("|") then
            local param, desc = line:match("|%s*`.-luau%s+(.-)`%s*|%s*(.-)%s*|")
            if param and desc then
                result.parameters[param] = desc
            end
        end

        ::continue::
    end

    result.signature = concat(signature, "\n")

    return result
end


# asm 1: eor >t0=int32#14,<t0=int32#14,<w5=int32#8,LSR #10
# asm 2: eor >t0=r14,<t0=r14,<w5=r7,LSR #10
eor r14,r14,r7,LSR #10

# qhasm: w7 += t0
# asm 1: add >w7=int32#10,<w7=int32#10,<t0=int32#14
# asm 2: add >w7=r9,<w7=r9,<t0=r14
add r9,r9,r14

# qhasm: t0 = (w8 >>> 7)
# asm 1: mov >t0=int32#14,<w8=int32#11,ROR #7
# asm 2: mov >t0=r14,<w8=r10,ROR #7
mov r14,r10,ROR #7

# qhasm: t0 ^= (w8 >>> 18)
# asm 1: eor >t0=int32#14,<t0=int32#14,<w8=int32#11,ROR #18
# asm 2: eor >t0=r14,<t0=r14,<w8=r10,ROR #18
eor r14,r14,r10,ROR #18

# qhasm: t0 ^= (w8 unsigned>> 3)
# asm 1: eor >t0=int32#14,<t0=int32#14,<w8=int32#11,LSR #3
# asm 2: eor >t0=r14,<t0=r14,<w8=r10,LSR #3
eor r14,r14,r10,LSR #3

# qhasm: w7 += t0
# asm 1: add >w7=int32#10,<w7=int32#10,<t0=int32#14
# asm 2: add >w7=r9,<w7=r9,<t0=r14
add r9,r9,r14

# qhasm: w5_stack = w5
# asm 1: str <w5=int32#8,>w5_stack=stack32#25
# asm 2: str <w5=r7,>w5_stack=[sp,#96]
str r7,[sp,#96]

# qhasm: w13_stack = w13
# asm 1: str <w13=int32#3,>w13_stack=stack32#26
# asm 2: str <w13=r2,>w13_stack=[sp,#100]
str r2,[sp,#100]

# qhasm: w14_stack = w14
# asm 1: str <w14=int32#12,>w14_stack=stack32#27
# asm 2: str <w14=r11,>w14_stack=[sp,#104]
str r11,[sp,#104]

# qhasm: w15_stack = w15
# asm 1: str <w15=int32#13,>w15_stack=stack32#28
# asm 2: str <w15=r12,>w15_stack=[sp,#108]
str r12,[sp,#108]

# qhasm: w0_stack = w0
# asm 1: str <w0=int32#1,>w0_stack=stack32#29
# asm 2: str <w0=r0,>w0_stack=[sp,#112]
str r0,[sp,#112]

# qhasm: w1 = w1_stack
# asm 1: ldr >w1=int32#1,<w1_stack=stack32#20
# asm 2: ldr >w1=r0,<


ndicating whether the specified directory exists.
        /// Unlike <see cref="DirectoryInfo.Exists"/>, this method follows symbolic links.
        /// </summary>
        /// <param name="this">The <see cref="DirectoryInfo"/> representing the current file.</param>
        /// <returns><see langword="true"/> if the directory exists on disk and is accessible, <see langword="false"/> otherwise.</returns>
        internal static bool ContentExists(this DirectoryInfo @this)
        {
            return @this.AsDirEntry().FileType == Emet.FileSystems.FileType.Directory;
        }

        /// <summary>
        /// Gets the size, in bytes, of the current file.
        /// Unlike <see cref="FileInfo.Length"/>, this method follows symbolic links.
        /// </summary>
        /// <param name="this">The <see cref="FileInfo"/> representing the current file.</param>
        /// <returns>The size of the file in bytes, or -1 if the file does not exist or is a directory.</returns>
        /// <exception cref="IOException"></exception>
        public static long Length(this FileInfo @this)
        {
            var dirEntry = @this.AsDirEntry();
            return dirEntry.FileType == Emet.FileSystems.FileType.File ?
                dirEntry.FileSize : -1;
        }
    }
}


Height()));
                this.fGraphicsStatesObject[kTextureImageIndex] = textureSurfaceData;

                this.fChangeFlag = (this.fChangeFlag | kColorChangedBit);
            } else {
                this.fChangeFlag = (this.fChangeFlag & kColorNotChangedBit);
            }
        } else {
            setGradientViaRasterPath(sg2d);
        }
        lastPaint = sg2d.paint;
    }

    Composite lastComposite;
    int lastCompositeAlphaRule = 0;
    float lastCompositeAlphaValue = 0;

    void setupComposite(SunGraphics2D sg2d) {
        Composite composite = sg2d.composite;

        if (lastComposite != composite) {
            lastComposite = composite;

            // For composite state COMP_ISCOPY, COMP_XOR or COMP_CUSTOM set alpha compositor to COPY:
            int alphaRule = AlphaComposite.SRC_OVER;
            float alphaValue = 1.0f;

            // For composite state COMP_ISCOPY composite could be null. If it's not (or composite state == COMP_ALPHA)
            // get alpha compositor's values:
            if ((sg2d.compositeState <= SunGraphics2D.COMP_ALPHA) && (composite != null)) {
                AlphaComposite alphaComposite = (AlphaComposite) composite;
                alphaRule = alphaComposite.getRule();
                alphaValue = alphaComposite.getAlpha();
            }

            // 2-17-03 VL: [Radar 3174922]
            // For COMP_XOR and COMP_CUSTOM compositing modes we should be setting alphaRule = AlphaComposite.SRC
            // which should map to kCGCompositeCopy.

            if ((lastCompositeAlphaRule != alphaRule) || (lastCompositeAlphaValue != alphaValue)) {
                this.fGraphicsStatesInt.put(kCompositeRuleIndex, alphaRule);
                this.fGraphicsStatesFloat.put(kCompositeValueIndex, alphaValue);

                lastCompositeAlphaRule = alphaRule;
                lastCompositeAlphaValue = alphaValue;

                this.fChangeFlag = (this.fChangeFlag | kCompositeChangedBit);
            } else {
                this.fChangeFlag = (this.fChangeFlag & kCompositeNotChangedBit);
            }
        } else {
            this.fChangeFlag = (this.fChangeFlag & kCompositeNotChangedBit);
        }
    }

    BasicStroke lastStroke = null;
    static BasicStroke defaultBasicStroke = new BasicStroke();

    void setupStroke(SunGraphics2D sg2d) {
        BasicStroke stroke = defaultBasicStroke;

        if (sg2d.stroke instanceof BasicStroke) {
            stroke = (BasicStroke) sg2d.stroke;
        }

        if (lastStroke != stroke) {
            this.fGraphicsStatesObject[kStrokeDashArrayIndex] = stroke.getDashArray();
            this.fGraphicsStatesFloat.put(kStrokeDashPhaseIndex, stroke.getDashPhase());
            this.fGraphicsStatesInt.put(kStrokeCapIndex, stroke.getEndCap());
            this.fGraphicsStatesInt.put(kStrokeJoinIndex, stroke.getLineJoin());
            this.fGraphicsStatesFloat.put(kStrokeWidthIndex, stroke.getLineWidth());
            this.fGraphicsStatesFloat.put(kStrokeLimitIndex, stroke.getMiterLimit());

            this.fChangeFlag = (this.fChangeFlag | kStrokeChangedBit);

            lastStroke = stroke;
        } else {
            this.fChangeFlag = (this.fChangeFlag & kStrokeNotChangedBit);
        }
    }

    Font lastFont;

    void setupFont(Font font, Paint paint) {
        if (font == null) { return; }

        // We have to setup the kFontPaintIndex if we have changed the color so we added the last
        // test to see if the color has changed - needed for complex strings
        // see R