kage exec

import (
	"context"
	"fmt"
	"os"
	"path/filepath"
	"runtime"
	"sync"
	"time"

	"github.com/hashicorp/consul-template/signals"
	hclog "github.com/hashicorp/go-hclog"
	"github.com/hashicorp/nomad/client/lib/cgroupslib"
	"github.com/hashicorp/nomad/client/lib/cpustats"
	"github.com/hashicorp/nomad/drivers/shared/capabilities"
	"github.com/hashicorp/nomad/drivers/shared/eventer"
	"github.com/hashicorp/nomad/drivers/shared/executor"
	"github.com/hashicorp/nomad/drivers/shared/resolvconf"
	"github.com/hashicorp/nomad/drivers/shared/validators"
	"github.com/hashicorp/nomad/helper/pluginutils/loader"
	"github.com/hashicorp/nomad/helper/pointer"
	"github.com/hashicorp/nomad/plugins/base"
	"github.com/hashicorp/nomad/plugins/drivers"
	"github.com/hashicorp/nomad/plugins/drivers/fsisolation"
	"github.com/hashicorp/nomad/plugins/drivers/utils"
	"github.com/hashicorp/nomad/plugins/shared/hclspec"
	pstructs "github.com/hashicorp/nomad/plugins/shared/structs"
)

const (
	// pluginName is the name of the plugin
	pluginName = "exec"

	// fingerprintPeriod is the interval at which the driver will send fingerprint responses
	fingerprintPeriod = 30 * time.Second

	// taskHandleVersion is the version of task handle which this driver sets
	// and understands how to decode driver state
	taskHandleVersion = 1
)

var (
	// PluginID is the exec plugin metadata registered in the plugin
	// catalog.
	PluginID = loader.PluginID{
		Name:       pluginName,
		PluginType: base.PluginTypeDriver,
	}

	// PluginConfig is the exec driver factory function registered in the
	// plugin catalog.
	PluginConfig = &loader.InternalPluginConfig{
		Config:  map[string]interface{}{},
		Factory: func(ctx context.Context, l hclog.Logger) interface{} { return NewExecDriver(ctx, l) },
	}

	// pluginInfo is the response returned for the PluginInfo RPC
	pluginInfo = &base.PluginInfoResponse{
		Type:              base.PluginTypeDriver,
		PluginApiVersions: []string{drivers.ApiVersion010},
		PluginVersion:     "0.1.0",
		Name:              pluginName,
	}

	// configSpec is the hcl specification returned by the ConfigSchema RPC
	configSpec = hclspec.NewObject(map[string]*hclspec.Spec{
		"no_pivot_root": hclspec.NewDefault(
			hclspec.NewAttr("no_pivot_root", "bool", false),
			hclspec.NewLiteral("false"),
		),
		"default_pid_mode": hclspec.NewDefault(
			hclspec.NewAttr("default_pid_mode", "string", false),
			hclspec.NewLiteral(`"private"`),
		),
		"default_ipc_mode": hclspec.NewDefault(
			hclspec.NewAttr("default_ipc_mode", "string", false),
			hclspec.NewLiteral(`"private"`),
		),
		"allow_caps": hclspec.NewDefault(
			hclspec.NewAttr("allow_caps", "list(string)", false),
			hclspec.NewLiteral(capabilities.HCLSpecLiteral),
		),
		"denied_host_uids": hclspec.NewAttr("denied_host_uids", "string", false),
		"denied_host_gids": hclspec.NewAttr("denied_host_gids", "string",


たま市",
        "関東地方の中央部に位置し、東京のベッドタウンとして発展してきた。",
        "https://ja.wikipedia.org/wiki/埼玉県",
        R.drawable.saitama,
    ),
    Prefecture(
        "千葉県",
        "5,156㎢",
        "626万人",
        "千葉市",
        "関東地方の南東部に位置し、東京ディズニーリゾートや成田国際空港など、多くの観光客が訪れる。",
        "https://ja.wikipedia.org/wiki/千葉県",
        R.drawable.chiba,
    ),
    Prefecture(
        "東京都",
        "2,187㎢",
        "1,393万人",
        "新宿区",
        "日本の首都であり、政治・経済・文化の中心地。世界有数の観光都市でもある。",
        "https://ja.wikipedia.org/wiki/東京都",
        R.drawable.tokyo,
    ),
    Prefecture(
        "神奈川県",
        "2,415㎢",
        "920万人",
        "横浜市",
        "関東地方の南西部に位置し、横浜中華街や鎌倉など、人気の観光地が多い。",
        "https://ja.wikipedia.org/wiki/神奈川県",
        R.drawable.kanagawa,
    ),
    Prefecture(
        "新潟県",
        "12,583㎢",
        "222万人",
        "新潟市",
        "日本海側に位置し、雄大な自然と豊かな食文化が魅力。米の生産量が日本一。",
        "https://ja.wikipedia.org/wiki/新潟県",
        R.drawable.nigata,
    ),
    Prefecture(
        "富山県",
        "4,247㎢",
        "104万人",
        "富山市",
        "日本海側に位置し、立山黒部アルペンルートなど、雄大な山岳景観が魅力。",
        "https://ja.wikipedia.org/wiki/富山県",
        R.drawable.toyama,
    ),
    Prefecture(
        "石川県",
        "4,185㎢",
        "114万人",
        "金沢市",
        "日本海側に位置し、兼六園や金沢21世紀美術館など、伝統と現代アートが融合する都市・金沢が人気。",
        "https://ja.wikipedia.org/wiki/石川県",
        R.drawable.ishikawa,
    ),
    Prefecture(
        "福井県",
        "4,188㎢",
        "77万人",
        "福井市",
        "日本海側に位置し、恐竜博物館や永平寺など、個性的な観光スポットが多い。",
        "https://ja.wikipedia.org/wiki/福井県",
        R.drawable.fukui,
    ),
    Prefecture(
        "山梨県",
        "4,465㎢",
        "


keyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
					}
					if iNdEx >= l {
						return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
					}
					b := dAtA[iNdEx]
					iNdEx++
					x.Capacity |= uint64(b&0x7F) << shift
					if b < 0x80 {
						break
					}
				}
			default:
				iNdEx = preIndex
				skippy, err := runtime.Skip(dAtA[iNdEx:])
				if err != nil {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
				}
				if (skippy < 0) || (iNdEx+skippy) < 0 {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
				}
				if (iNdEx + skippy) > l {
					return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
				}
				if !options.DiscardUnknown {
					x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
				}
				iNdEx += skippy
			}
		}

		if iNdEx > l {
			return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
		}
		return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
	}
	return &protoiface.Methods{
		NoUnkeyedLiterals: struct{}{},
		Flags:             protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
		Size:              size,
		Marshal:           marshal,
		Unmarshal:         unmarshal,
		Merge:             nil,
		CheckInitialized:  nil,
	}
}

var (
	md_QueryGranteesByMessageTypeRequest                  protoreflect.MessageDescriptor
	fd_QueryGranteesByMessageTypeRequest_granter_address  protoreflect.FieldDescriptor
	fd_QueryGranteesByMessageTypeRequest_message_type_url protoreflect.FieldDescriptor
)

func init() {
	file_inference_inference_query_proto_init()
	md_QueryGranteesByMessageTypeRequest = File_inference_inference_query_proto.Messages().ByName("QueryGranteesByMessageTypeRequest")
	fd_QueryGranteesByMessageTypeRequest_granter_address = md_QueryGranteesByMessageTypeRequest.Fields().ByName("granter_address")
	fd_QueryGranteesByMessageTypeRequest_message_type_url = md_QueryGranteesByMessageTypeRequest.Fields().ByName("message_type_url")
}

var _ protoreflect.Message = (*fastReflection_QueryGranteesByMessageTypeRequest)(nil)

type fastReflection_QueryGranteesByMessageTypeRequest QueryGranteesByMessageTypeRequest

func (x *QueryGranteesByMessageTypeRequest) ProtoReflect() protoreflect.Message {
	return (*fastReflection_QueryGranteesByMessageTypeRequest)(x)
}

func (x *QueryGranteesByMessageTypeRequest) slowProtoReflect() protoreflect.Message {
	mi := &file_inference_inference_query_proto_msgTypes[126]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

var _fastReflection_QueryGranteesByMessageTypeRequest_messageType fastReflection_QueryGranteesByMessageTypeRequest_messageType
var _ protoreflect.MessageType = fastReflection_QueryGranteesByMessageTypeRequest_messageType{}

type fastReflection_QueryGranteesByMessageTypeRequest_messageType struct{}

func (x fastReflection_QueryGranteesByMessageTypeRequest_messageType) Zero() protoreflect.Message {
	return (*fastReflection_QueryGranteesByMessageTypeRequest)(nil)
}
fun


" height="105"/></clipPath></defs><g clip-path="url(#a)"><rect rx="0" ry="0" width="118" height="105" class="frame-background"/><g class="frame-children"><g class="any-key" style="fill:#000"><path d="M35.2 1C25.7 1 18 8.7 18 18.2v51.6C18 79.3 25.7 87 35.2 87h45.6C90.3 87 98 79.3 98 69.8V18.2C98 8.7 90.3 1 80.8 1H35.2Zm0 4h45.6C88.1 5 94 10.9 94 18.2v37.6C94 63.1 88.1 69 80.8 69H35.2C27.9 69 22 63.1 22 55.8V18.2C22 10.9 27.9 5 35.2 5ZM56 19v14.5L43.6 26l-2.1 3.4L54.1 37l-12.6 7.6 2.1 3.4L56 40.5V55h4V40.5L72.4 48l2.1-3.4L61.9 37l12.6-7.6-2.1-3.4L60 33.5V19h-4ZM22 66.8c3.2 3.8 7.9 6.2 13.2 6.2h45.6c5.3 0 10-2.4 13.2-6.2v3C94 77.1 88.1 83 80.8 83H35.2C27.9 83 22 77.1 22 69.8v-3Z" style="fill:var(--text-accent);fill-opacity:1"/><path d="M35.2 1C25.7 1 18 8.7 18 18.2v51.6C18 79.3 25.7 87 35.2 87h45.6C90.3 87 98 79.3 98 69.8V18.2C98 8.7 90.3 1 80.8 1H35.2Zm0 4h45.6C88.1 5 94 10.9 94 18.2v37.6C94 63.1 88.1 69 80.8 69H35.2C27.9 69 22 63.1 22 55.8V18.2C22 10.9 27.9 5 35.2 5ZM56 19v14.5L43.6 26l-2.1 3.4L54.1 37l-12.6 7.6 2.1 3.4L56 40.5V55h4V40.5L72.4 48l2.1-3.4L61.9 37l12.6-7.6-2.1-3.4L60 33.5V19h-4ZM22 66.8c3.2 3.8 7.9 6.2 13.2 6.2h45.6c5.3 0 10-2.4 13.2-6.2v3C94 77.1 88.1 83 80.8 83H35.2C27.9 83 22 77.1 22 69.8v-3Z" style="fill:none;stroke-width:1;stroke:var(--text-accent);stroke-opacity:1" class="stroke-shape"/></g><path d="M20.11 53.587 3 63.9"/><g class="stroke-shape"><defs><marker refX="3" fill-opacity="1" orient="auto-start-reverse" id="b" viewBox="0 0 6 6" fill="var(--text-accent)" refY="3" markerWidth="6" markerHeight="6"><path d="M3 2.5a.5.5 0 0 1 0 1"/></marker></defs><path d="M20.11 53.587 3 63.9" style="fill:none;stroke-width:5;stroke:var(--text-accent);stroke-opacity:1;marker-end:url(#b)"/></g><path d="m96 53.567 19.161-11.55"/><g class="stroke-shape"><defs><marker refX="3" fill-opacity="1" orient="auto-start-reverse" id="c" viewBox="0 0 6 6" fill="var(--text-accent)" refY="3" markerWidth="6" markerHeight="6"><path d="M3 2.5a.5.5 0 0 1 0 1"/></marker></defs><path d="m96 53.567 19.161-11.55" style="fill:none;stroke-width:5;stroke:var(--text-accent);stroke-opacity:1;marker-end:url(#c)"/></g><path d="M20.11 53.587 3 63.9"/>


"[法] 免除债务",
"release distress":"[法] 解除扣押, 发还扣押物",
"release event":"[计] 释放事件",
"release factor":"[化] 释放因子",
"release fee":"[法] 遣散费",
"release force":"[电] 释放力",
"release fork":"[机] 释放叉",
"release from":"豁免, 解除",
"release from an obligation":"[经] 不再承担义务",
"release graphics":"[计] 释放图",
"release guard sequence":"[计] 释放保护信号",
"release guard signal":"[计] 释放保护信号",
"release key":"[计] 释放键",
"release lever":"[机] 释放杠杆",
"release lever groove":"[机] 释放杆槽",
"release magnet":"[计] 释放磁铁",
"release mark":"[计] 释放标记",
"release note":"[电] 发行通知",
"Release Notes":"发行说明",
"release of a mortgage":"[经] 解除抵押",
"release of bank accounts":"[经] 银行存款解冻",
"release of distress":"[经] 解除扣押",
"release of mortgage":"[经] 解除抵押",
"release on bail":"[法] 保释",
"release on parole":"[法] 假释",
"release on probation":"[法] 缓刑释放",
"release order":"[计] 释放指令",
"release paper":"[化] 剥离纸",
"release pay":"[经] 遣散费",
"release permit":"[经] 许可证的解除",
"release phenomenon":"[医] 释放现象",
"release position":"[计] 释放位置",
"release print":"[电影] 发行拷贝",
"release procedure":"[法] 释放程序",
"release quarantine":"[医] 解除检疫",
"release quiescence":"[计] 解除休止",
"release read":"[计] 释放读",
"release relay":"[计] 释放继电器",
"release sb from":"使(某人)免除/不...",
"release signal":"[计] 释放信号",
"release syndrome":"[医] 释放综合征",
"release testing":"[计] 出厂试验, 交付使用测试",
"release time":"[计] 复位时间; 释放时间",
"release up":"[计] 断开, 脱离",
"release valve":"[化] 放气阀; 泄气阀",
"release voltage":"[计] 释放电压",
"release without payment of duty":"[经] 免税放行",
"releaseall":"释放所有的",
"released":"v. 已发布；释放（release的过去式）",
"released bill of lading":"[经] 放行提单",
"released by court":"[法


: const Icon(Icons.add),
              ),
            )));
  }
}
// ignore_for_file: prefer_const_constructors

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:mop/api.dart';
import 'dart:async';
import 'package:mop/mop.dart';
import 'package:mop_example/test_page.dart';
import 'package:mop_example/new_features_page.dart';

void main() => runApp(MyApp());

const toAppMessageChannel = MethodChannel("com.message.flutter_to_app");

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();

    Future.delayed(const Duration(seconds: 3), () {
         init();
    });
  }

  // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> init() async {

    //多服务器配置
    FinStoreConfig storeConfigA = FinStoreConfig(
      "22LyZEib0gLTQdU3MUauAfJ/xujwNfM6OvvEqQyH4igA",
      "703b9026be3d6bc5",
      "https://api.finclip.com",
      cryptType: "SM",
    );

    FinStoreConfig storeConfigB = FinStoreConfig(
      "22LyZEib0gLTQdU3MUauAfJ/xujwNfM6OvvEqQyH4igA",
      "703b9026be3d6bc5",
      "https://finchat-mop-b.finogeeks.club"
    );
    List<FinStoreConfig> storeConfigs = [storeConfigA];
    Config config = Config(storeConfigs);
    config.language = LanguageType.English;
    config.baseLoadingViewClass = "LoadingView";
    config.userId = "18607180143";
    config.channel = "finclip";
    config.phone = "1234567890";
    config.appletDebugMode = BOOLState.BOOLStateTrue;
    config.debug = true;
    config.logLevel =  LogLevel.LEVEL_VERBOSE;
    // 根据 AppId配置对应的灰度扩展参数
    // 优先按照 AppId 精准匹配，如果是 null或者没有配置 会取 Other
    // 特殊{}空对象，表示不要任何扩展参数
    config.grayAppletVersionConfigs = {
      "5f72e3559a6a7900019b5baa": {"a": "11", "b": "22"}, //官方小程序 2
      "5facb3a52dcbff00017469bd": {"a": "1", "b": "2"}, // 画图小程序 1
      "Other": {"a": "100", "b": "200"}
    };

    UIConfig uiconfig = UIConfig();
    uiconfig.isHideFavoriteMenu = false;
    uiconfig.isAlwaysShowBackInDefaultNavigationBar = false;
    uiconfig.isClearNavigationBarNavButtonBackground = false;
    uiconfig.isHideFeedbackAndComplaints = true;
    // uiconfig.isHideBackHome = true;
    // uiconfig.isHideForwardMenu = true;
    CapsuleConfig capsuleConfig = CapsuleConfig();
    // capsuleConfig.capsuleBgLightColor = 0x33ff00ee;
    capsuleConfig.capsuleCornerRadius = 16;
    // capsuleConfig.capsuleRightMargin = 25;
    uiconfig.capsuleConfig = capsuleConfig;
    uiconfig.appletText = "applet";
    uiconfig.loadingLayoutCls = "com.finogeeks.mop_example.CustomLoadingPage";
    uiconfig.autoAdaptDarkMode = true;

    // if (Platform.isIOS) {
    //   final res = await Mop.instance.initialize(
    //       '22LyZEib0gLTQdU3MUauATBwgfnTCJjdr7FCnywmAEM=', 'bdfd76cae24d4313',
    //       apiServer: 'https://api.finclip.com',
    //       apiPrefix: '/


 \
    Cls(const Cls& other) = delete;

// CAUTION: MSVC is stupidly picky:
//
// "The compiler ignores, without warning, any __declspec keywords
// placed after * or & and in front of the variable identifier in a
// declaration."
// (https://docs.microsoft.com/en-us/cpp/cpp/declspec?view=msvc-160)
//
// So pointer return types must be handled differently (because of the
// trailing *), or you get inscrutable compiler warnings like "error
// C2059: syntax error: ''"
//
// In C++ 11, there is a standard syntax for attributes, and
// GCC defines an attribute to use with this: [[gnu:noinline]].
// In the future, this is expected to become standard.

#if defined(__GNUC__) || defined(__clang__)
/* We used to check for GCC 4+ or 3.4+, but those compilers are
   laughably out of date. Just assume they support it. */
#    define GREENLET_NOINLINE(name) __attribute__((noinline)) name
#    define GREENLET_NOINLINE_P(rtype, name) rtype __attribute__((noinline)) name
#    define UNUSED(x) UNUSED_ ## x __attribute__((__unused__))
#elif defined(_MSC_VER)
/* We used to check for  && (_MSC_VER >= 1300) but that's also out of date. */
#    define GREENLET_NOINLINE(name) __declspec(noinline) name
#    define GREENLET_NOINLINE_P(rtype, name) __declspec(noinline) rtype name
#    define UNUSED(x) UNUSED_ ## x
#endif

#if defined(_MSC_VER)
#    define G_NOEXCEPT_WIN32 noexcept
#else
#    define G_NOEXCEPT_WIN32
#endif

#if defined(__GNUC__) && defined(__POWERPC__) && defined(__APPLE__)
// 32-bit PPC/MacOSX. Only known to be tested on unreleased versions
// of macOS 10.6 using a macports build gcc 14. It appears that
// running C++ destructors of thread-local variables is broken.

// See https://github.com/python-greenlet/greenlet/pull/419
#     define GREENLET_BROKEN_THREAD_LOCAL_CLEANUP_JUST_LEAK 1
#else
#     define GREENLET_BROKEN_THREAD_LOCAL_CLEANUP_JUST_LEAK 0
#endif

#endif
/* -*- indent-tabs-mode: nil; tab-width: 4; -*- */
#ifndef GREENLET_INTERNAL_H
#define GREENLET_INTERNAL_H
#ifdef __clang__
#    pragma clang diagnostic push
#    pragma clang diagnostic ignored "-Wunused-function"
#endif

/**
 * Implementation helpers.
 *
 * C++ templates and inline functions should go here.
 */
#define PY_SSIZE_T_CLEAN
#include "greenlet_compiler_compat.hpp"
#include "greenlet_cpython_compat.hpp"
#include "greenlet_exceptions.hpp"
#include "TGreenlet.hpp"
#include "greenlet_allocator.hpp"

#include <vector>
#include <string>

#define GREENLET_MODULE
struct _greenlet;
typedef struct _greenlet PyGreenlet;
namespace greenlet {

    class ThreadState;
    // We can't use the PythonAllocator for this, because we push to it
    // from the thread state destructor, which doesn't have the GIL,
    // and Python's allocators can only be called with the GIL.
    typedef std::vector<ThreadState*> cleanup_queue_t;

};

#define implementation_ptr_t greenlet::Greenlet*

#include "greenlet.h"

void
greenlet::refs::MainGreenletExactChecker(void *p)
{
    if (!p) {
        return;
    }
    // We control the class of the main greenlet exactly.
    if (Py_TYPE(p) != &Py


eue).avail.idx.wrapping_add(1);
		}
		// Step 5: Flush
		let rq = Request::new(ResourceFlush {
			hdr: CtrlHeader {
				ctrl_type: CtrlType::CmdResourceFlush,
				flags: 0,
				fence_id: 0,
				ctx_id: 0,
				padding: 0,
			},
			r: Rect::new(0, 0, dev.width, dev.height),
			resource_id: 1,
			padding: 0,
		});
		let desc_rf = Descriptor {
			addr: unsafe { &(*rq).request as *const ResourceFlush as u64 },
			len: size_of::<ResourceFlush>() as u32,
			flags: VIRTIO_DESC_F_NEXT,
			next: (dev.idx + 1) % VIRTIO_RING_SIZE as u16,
		};
		let desc_rf_resp = Descriptor {
			addr: unsafe { &(*rq).response as *const CtrlHeader as u64 },
			len: size_of::<CtrlHeader>() as u32,
			flags: VIRTIO_DESC_F_WRITE,
			next: 0,
		};
		unsafe {
			let head = dev.idx;
			(*dev.queue).desc[dev.idx as usize] = desc_rf;
			dev.idx = (dev.idx + 1) % VIRTIO_RING_SIZE as u16;
			(*dev.queue).desc[dev.idx as usize] = desc_rf_resp;
			dev.idx = (dev.idx + 1) % VIRTIO_RING_SIZE as u16;
			(*dev.queue).avail.ring[(*dev.queue).avail.idx as usize % VIRTIO_RING_SIZE] = head;
			(*dev.queue).avail.idx =
				(*dev.queue).avail.idx.wrapping_add(1);
		}
		// Run Queue
		unsafe {
			dev.dev
			.add(MmioOffsets::QueueNotify.scale32())
			.write_volatile(0);
			GPU_DEVICES[gdev-1].replace(dev);
		}
	}
}

/// Invalidate and transfer a rectangular portion of the screen.
/// I found out that width and height are actually x2, y2...oh well.
pub fn transfer(gdev: usize, x: u32, y: u32, width: u32, height: u32) {
	if let Some(mut dev) = unsafe { GPU_DEVICES[gdev-1].take() } {
		let rq = Request::new(TransferToHost2d {
			hdr: CtrlHeader {
				ctrl_type: CtrlType::CmdTransferToHost2d,
				flags: 0,
				fence_id: 0,
				ctx_id: 0,
				padding: 0,
			},
			r: Rect::new(x, y, width, height),
			offset: 0,
			resource_id: 1,
			padding: 0,
		});
		let desc_t2h = Descriptor {
			addr: unsafe { &(*rq).request as *const TransferToHost2d as u64 },
			len: size_of::<TransferToHost2d>() as u32,
			flags: VIRTIO_DESC_F_NEXT,
			next: (dev.idx + 1) % VIRTIO_RING_SIZE as u16,
		};
		let desc_t2h_resp = Descriptor {
			addr: unsafe { &(*rq).response as *const CtrlHeader as u64 },
			len: size_of::<CtrlHeader>() as u32,
			flags: VIRTIO_DESC_F_WRITE,
			next: 0,
		};
		unsafe {
			let head = dev.idx;
			(*dev.queue).desc[dev.idx as usize] = desc_t2h;
			dev.idx = (dev.idx + 1) % VIRTIO_RING_SIZE as u16;
			(*dev.queue).desc[dev.idx as usize


d.w    d0,done        ; DONE flag
joy_right_1    bsr      draw_pixel     ; draw it
               rts

*---------------------

line_A_var     ds.l  1
intin_addr     ds.l  1
ptsin_addr     ds.l  1

mousedata      dc.b  0,0,1,1

save_kbdvbase  ds.l  1
old_joy        ds.l  1
joy_rec        ds.b  3
joy_work       ds.b  3
flagged        ds.w  1
fire_button    ds.w  1
done           ds.w  1
sound_count    ds.w  1
points         ds.w  1
skill          dc.w  5
rounds         dc.w  5

player1        dc.w  0,119,104,0,1     ; joystick,x,y,score,kolor
player2        dc.w  0,200,104,0,2     ; joystick,x,y,score,kolor

old_color      ds.w  3*5
new_color      dc.w  0,0,0             ; black
               dc.w  1000,1000,1000    ; white
               dc.w  0,0,1000          ; blue
               dc.w  0,1000,0          ; green
               dc.w  1000,0,0          ; red

title_msg      dc.b  27,'H'
               dc.b  27,'b','1','ONE       '
               dc.b  27,'b','4','    LINE ATTACK!    '
               dc.b  27,'b','2',' TWO      '
               dc.b  0

score_msg      dc.b  27,'Y',32,36,27,'b','1'
score_one      dc.b  '00000'
               dc.b  27,'Y',32,67,27,'b','2'
score_two      dc.b  '00000'
               dc.b  0

round_msg      dc.b  27,'Y',32,42,27,'b','4','       ROUND '
round_no       dc.b  '1      ',0

game_msg       dc.b  27,'Y',32,42,27,'b','4','    LINE ATTACK!    ',0
fire_msg       dc.b  27,'Y',32,42,27,'b','4',' Press FIRE button  ',0
win1_msg       dc.b  27,'Y',32,42,27,'b','1',' ONE is the winner! ',0
win2_msg       dc.b  27,'Y',32,42,27,'b','2',' TWO is the winner! ',0
tie_msg        dc.b  27,'Y',32,42,27,'b','4','      TIE GAME!     ',0
done_msg       dc.b  27,'Y',32,42,27,'b','4','      GAME OVER     ',0

shrink_noise   dc.b  $00,$08,$01,$02,$02,$00,$03,$00,$04,$00,$05,$00
               dc.b  $06,$00,$07,$fe,$08,$10,$09,$00,$0a,$00,$0b,$00
               dc.b  $0c,$00,$0d,$0d,$80,$08,$81,$00,$02,$20,$07,$ff
               dc.b  $ff,$00

explode_noise  dc.b  $00,$00,$01,$00,$02,$00,$03,$00,$04,$00,$05,$00
               dc.b  $06,$1f,$07,$f7,$08,$10,$09,$00,$0a,$00,$0b,$00
               dc.b  $0c,$20,$0d,$00,$ff,$00

move_noise     dc.b  $00,$00,$01,$00,$02,$00,$03,$00,$04,$00,$05,$00
               dc.b  $06,$0a,$07,$f7,$08,$10,$09,$00,$0a,$00,$0b,$80
               dc.b  $0c,$01,$0d,$00,$ff,$00

gr_title       dc.b  'LINE ATTACK!',0
gr_author      dc.b  'by Kirk Stover',0
gr_skill       dc.b  'SKILL LEVEL ',2,' ',1,0
gr_rounds      dc.b  'ROUNDS/GAME ',4,' ',3,0
gr_fire        dc.b  'FIRE to start',0
gr_plus        dc.b  '+',0
gr_minus       dc.b  '-',0

res_alert      dc.b  '[1][Low resolution only!][SORRY]',0

*---------------------

appl_id        ds.w  1
graf_handle    ds.w


#pragma once
#include <xloil/State.h>
#include <string>
#include <memory>
#include <functional>

#ifndef _WINDOWS_
#include <basetsd.h>
#define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name
DECLARE_HANDLE(HWND);
DECLARE_HANDLE(HINSTANCE);
DECLARE_HANDLE(HMENU);

#ifndef CALLBACK
#define CALLBACK __stdcall
#endif

typedef UINT_PTR WPARAM;
typedef LONG_PTR LPARAM;
typedef LONG_PTR LRESULT;
typedef LRESULT(CALLBACK* WNDPROC)(HWND, unsigned int, WPARAM, LPARAM);
#endif

namespace xloil
{
  class ILogWindow
  {
  public:
    virtual void openWindow() noexcept = 0;
    virtual void appendMessage(std::wstring&& msg) noexcept = 0;
  };

  std::shared_ptr<ILogWindow> createLogWindow(
    HWND parentWindow, // can be zero
    HINSTANCE parentInstance,
    const wchar_t* winTitle,
    HMENU menuBar,
    WNDPROC menuHandler,
    size_t historySize) noexcept;

  /// <summary>
  /// Called from the XLL initialisation code to report errors before the
  /// main logger has started.  Must be called on main thread - should be
  /// the case since is is called from AutoOpen.
  /// </summary>
  void loadFailureLogWindow(HINSTANCE parent, const std::wstring_view& msg, bool openWindow);
}


    flex-grow: 1;
    text-align: center;
  }
}

.nav-fill,
.nav-justified {
  .nav-item .nav-link {
    width: 100%; // Make sure button will grow
  }
}

// Tabbable tabs
//
// Hide tabbable panes to start, show them when `.active`

.tab-content {
  > .tab-pane {
    display: none;
  }
  > .active {
    display: block;
  }
}
/*!
 * Bootstrap v5.2.0-beta1 (https://getbootstrap.com/)
 * Copyright 2011-2022 The Bootstrap Authors
 * Copyright 2011-2022 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */

// scss-docs-start import-stack
// Configuration
@import "functions";
@import "variables";
@import "maps";
@import "mixins";
@import "utilities";

// Layout & components
@import "root";
@import "reboot";
@import "type";
@import "images";
@import "containers";
@import "grid";
@import "tables";
@import "forms";
@import "buttons";
@import "transitions";
@import "dropdown";
@import "button-group";
@import "nav";
@import "navbar";
@import "card";
@import "accordion";
@import "breadcrumb";
@import "pagination";
@import "badge";
@import "alert";
@import "progress";
@import "list-group";
@import "close";
@import "toasts";
@import "modal";
@import "tooltip";
@import "popover";
@import "carousel";
@import "spinners";
@import "offcanvas";
@import "placeholders";

// Helpers
@import "helpers";

// Utilities
@import "utilities/api";
// scss-docs-end import-stack
// Base class
//
// Easily usable on <ul>, <ol>, or <div>.

.list-group {
  // scss-docs-start list-group-css-vars
  --#{$prefix}list-group-color: #{$list-group-color};
  --#{$prefix}list-group-bg: #{$list-group-bg};
  --#{$prefix}list-group-border-color: #{$list-group-border-color};
  --#{$prefix}list-group-border-width: #{$list-group-border-width};
  --#{$prefix}list-group-border-radius: #{$list-group-border-radius};
  --#{$prefix}list-group-item-padding-x: #{$list-group-item-padding-x};
  --#{$prefix}list-group-item-padding-y: #{$list-group-item-padding-y};
  --#{$prefix}list-group-action-color: #{$list-group-action-color};
  --#{$prefix}list-group-action-hover-color: #{$list-group-action-hover-color};
  --#{$prefix}list-group-action-hover-bg: #{$list-group-hover-bg};
  --#{$prefix}list-group-action-active-color: #{$list-group-action-active-color};
  --#{$prefix}list-group-action-active-bg: #{$list-group-action-active-bg};
  --#{$prefix}list-group-disabled-color: #{$list-group-disabled-color};
  --#{$prefix}list-group-disabled-bg: #{$list-group-disabled-bg};
  --#{$prefix}list-group-active-color: #{$list-group-active-color};
  --#{$prefix}list-group-active-bg: #{$list-group-active-bg};
  --#{$prefix}list-group-active-border-color: #{$list-group-active-border-color};
  // scss-docs-end list-group-css-vars

  display: flex;
  flex-direction: column;

  // No need to


dedFiles": "Изнеси изтеглени файлове",
    "exportedFileLocation": "Местоположение за изнасяне на изтегления файл",
    "export": "Изнеси",
    "exporting": "Изнасяне...",
    "scanning": "Сканиране...",
    "downFilesFound": "намерени изтеглени файлове",
    "close": "Затвори",
    "exportMsg": "Файловете са изнесени успешно",
    "exportDowloadedFilesDes": "Натисни тук, за да изнесете изтегления файл от директорията на приложението във външна директория",
    "clearImgCacheAlert": "Кешът на изображения е изчистен успешно",
    "disableTransitionAnimation": "Деактивирай анимация на прехода",
    "disableTransitionAnimationDes": "Активирай тази опция, за да деактивирате анимация на прехода към раздели",
    "clearImgCacheDes": "Натисни тук, за да изчистите кеширани миниатюри/изображения. (Не се препоръчва, освен ако не искате да обновите данните от кеширани изображения)",
    "pipedplstSyncAlert": "Piped плейлист е синхронизиран!",
    "openIn": "Отвори в",
    "backupSettingsAndPlaylistsDes": "Запазва всички настройки, плейлисти и данни за вход в архивен файл",
    "restoreSettingsAndPlaylistsDes": "Възстановява всички настройки, данни за вход и плейлисти от архивен файл. Презаписва всички текущи данни",
    "backFilesFound": "открита бази данни",
    "restoreMsg": "Успешно възстановено!\nПромените се прилагат при рестартиране",
    "restore": "Възстановяване",
    "closeApp": "Затвори приложението",
    "restoring": "Възстановява се...",
    "backupSettingsAndPlaylists": "Архивиране на настройки и плейлисти",
    "restoreSettingsAndPlaylists": "Възстанови настройки и плейлисти",
    "backupMsg": "Архивирането е успешно запазено!",
    "backupAppData": "Архивирай данни от приложението",
    "backup": "Архивиране",
    "includeDownloadedFiles": "Включи изтеглени файлове с песни",
    "backupInProgress": "Извършва се архивиране...",
    "restoreAppData": "Възстанови данни от приложението",
    "letsStrart": "Да започваме..",
    "processFiles": "Файловете се обработват...",
    "restartApp": "Рестартирай приложението",
    "songInfo": "Информация за песен",
    "id": "Идентификация",
    "bitrate": "Скорост на предаване",
    "title": "Заглавие",
    "duration": "Продължителност",


/* 8025D53C 0025919C  90 06 00 1C */	stw r0, 0x1c(r6)
/* 8025D540 002591A0  80 83 00 0C */	lwz r4, 0xc(r3)
/* 8025D544 002591A4  38 04 00 01 */	addi r0, r4, 1
/* 8025D548 002591A8  90 03 00 0C */	stw r0, 0xc(r3)
lbl_8025D54C:
/* 8025D54C 002591AC  38 66 00 20 */	addi r3, r6, 0x20
/* 8025D550 002591B0  4E 80 00 20 */	blr
lbl_8025D554:
/* 8025D554 002591B4  38 60 00 00 */	li r3, 0
/* 8025D558 002591B8  4E 80 00 20 */	blr

.global func_8025D55C
func_8025D55C:
/* 8025D55C 002591BC  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8025D560 002591C0  7C 08 02 A6 */	mflr r0
/* 8025D564 002591C4  2C 04 00 00 */	cmpwi r4, 0
/* 8025D568 002591C8  90 01 00 14 */	stw r0, 0x14(r1)
/* 8025D56C 002591CC  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8025D570 002591D0  7C 9F 23 78 */	mr r31, r4
/* 8025D574 002591D4  40 82 00 0C */	bne lbl_8025D580
/* 8025D578 002591D8  38 60 00 00 */	li r3, 0
/* 8025D57C 002591DC  48 00 00 24 */	b lbl_8025D5A0
lbl_8025D580:
/* 8025D580 002591E0  54 80 06 FF */	clrlwi. r0, r4, 0x1b
/* 8025D584 002591E4  41 82 00 18 */	beq lbl_8025D59C
/* 8025D588 002591E8  3C 60 80 42 */	lis r3, lbl_80425430@ha
/* 8025D58C 002591EC  38 A0 00 20 */	li r5, 0x20
/* 8025D590 002591F0  38 63 54 30 */	addi r3, r3, lbl_80425430@l
/* 8025D594 002591F4  4C C6 31 82 */	crclr 6
/* 8025D598 002591F8  4B DA A5 2D */	bl OSReport
lbl_8025D59C:
/* 8025D59C 002591FC  80 7F FF EC */	lwz r3, -0x14(r31)
lbl_8025D5A0:
/* 8025D5A0 00259200  80 01 00 14 */	lwz r0, 0x14(r1)
/* 8025D5A4 00259204  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 8025D5A8 00259208  7C 08 03 A6 */	mtlr r0
/* 8025D5AC 0025920C  38 21 00 10 */	addi r1, r1, 0x10
/* 8025D5B0 00259210  4E 80 00 20 */	blr

.global func_8025D5B4
func_8025D5B4:
/* 8025D5B4 00259214  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 8025D5B8 00259218  7C 08 02 A6 */	mflr r0
/* 8025D5BC 0025921C  2C 04 00 00 */	cmpwi r4,


Token.SPACE, Token.PERIOD),
        currencyRateUpdateState = CurrencyRateUpdateState.Nothing,
        outputFormat = OutputFormat.PLAIN,
        result = ConverterResult.Default(BigDecimal.ZERO, BigDecimal.ZERO),
        formatTime = true,
      ),
    navigateToRightScreen = { _, _, _, _, _ -> },
    navigateToLeftScreen = { _, _ -> },
    swapUnits = { _, _ -> },
  )
}

private const val SPACER_HEIGHT_FACTOR = 0.03f
private const val RETRY_CURRENCY_UPDATE_DEBOUNCE_MS = 1_000L
/*
 * Unitto is a calculator for Android
 * Copyright (c) 2023-2024 Elshan Agaev
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

plugins {
  id("unitto.library")
  alias(libs.plugins.compose.compiler)
}

android.namespace = "com.sadellie.unitto.core.themmo"
android.buildFeatures.compose = true
android.composeOptions.kotlinCompilerExtensionVersion = libs.versions.androidxComposeCompiler.get()

dependencies {
  implementation(libs.androidx.compose.ui.tooling)
  implementation(libs.androidx.compose.ui.tooling.preview)
  implementation(libs.androidx.compose.foundation.foundation)
  implementation(libs.androidx.compose.material3)
  implementation(libs.com.github.kyant0.m3color)
}
/*
 * Unitto is a calculator for Android
 * Copyright (c) 2023-2024 Elshan Agaev
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

plugins {
  id("unitto.library")

  alias(libs.plugins.ksp)
  alias(libs.plugins.hilt)
}

android.namespace = "com.sadellie.unitto.core.datastore"

dependencies {
  implementation(project(":core:common"))
  implementation(project(":core:model"))
  implementation(project(":core:themmo"))
  implementation(project(":core:data"))
  implementation(project(":core:navigation"))

  implementation(libs.com.google.dagger.android.hilt.android)
  ksp(libs.com.google.dagger.dagger.android.processor)
  ksp(libs.com.google.dagger.hilt.compiler)

  implementation(libs.androidx.datastore.datastore.preferences)
}
/*
 * Unitto is a calculator for Android
 * Copyright (c) 2023-2024 Elshan Agaev
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License,


import pykd

#it's exact name of the std::string class. We need it later.
stringClassName = "basic_string<char,std::char_traits<char>,std::allocator<char> >"
fullStringClassName = "std::" + stringClassName

# get a malloc function. May be we have not its prototype in pdb file, so we need to define prototype manually
PVoid = pykd.typeInfo("Void*")
size_t = pykd.typeInfo("Int8B") if pykd.getCPUMode() == pykd.CPUType.AMD64 else pykd.typeInfo("Int4B")
mallocProto = pykd.defineFunction( PVoid, pykd.callingConvention.NearC )
mallocProto.append("size", size_t)

malloc = pykd.typedVar(mallocProto, pykd.getOffset("malloc") ) #getOffset("malloc") may take a long time

# get a type of a std::string
stringClass = pykd.typeInfo(fullStringClassName)

# allocate memory
buffer = malloc( stringClass.size() )

# get a typed access to memory. As you may see the instance of the std::string is not initialized
stringVar = pykd.typedVar( stringClass, buffer )

# set up parameters for a constructor call.
param = pykd.stackAlloc(100)

pykd.writeCStr(param, "hello")

# call ctor for initalizing. std::string has several forms of constructor so we need to note prototype
ctor = stringVar.method( stringClassName, "Void(__thiscall)(Char*)" )
ctor(param)

#check result:
print( pykd.loadCStr( stringVar.c_str() ) )

pykd.stackFree(100)


UpperCase();
  }

  /**
   * 获取签名后的 headers
   *
   * @param {string} t
   * @param {boolean} forRefresh
   */
  async getHeader(t: string, forRefresh = false): Promise<TuyaOpenApiClientRequestExtHeader> {
    const sign = forRefresh ? this.refreshSign(t) : await this.requestSign(t);
    const accessToken = await this.store.getAccessToken();
    return {
      client_id: this.accessKey,
      t,
      sign_method: "HMAC-SHA256",
      sign,
      access_token: accessToken || '',
    };
  }

  async getHeaderV2(t: string, forRefresh = false, headers: TuyaOpenApiClientRequestHeaderBase, body: TuyaOpenApiClientRequestBodyBase): Promise<TuyaOpenApiClientRequestExtHeader> {
    const { sign, signHeaders } = forRefresh ? await this.refreshSignV2(t, headers) : await this.requestSignV2(t, headers, body);
    const accessToken = await this.store.getAccessToken();
    return {
      t,
      'client_id': this.accessKey,
      sign_method: "HMAC-SHA256",
      sign,
      access_token: accessToken || '',
      'Signature-Headers': signHeaders,
    };
  }

}

export default TuyaOpenApiClient;
export {
  TuyaOpenApiClientOptions,
  TuyaOpenApiClient,
};
export class ChecklistItemModel {
  public id: number
  public title: string
  public comment: string
  public status: string
  public termGuid: string

  /**
   * Constructor
   *
   * @param item Checklist SP item
   */
  constructor(item: Record<string, any>) {
    this.id = item.Id
    this.title = item.Title
    this.comment = item.GtComment
    this.status = item.GtChecklistStatus
    this.termGuid = item.GtProjectPhase && `/Guid(${item.GtProjectPhase.TermGuid})/`
  }
}
export enum RunMode {
    Development,
    Production,
    WebPack
}

export interface SSLConfig {
    key: string;
    crt: string;
    ca: string;
}

export interface HttpServerConfig {
    host: string;
    port: number;
    sslPath: SSLConfig;
    isSecure: boolean;
}

class Config {
    public httpServerConfig: HttpServerConfig;
    public runMode: RunMode;

    constructor() {
        this.httpServerConfig = {
            host: '127.0.0.1',
            port: 3000,
            sslPath: {
                key: '',
                crt: '',
                ca: ''
            },
            isSecure: false
        };
        // TODO: change run mode
        this.runMode = RunMode.Development;
    }

    public get baseUrl() {
        return `http://${this.httpServerConfig.host}:${this.httpServerConfig.port}`;
    }
}

const config = new Config();
export default config;

try {
    // tslint:disable-next-line:no-var-requires
    const extend = require('./app.config.prod');
    extend.default();
} catch (ex) {
    // tslint:disable-next-line:no-console
    console.log('app config error: ', ex);
}import {Component, EventEmitter, Input, Output} from '@angular/core';

@Component({
  selector: 'app-color-picker',
  template: `

#

        <input type="text" class="form-control" style="width: 100%" [value]="colorCode?.replace('#', '')" (change)="setColor(color.value)" #color>

        <input type="color" cl


ly.isInside( new Point2dImpl( ps[0], ps[1] ) ) )
					// currentPoly.setIsHole( true );

					currentPoly.addVertex(ps[0], ps[1]);
					xx = ps[0];
					yy = ps[1];
					break;
				}
				case PathIterator.SEG_LINETO: {
					currentPoly.addVertex(ps[0], ps[1]);
					xx = ps[0];
					yy = ps[1];
					break;
				}
				case PathIterator.SEG_QUADTO: {
					final QuadCurve2D c = new QuadCurve2D.Double(
							xx, yy, ps[0], ps[1], ps[2], ps[3]);
					final Polygon p = currentPoly;
					BezierUtils.adaptiveHalving(c, new SimpleConvexHullSubdivCriterion(),
							new QuadSegmentConsumer()
							{
								@Override
								public void processSegment(final QuadCurve2D segment, final double startT,
										final double endT)
								{
									if (0.0 == startT)
										p.addVertex(new Point2dImpl(
												(float) segment.getX1(), (float) segment.getY1()));

									p.addVertex(new Point2dImpl(
											(float) segment.getX2(), (float) segment.getY2()));
								}
							}
							);
					xx = ps[2];
					yy = ps[3];
					break;
				}
				case PathIterator.SEG_CUBICTO: {
					final CubicCurve2D c = new CubicCurve2D.Double(
							xx, yy, ps[0], ps[1],
							ps[2], ps[3], ps[4], ps[5]);
					final Polygon p = currentPoly;
					BezierUtils.adaptiveHalving(c, new SimpleConvexHullSubdivCriterion(),
							new CubicSegmentConsumer()
							{
								@Override
								public void processSegment(final CubicCurve2D segment,
										final double startT, final double endT)
								{
									if (0.0 == startT)
										p.addVertex(new Point2dImpl(
												(float) segment.getX1(), (float) segment.getY1()));

									p.addVertex(new Point2dImpl(
											(float) segment.getX2(), (float) segment.getY2()));
								}
							}
							);
					xx = ps[4];
					yy = ps[5];
					break;
				}
				case PathIterator.SEG_CLOSE: {
					currentPoly.addVertex(ps[0], ps[1]);
					letterPoly.addInnerPolygon(
							currentPoly.roundVertices());
					currentPoly = new Polygon();

					break;
				}
				}

				pi.next();
			}
		}

		return output;
	}

	/**
	 * {@inheritDoc}
	 *
	 * @see org.openimaj.image.typography.FontRenderer#getSize(java.lang.String,
	 *      org.openimaj.image.typography.FontStyle)
	 */
	@Override
	public Rectangle getSize(final String string, final GeneralFontStyle<T> style)
	{
		final Rectangle bounds = new Rectangle(0, 0, Float.MIN_VALUE, Float.MIN_VALUE);

		final Polygon[] polys = GeneralFontRenderer.getPolygons(string, 0, 0, style);
		for (final Polygon p : polys)
		{
			bounds.x = (float) Math.min(bounds.x, p.minX());
			bounds.y = (float) Math.min(bounds.y, p.minY());
			bounds.width = (float) Math.max(bounds.width, p.maxX() - bounds.x);
			bounds.height = (float) Math.max(bounds.height, p.maxY() - bounds.y);
		}

		return bounds;
	}

	/**
	 * Just for testing render quality against AWT
	 *
	 * @param args
	 */
	public static void main(String[] args) {
		final FImage tmp = new FImage(800, 800);
		final int size = 40;
		tmp.drawText("Hello World!", 20, 20 + size, new GeneralFont("Arial", Font.PLAIN), size);

		final General


)*/
/* box-about (about_01.html)*/
/* blog-fluid  (about.html, before footer)*/
/* parallax-description (about.html) "About Store"*/
/* personal-block  (about.html) "OUR TEAM"*/
/* on-duty-box
(page-404.html, page-empty-category.html, page-empty-search.html, page-empty-shopping-cart.html
[.on-duty-box])*/
/* collection */
/* blog-single-post */
/* comments (blog_single_post_01.html)*/
/* login-form-box  (login-form.html)*/
/* table-1 */
/* table-2 */
/* table-3 */
/* table-params */
/* table-order-history */
/* table-order-history */
/* information-block */
/* box-product-info  (index-08.html, banner "WOMEN’S", banner "MEN’S")*/
/*blog */
/* comments (Pages blog, left aside - "RECENT COMMENTS")*/
/* shopping-cart-table-total */
/* checkout */
/* box-faq  (faqs.html)*/
/* testimonialsAsid (index-02.html left aside(slider-content[grenn bg])*/
/* menu-aside (index-09.html - tab "WOMEN’S")*/
/* breadcrumb */
/* revolution slider */
/* checkout (checkout.html)*/
/* compare (compare.html)*/
/* slick_slider */
/* slick Arrows */
/* slick Dots */
/* slick arrow style2*/
/* main indent content */
/* color */
/*
Mixin
*/
*:focus {
  outline: none;
}

/*
Extend
*/
._reset-ul-style, .social-icon-square, .menu-content ul, .box-product-info ul, .mobileGallery-product,
.mobileGallery-product-big, .toggle-menu .dropdown-menu ul, .product .options-swatch-color, .slider-scroll .nav-slider-scroll, .pagination ul, .tags-list, .product-info .product_inside_info_link, .product-images-static ul, .social-icon-round ul, .social-icon-fill ul, .payment-list ul, .footer-menu ul, .blog-single-post .container-fluid .title-block .post-tag, .breadcrumb ul {
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: 0;
}

._reset-ul-style-2, .desktop-header .mini-menu ul, .mobile-header .mini-menu-dropdown .mini-menu ul, .mobile-header .mini-menu-dropdown .social-icon ul, .social-icon ul, .social-icon-square ul, header .cart ul, .header-menu ul, .menu-vertical nav ul, .mobileGallery, .filter-list, .poll-list, .radio-list, .list-simple, .list-simple-dot, .product-info .productvendorsmallinfo, .options-swatch-texture, #modalLoginForm .modal-login .link-functional, .list-info ul, .v-links-list ul, .post .title-block .post-tag, .shopping-cart-table .list-parameters, .wishlist-table .list-parameters, .login-form-box .additional-links, .box-about .list, .list-information, .list-information-center {
  list-style: none;
  margin: 0;
  padding: 0;
}

/*
Global
*/
body {


 0) {
			int tsize;
			size_t size;

			tsize = ((PyVarObject *)obj)->ob_size;
			if (tsize < 0)
				tsize = -tsize;
			size = _PyObject_VAR_SIZE(tp, tsize);

			dictoffset += (long)size;
		}
		dictptr = (PyObject **) ((char *)obj + dictoffset);
		dict = *dictptr;
		if (dict != NULL) {
			res = PyDict_GetItem(dict, name);
			if (res != NULL) {
				Py_INCREF(res);
				goto done;
			}
		}
	}

	if (f != NULL) {
		res = f(descr, obj, (PyObject *)obj->ob_type);
		goto done;
	}

	if (descr != NULL) {
		Py_INCREF(descr);
		res = descr;
		goto done;
	}
	printf("'%s' object has no attribute '%s'",
	       tp->tp_name, PyString_AS_STRING(name));
  done:
	Py_DECREF(name);
	return res;
}

/* ... */

static PyTypeObject PyNone_Type = {
  PyObject_HEAD_INIT(&PyType_Type)
  0,
  "NoneType",
  0,
  0,
  0, //(destructor)none_dealloc,	     /*tp_dealloc*/ /*never called*/
  0,		/*tp_print*/
  0,		/*tp_getattr*/
  0,		/*tp_setattr*/
  0,		/*tp_compare*/
  0, //(reprfunc)none_repr, /*tp_repr*/
  0,		/*tp_as_number*/
  0,		/*tp_as_sequence*/
  0,		/*tp_as_mapping*/
  0,		/*tp_hash */
};

PyObject _Py_NoneStruct = {
  PyObject_HEAD_INIT(&PyNone_Type)
};

static PyTypeObject PyNotImplemented_Type = {
  PyObject_HEAD_INIT(&PyType_Type)
  0,
  "NotImplementedType",
  0,
  0,
  0, //(destructor)none_dealloc,	     /*tp_dealloc*/ /*never called*/
  0,		/*tp_print*/
  0,		/*tp_getattr*/
  0,		/*tp_setattr*/
  0,		/*tp_compare*/
  0, //(reprfunc)NotImplemented_repr, /*tp_repr*/
  0,		/*tp_as_number*/
  0,		/*tp_as_sequence*/
  0,		/*tp_as_mapping*/
  0,		/*tp_hash */
};

PyObject _Py_NotImplementedStruct = {
	PyObject_HEAD_INIT(&PyNotImplemented_Type)
};

void
_Py_ReadyTypes(void)
{
	if (PyType_Ready(&PyType_Type) < 0)
		Py_FatalError("Can't initialize 'type'");

	if (PyType_Ready(&PyString_Type) < 0)
		Py_FatalError("Can't initialize 'str'");

	if (PyType_Ready(&PyNone_Type) < 0)
		Py_FatalError("Can't initialize type(None)");

	if (PyType_Ready(&PyNotImplemented_Type) < 0)
		Py_FatalError("Can't initialize type(NotImplemented)");
}


前很需要的特性。给我带来一批样本，再把普通套装的手腕部分拿来，当然了，你还得支付一些金币。你会发现这其实是笔很划算的交易。",
    ["O"] = "将15份冬泉谷血样、20枚金币，以及一副虔诚护腕交给铁炉堡的德莉亚娜。",
    ["T"] = "热心的建议",
  },
  [8910] = {
    ["D"] = "你好，$c。我这里有一些你可能会很感兴趣的东西。$B$B它跟你们这个职业的人平常穿着的那些护甲有点类似，但质量上远远好于你们现在所拥有的。要是你能帮我一个小忙的话，我愿意拿它来从你手里换一件普通的套装组件。$B$B栖息在冬泉谷的霜刃豹和熊身上的血液有着某种我目前很需要的特性。给我带来一批样本，再把普通套装的手腕部分拿来，当然了，你还得支付一些金币。你会发现这其实是笔很划算的交易。",
    ["O"] = "将15份冬泉谷血样、20枚金币，以及一副迅影护腕交给铁炉堡的德莉亚娜。",
    ["T"] = "热心的建议",
  },
  [8911] = {
    ["D"] = "你好，$c。我有一些你可能会感兴趣的东西。$B$B它很像你们那个职业的人会穿戴的典型护甲，但是等级高很多。只要你帮我一个小忙，我愿意和你交换一件普通装备。$B$B冬泉谷的霜刃豹和熊的鲜血里有我目前需要的成分。帮我带来足够的样本还有护腕装备，以及一点金子。你会发现你的付出是值得的。",
    ["O"] = "取得15滴冬泉血滴样本，20金和1套鬼雾护腕给铁炉堡的德莉娜。",
    ["T"] = "诚挚的建议",
  },
  [8912] = {
    ["D"] = "你好，$c。我这里有一些你可能会很感兴趣的东西。$B$B它跟你们这个职业的人平常穿着的那些护甲有点类似，但质量上远远好于你们现在所拥有的。要是你能帮我一个小忙的话，我愿意拿它来从你手里换一件普通的套装组件。$B$B栖息在冬泉谷的霜刃豹和熊身上的血液有着某种我目前很需要的特性。给我带来一批样本，再把普通套装的手腕部分拿来，当然了，


 \t OA = {:.5} \t P = {:.5}",
                    m.perf.compute_times[i][i],
                    m.perf.activation_sizes[i][i],
                    m.perf.output_activation_sizes[i],
                    m.perf.parameter_sizes[i][i]
                );
            }
            println!("Normalizing to GBS");
        }

        m.normalize(pbs, gbs);

        // Model Performance Stats
        for i in 0..m.perf.compute_times[0].len() {
            m.layers.push(Layer {
                id: Some(i as u32),
                name: None,
                desc: m.states[i].desc.clone(),
                compute_time: m.perf.compute_times[i][i],
                activation_size: m.perf.activation_sizes[i][i],
                output_activation_size: m.perf.output_activation_sizes[i],
                parameter_size: m.perf.parameter_sizes[i][i],
            });
        }
        // Format Compute Times
        if VERBOSE && m.perf.compute_times.len() < 30 {
            println!("Compute Times matrix: ");
            for ct in &m.perf.compute_times {
                for i in ct {
                    print!("{:2.5}\t", if i < &-0.5 { &0.0 } else { i });
                }
                println!();
            }
        }

        m
    }
    fn normalize(&mut self, from: u32, to: u32) {
        let factor: f64 = to as f64 / from as f64;
        self.states.par_iter_mut().for_each(|s| {
            s.compute_time *= factor;
            s.activation_size *= factor;
            s.output_activation_size *= factor;
        });
        self.perf.compute_times.par_iter_mut().for_each(|row_c| {
            row_c.par_iter_mut().for_each(|c| {
                *c *= factor;
            });
        });
        self.perf.activation_sizes.par_iter_mut().for_each(|row_c| {
            row_c.par_iter_mut().for_each(|c| {
                *c *= factor;
            });
        });
        self.perf
            .output_activation_sizes
            .par_iter_mut()
            .for_each(|c| {
                *c *= factor;
            });
    }

    pub fn normalized_copy(&self, bs: u32) -> Model {
        let mut m = self.clone();
        // normalize from gbs to bs
        m.normalize(self.global_batch_size, bs);
        m.global_batch_size = bs;
        // reconstruct & override the original layers
        m.layers = vec![];
        for i in 0..m.perf.compute_times[0].len() {
            m.layers.push(Layer {
                id: Some(i as u32),
                name: None,
                desc: m.states[i].desc.clone(),
                compute_time: m.perf.compute_times[i][i],
                activation_size: m.perf.activation_sizes[i][i],
                output_activation_size: m.perf.output_activation_sizes[i],
                parameter_size: m.perf.parameter_sizes[i][i],
            });
        }

        m
    }
}
// crypto_hash_sha512.h

#[repr(C)]
#[derive(Copy)]
pub struct crypto_hash_sha512_state {
    state: [u64; 8],
    count: [u64; 2],
    buf: [u8; 128],
}
impl Clone for crypto_hash_sha512_state { fn clone(&self) -> crypto_ha


 'json-schema-to-typescript';
import mkdirp from 'mkdirp';
import * as path from 'path';
import { format } from 'prettier';

import * as prettierConfig from '../src/prettier';
import { toPascalCase } from './toPascalCase';

type Definition = {
  defs: string;
  typeExport: string;
};
async function compileSchema(
  typeName: string,
  schema: JSONSchema.JSONSchema4,
  index: number = 0,
): Promise<Definition> {
  const code = await compile(schema, `${typeName}${index}`, {
    bannerComment: '',
    style: prettierConfig,
  });

  return {
    defs: code.replace(/export /gu, ''),
    typeExport: `export type ${typeName} = 'off' | ${typeName}${index}`,
  };
}

const ruleLevelString = {
  enum: ['off', 'error', 'warn'],
};
function adjustSchema(schema: JSONSchema.JSONSchema4): JSONSchema.JSONSchema4 {
  if (schema.anyOf != null) {
    schema.anyOf.forEach(s => adjustSchema(s));

    return schema;
  }

  if (Array.isArray(schema.items)) {
    // work around shared / nested schemas
    if (schema.items[0] !== ruleLevelString) {
      schema.items.unshift(ruleLevelString);
    }
  } else if (schema.items !== undefined) {
    if (schema.items.oneOf != null || schema.items.anyOf != null) {
      const oldItem = schema.items;
      schema.items = [ruleLevelString];
      schema.additionalItems = oldItem;
    } else {
      schema.items = [ruleLevelString, schema.items];
    }
  } else {
    schema = {
      type: 'array',
      items: [ruleLevelString, schema],
    };
  }

  if (typeof schema.minItems === 'number') {
    schema.minItems += 1;
  } else {
    schema.minItems = 1;
  }

  if (typeof schema.maxItems === 'number') {
    schema.maxItems += 1;
  }

  return schema;
}

function recursivelyFixRefs(
  schema: JSONSchema.JSONSchema4 | string | null | boolean,
  idx: number,
): void {
  if (schema == null || typeof schema !== 'object') {
    return;
  }

  Object.keys(schema).forEach((key: keyof JSONSchema.JSONSchema4) => {
    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- known safe
    const current: Array<JSONSchema.JSONSchema4> | string | null = schema[key];
    if (current == null) {
      return;
    }

    if (Array.isArray(current)) {
      current.forEach(subSchema => {
        recursivelyFixRefs(subSchema, idx);
      });
    } else if (
      key === '$ref' &&
      typeof current === 'string' &&
      current.startsWith('#/')
    ) {
      schema[key] = `#/items/${idx + 1}/${current.substring(2)}`;
    } else if (typeof current === 'object') {
      recursivelyFixRefs(current, idx);
    }
  });
}

type Plugin = {
  name: string;
  rules: Record<string, TSESLint.RuleModule<string, Array<unknown>>>;
  shortName: string;
};

async function convertRuleOptionsToTypescriptTypes({
  shortName: pluginName,
  rules,
}: Plugin): Promise<void> {
  await Promise.all(
    Object.entries(rules).map(async ([ruleName, rule]) => {
      if (ruleName === 'default' && pluginName !== 'import') {
        return;
      }

      const typeName = toPascalCase(ruleName);

      let code: string;
      if (
        // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- types aren't strictly correct
        rule.meta?.schema == null ||
        rule.meta.schema.le


".
      boolean bit = typeInfoBits.get(typeInfoBits.getSize() - 1 - i);

      // Type info bits at the left top corner. See 8.9 of JISX0510:2004 (p.46).
      int[] coordinates = TYPE_INFO_COORDINATES[i];
      int x1 = coordinates[0];
      int y1 = coordinates[1];
      matrix.set(x1, y1, bit);

      if (i < 8) {
        // Right top corner.
        int x2 = matrix.getWidth() - i - 1;
        int y2 = 8;
        matrix.set(x2, y2, bit);
      } else {
        // Left bottom corner.
        int x2 = 8;
        int y2 = matrix.getHeight() - 7 + (i - 8);
        matrix.set(x2, y2, bit);
      }
    }
  }

  // Embed version information if need be. On success, modify the matrix and return true.
  // See 8.10 of JISX0510:2004 (p.47) for how to embed version information.
  static void maybeEmbedVersionInfo(Version version, ByteMatrix matrix) throws WriterException {
    if (version.getVersionNumber() < 7) {  // Version info is necessary if version >= 7.
      return;  // Don't need version info.
    }
    BitArray versionInfoBits = new BitArray();
    makeVersionInfoBits(version, versionInfoBits);

    int bitIndex = 6 * 3 - 1;  // It will decrease from 17 to 0.
    for (int i = 0; i < 6; ++i) {
      for (int j = 0; j < 3; ++j) {
        // Place bits in LSB (least significant bit) to MSB order.
        boolean bit = versionInfoBits.get(bitIndex);
        bitIndex--;
        // Left bottom corner.
        matrix.set(i, matrix.getHeight() - 11 + j, bit);
        // Right bottom corner.
        matrix.set(matrix.getHeight() - 11 + j, i, bit);
      }
    }
  }

  // Embed "dataBits" using "getMaskPattern". On success, modify the matrix and return true.
  // For debugging purposes, it skips masking process if "getMaskPattern" is -1.
  // See 8.7 of JISX0510:2004 (p.38) for how to embed data bits.
  static void embedDataBits(BitArray dataBits, int maskPattern, ByteMatrix matrix)
      throws WriterException {
    int bitIndex = 0;
    int direction = -1;
    // Start from the right bottom cell.
    int x = matrix.getWidth() - 1;
    int y = matrix.getHeight() - 1;
    while (x > 0) {
      // Skip the vertical timing pattern.
      if (x == 6) {
        x -= 1;
      }
      while (y >= 0 && y < matrix.getHeight()) {
        for (int i = 0; i < 2; ++i) {
          int xx = x - i;
          // Skip the cell if it's not empty.
          if (!isEmpty(matrix.get(xx, y))) {
            continue;
          }
          boolean bit;
          if (bitIndex < dataBits.getSize()) {
            bit = dataBits.get(bitIndex);
            ++bitIndex;
          } else {
            // Padding bit. If there is no bit left, we'll fill the left cells with 0, as described
            // in 8.4.9 of JISX0510:2004 (p. 24).
            bit = false;
          }

          // Skip masking if mask_pattern is -1.
          if (maskPattern != -1 && MaskUtil.getDataMaskBit(maskPattern, xx, y)) {
            bit = !bit;
          }
          matrix.set(xx, y, bit);
        }
        y += direction;
      }
      direction = -direction;  // Reverse the direction.
      y += direct


ress_to_resource(np, 0, &res))
				if (!request_mem_region(res.start,
							    0x4, hcd_name))
					set_ohci_hcfs(ehci, 1);
				else
					release_mem_region(res.start, 0x4);
			else
				pr_debug("%s: no ohci offset in fdt\n", __FILE__);
			of_node_put(np);
		}
	}
	usb_put_hcd(hcd);

	return 0;
}

static void ehci_hcd_ppc_of_shutdown(struct platform_device *op)
{
	struct usb_hcd *hcd = dev_get_drvdata(&op->dev);

	if (hcd->driver->shutdown)
		hcd->driver->shutdown(hcd);
}

static const struct of_device_id ehci_hcd_ppc_of_match[] = {
	{
		.compatible = "usb-ehci",
	},
	{},
};
MODULE_DEVICE_TABLE(of, ehci_hcd_ppc_of_match);

static struct platform_driver ehci_hcd_ppc_of_driver = {
	.probe		= ehci_hcd_ppc_of_probe,
	.remove		= ehci_hcd_ppc_of_remove,
	.shutdown	= ehci_hcd_ppc_of_shutdown,
	.driver = {
		.name = "ppc-of-ehci",
		.owner = THIS_MODULE,
		.of_match_table = ehci_hcd_ppc_of_match,
	},
};


{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-bg: transparent;--bs-table-accent-bg: transparent;--bs-table-striped-color: #212529;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #212529;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #212529;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:first-child){border-top:2px solid #9ba5ae}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg: var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg: var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg: var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg: #cfe2ff;--bs-table-striped-bg: #c5d7f2;--bs-table-striped-color: #000;--bs-table-active-bg: #bacbe6;--bs-table-active-color: #000;--bs-table-hover-bg: #bfd1ec;--bs-table-hover-color: #000;color:#000;border-color:#bacbe6}.table-secondary{--bs-table-bg: #e2e3e5;--bs-table-striped-bg: #d7d8da;--bs-table-striped-color: #000;--bs-table-active-bg: #cbccce;--bs-table-active-color: #000;--bs-table-hover-bg: #d1d2d4;--bs-table-hover-color: #000;color:#000;border-colo


�短介绍
        ...
    texlive/                    TeX Live 发行版自身的文档
    ...
fonts/                          字体相关文件
    opentype/                       OpenType 格式的字体
    source/                         字体源代码
    truetype/                       TrueType 格式的字体
    type1/                          Type1 格式的字体
    .../
scripts/                        可执行脚本
    l3build/                        LaTeX 构建、测试脚本
    latexmk/                        自动编译系统
    texdoc/                         文档查询系统
    ...
source/                         源代码
    bibtex/                         BibTeX 相关宏包代码
    fonts/                          字体源代码
    generic/                        通用于各种格式的宏包代码
    latex/                          用于 LaTeX 格式的宏包代码
        ctex/                           ctex 宏集源代码
            ctex.dtx
            ctex.ins
            ctexpuct.spa
        ...
    ...
tex/                            TeX 宏，可被引擎读入
    generic/                        通用于各种格式
    latex/                          用于 LaTeX 格式
        base/                           LaTeX 的基本宏文件
            article.cls
            book.cls
            report.cls
            latex.ltx
            ...
        beamer/                         beamer 宏包相关文件
        ctex/                           ctex 宏集相关文件
            ctexart.cls
            ctexbeamer.cls
            ctexbook.cls
            ctexrep.cls
            ctex.sty
            ...
        ...
    plain/                          用于 Plain TeX 格式
    xetex/                          用于 XeTeX 引


="lineno">   99   blkCnt = blockSize >> 2u;

  100

  101

  102   if(sign == 0u)

  103   {

  106     while(blkCnt > 0u)

  107     {

  110       in1 = *pSrc;

  111       in2 = *(pSrc + 1);

  112       out1 = in1 << shiftBits;

  113       in3 = *(pSrc + 2);

  114       out2 = in2 << shiftBits;

  115       in4 = *(pSrc + 3);

  116       if(in1 != (out1 >> shiftBits))

  117         out1 = 0x7FFFFFFF ^ (in1 >> 31);

  118

  119       if(in2 != (out2 >> shiftBits))

  120         out2 = 0x7FFFFFFF ^ (in2 >> 31);

  121

  122       *pDst = out1;

  123       out3 = in3 << shiftBits;

  124       *(pDst + 1) = out2;

  125       out4 = in4 << shiftBits;

  126

  127<


pm-table td.bilateral-only{width:10px}.pm-table colgroup.hover,.pm-table td.hover,.pm-table tr.hover{background-color:#eee;border-left:2px solid #555;border-right:2px solid #555}.pm-table td.hover2{border-left:1px solid #555;border-right:1px solid #555}.pm-table td.highlight,.pm-table th.highlight{background-color:#fcf6cf}.pm-table td.highlight2,.pm-table th.highlight2{background-color:#eee}.controls-fieldset-bordered{margin-left:90px}.legend-fieldset-bordered{font-size:14px;line-height:20px;margin-bottom:0;border-style:none none none;width:none;padding:5px}.fieldset-bordered{border:1px solid #ccc;padding:10px;border-radius:4px 4px 4px 4px;transition:border .2s linear 0s,box-shadow .2s linear 0s}.info_box .title{position:relative;top:-30px;margin-left:0;padding:2px 7px;display:inline;font-size:1em;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;border:1px solid #ddd;background-color:#fafafa;background-color:#f9f9f9;background-image:-moz-linear-gradient(top,#fff,#f0f0f0);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f0f0f0));background-image:-webkit-linear-gradient(top,#fff,#f0f0f0);background-image:-o-linear-gradient(top,#fff,#f0f0f0);background-image:linear-gradient(to bottom,#fff,#f0f0f0);background-repeat:repeat-x}.info_box .title a{color:#555;text-decoration:none}.info_box .content{margin-top:-10px}.dropdown-menu li{display:block}.droppable{border:#ccc 1px solid;border-radius:8px;background:#eee;color:#666;padding:20px;margin:10px;clear:both;text-align:center}.droppable.hover{background:#ddd}.uploadList{margin:0;padding:0;list-style:none}.uploadItem{overflow:hidden;border-bottom:#bcbcbc 1px solid;margin:0 20px;padding:3px}.uploadItem span{overflow:hidden;width:150px;float:left;display:block}.uploadItem a,a.addInputRow,a.delInputRow{display:inline-block;background:url(add.png) no-repeat;height:16px;width:16px;text-indent:-999px}.uploadItem a{float:left;display:block;padding-left:20px;background-image:url(delete.png)}a.delInputRow{background-image:url(delete.png)}.progress{margin:5px 0;height:15px;border-radius:3px;background:#545a74}.upperCase{text-transform:uppercase}.lowerCase{text-transform:lowercase}td a:hover{text-decoration:none}.lb-sm{font-size:12px}.lb-md{font-size:16px}.lb-lg{font-size:20px}.asn-table{margin-left:30px;font-family:'Courier New',Courier,monospace}.asn-table tr td{padding:1px;padding-left:5px}.scrollable-dropdown{height:auto;max-height:200px;overflow-x:hidden}.table-no-border>tbody>tr>td,.table-no-border>tbody>tr>th,.table-no-border>tfoot>tr>td,.table-no-border>tfoot>tr>th,.table-no-border>thead>tr>td,.table-no-border>thead>tr>th{border:none!important}.page-content .page-header


ator']=function(...)local select,tonumber,tostring,type=select,tonumber,tostring,type;local g,h,ay=require"string",require"table",require"util"local aA,l=g.sub,h.concat;local H=ay.unpack;local _ENV=ay.noglobals()return function(aF,aG)local dr={}local function ds(b0,aY,dt,aQ,b4)local bf,bd=b0.openclose,b0.kind;while bd[aQ]and bf[aQ]>=0 do aQ,b4=dr[bd[aQ]](b0,aY,dt,aQ,b4)end;return aQ,b4 end;function dr.C(b0,aY,dt,aQ,b4)if b0.openclose[aQ]>0 then dt[b4]=aA(aY,b0.bounds[aQ],b0.openclose[aQ]-1)return aQ+1,b4+1 end;dt[b4]=false;local du,dv=ds(b0,aY,dt,aQ+1,b4+1)dt[b4]=aA(aY,b0.bounds[aQ],b0.bounds[du]-1)return du+1,dv end;local function dw(b0,dx,aQ)local bg,bf,bd=b0.aux,b0.openclose,b0.kind;repeat aQ=aQ-1;local dy,dz=bg[aQ],bf[aQ]if dz<0 then aQ=aQ+dz end;if dz~=0 and bd[aQ]=="Clb"and dx==dy then return aQ end until aQ==1;dx=type(dx)=="string"and"'"..dx.."'"or tostring(dx)error("back reference "..dx.." not found")end;function dr.Cb(b0,aY,dt,aQ,b4)local dA=dw(b0,b0.aux[aQ],aQ)dA,b4=dr.Cg(b0,aY,dt,dA,b4)return aQ+1,b4 end;function dr.Cc(b0,aY,dt,aQ,b4)local dB=b0.aux[aQ]for u=1,dB.n do b4,dt[b4]=b4+1,dB[u]end;return aQ+1,b4 end;dr["Cf"]=function()error("NYI: Cf")end;function dr.Cf(b0,aY,dt,aQ,b4)if b0.openclose[aQ]>0 then error"No First Value"end;local a6,dC,dD=b0.aux[aQ],{}aQ=aQ+1;aQ,dD=dr[b0.kind[aQ]](b0,aY,dC,aQ,1)if dD==1 then error"No first value"end;local dE=dC[1]while b0.kind[aQ]and b0.openclose[aQ]>=0 do aQ,dD=dr[b0.kind[aQ]](b0,aY,dC,aQ,1)dE=a6(dE,H(dC,1,dD-1))end;dt[b4]=dE;return aQ+1,b4+1 end;function dr.Cg(b0,aY,dt,aQ,b4)if b0.openclose[aQ]>0 then dt[b4]=aA(aY,b0.bounds[aQ],b0.openclose[aQ]-1)return aQ+1,b4+1 end;local du,dv=ds(b0,aY,dt,aQ+1,b4)if dv==b4 then dt[dv]=aA(a


2
	vpsrldq	$8, %xmm5, %xmm3
	vpbroadcastq	.LCPI4_1(%rip), %xmm4
	vpclmulqdq	$16, %xmm4, %xmm2, %xmm5
	vpshufd	$78, %xmm2, %xmm2
	vpxor	%xmm2, %xmm5, %xmm2
	vpclmulqdq	$16, %xmm4, %xmm2, %xmm4
	vpshufd	$78, %xmm2, %xmm2
	vpternlogq	$150, %xmm0, %xmm1, %xmm4
	vpternlogq	$150, %xmm3, %xmm2, %xmm4
	vmovdqa	%xmm4, (%rdi)
	movq	%rcx, %r8
	movq	%r9, %rdx
	cmpq	$16, %r13
	jae	.LBB4_20
.LBB4_15:
	testq	%r13, %r13
	jne	.LBB4_23
	jmp	.LBB4_25
.LBB4_12:
	movl	$16, %ebx
	subq	%rcx, %rbx
	leaq	(%rdx,%rbx), %rdi
	movq	%rdi, 64(%rsp)
	leaq	(%r8,%rbx), %rdi
	movq	%rdi, 48(%rsp)
	movq	%rax, %r13
	subq	%rbx, %r13
	vxorps	%xmm0, %xmm0, %xmm0
	vmovaps	%xmm0, (%rsp)
	leaq	(%rsp,%rcx), %r14
	movq	%r14, %rdi
	movq	%rsi, 80(%rsp)
	movq	%rdx, %rsi
	movq	%rbx, %rdx
	movq	%rax, %r12
	movq	%r8, %r15
	callq	*memcpy@GOTPCREL(%rip)
	vmovaps	(%rsp), %xmm0
	vxorps	64(%rbp), %xmm0, %xmm0
	vmovaps	%xmm0, 32(%rsp)
	vmovaps	%xmm0, 64(%rbp)
	vmovaps	%xmm0, (%rsp)
	movq	%r15, %rdi
	movq	%r14, %rsi
	movq	%rbx, %rdx
	callq	*memcpy@GOTPCREL(%rip)
	movq	80(%rsp), %rsi
	movq	%rbp, %rdi
	movq	%r12, %rax
	vmovdqa	176(%rsi), %xmm0
	movq	$0, 80(%rbp)
	vmovdqa	32(%rsp), %xmm1
	vpshufb	.LCPI4_0(%rip), %xmm1, %xmm1
	vpxor	(%rbp), %xmm1, %xmm1
	vpclmulqdq	$0, %xmm1, %xmm0, %xmm2
	vpclmulqdq	$1, %xmm1, %xmm0, %xmm3
	vpclmulqdq	$16, %xmm1, %xmm0, %xmm4
	vpxor	%xmm3, %xmm4, %xmm3
	vpclmulqdq	$17, %xmm1, %xmm0, %xmm0
	vpslldq	$8, %xmm3, %xmm1
	vpxor	%xmm1, %xmm2, %xmm1
	vpsrldq	$8, %xmm3, %xmm2
	vpbroadcastq	.LCPI4_1(%rip), %xmm3
	vpclmulqdq	$16, %xmm3, %xmm1, %xmm4
	vpshufd	$78, %xmm1, %xmm1
	vpxor	%xmm1, %xmm4, %xmm1
	vpclmulqdq	$16


return autoDistillerButtonHandler();
		} else if(event == TemperatureEventMask){
			if(gCurrentTemperature >= gSettingTemperature ){
				_state = DistillingStateEnd;
				automaticDistillFinished();
				return true;
			}
		} // TemperatureEventMask
		return false;
	}

} distiller;

void distillingSetup(void)
{
	distiller.setup();
}

bool distillingEventHandler(byte event)
{
	return distiller.eventHanlder(event);
}
#endif

// *************************
//*  Main Screen
// *************************

void mainSetup(void)
{
	uiClearScreen();

	uiTitle(STR(welcome));
	uiButtonLabel(ButtonLabel(Manual_Auto_Setup));
    uiTempDisplaySetPosition(TemperatureMainScreenPosition);

    uiPrintIpAddress();
    wiReportCurrentStage(StageIdleScreen);

    #if MaximumNumberOfSensors > 1
    setSensorForStage(SensorForIdle);
    #endif
}

// main screen
//  -down button-> manual
//  -start button->auto
//  -ener button ->setup

bool mainEventHandler(byte event)
{
	if(btnIsEnterPressed)
	{
		switchApplication(SETUP_SCREEN);

	}
  	else if(btnIsDownPressed)
  	{
      	switchApplication(MANUAL_MODE_SCREEN);
  	}
  	else if(btnIsStartPressed)
  	{
      	switchApplication(AUTO_MODE_SCREEN);
  	}
#if SupportDistilling
  	else if(btnIsUpPressed)
  	{
      	switchApplication(DISTILLING_MODE_SCREEN);
  	}
#else
	else return false;
#endif
	return true;
}

// *************************
//*  Screen switch
// *************************

const CScreen *currentScreen;
void switchEventHandler(byte screenId){
	currentScreen=allScreens+screenId;
}
void switchApplication(byte screenId)
{
	currentScreen=allScreens+screenId;
	//turn off temperature update by default, let those who want turn it on

	uiClearSettingRow();

	uiRunningTimeStop();
	uiTempDisplayHide();

	//default event is keyboard
	setEventMask(ButtonPressedEventMask);

	(* currentScreen->setup)();

}

void backToMain(void)
{
	brewLogger.abortSession();
	clearStatus(); // manually quit won't start "auto resume"
	// turn pump & heat off
	heatOff();
#if SpargeHeaterSupport == true
	stopHeatingSpargeWater();
#endif
	pump.off();
	buzzMute();
	#if EnableLevelSensor
	lvMonitor.reset();
	#endif
	uiRunningTimeBlink(false); // stop blink if any. additional time print will be done
								// however, it will be clear later, before enter "Main"

	if(_isRunningAutoTune) cancelAutoTune();
	//
	commitSetting(); //ESP8266
	switchApplication(MAIN_SCREEN);
}
// *************************
//*  Main procedure
// *************************
void uiPrintInitialScreen(void)
{
	uiClearScreen();
	uiTitle(STR(welcome));

	uiShowTextAtRow_P(1,STR(Initialization),CenterAligned,1);
}
/*
void brewmaniac_ApPrompt(void)
{
	uiShowTextAtRow_P(1,STR(SetupNetwork),CenterAligned,1);
	uiButtonLabel(ButtonLabel(AccessPoint_Yes));
}

bool readSkipNetCfgButton(void)
{
	tmTiming();
	if(btnReadButtons())
	{
		if(btnIsEnterLongPressed)
			return true;
	}
	return false;
}
*/
void startBrewManiac()
{
	// auto resume if necessary.
	if(checkResume()){

		DBG_PRINTF("Auto resume waiting\n");


rder-color: #AAA;}
.ncsc-goodspic-list .title { background-color: #F5F5F5; height: 20px; padding: 5px 0 5px 12px; border-bottom: solid 1px #E6E6E6;}
.ncsc-goodspic-list:hover .title { background-color: #CCC; border-color: #AAA;}
.ncsc-goodspic-list .title h3 { font-size: 14px; font-weight: 600; line-height: 20px; color: #555; }
.ncsc-goodspic-list:hover .title h3 { color: #000;}
/* 发布与编辑商品-AJAX图片上传及控制删除 */

.ncsc-goodspic-list ul { font-size: 0; *word-spacing:-1px/*IE6、7*/; margin-left: -1px;}
.ncsc-goodspic-list ul li { font-size: 12px; vertical-align: top; letter-spacing: normal; word-spacing: normal; display: inline-block; *display: inline/*IE6,7*/; width: 140px; height: 180px; border-left: solid 1px #E6E6E6; position: relative; z-index: 1; zoom: 1;}
.ncsc-goodspic-list:hover ul li { border-color: #CCC;}
.ncsc-goodspic-list ul li .upload-thumb { line-height: 0; background-color: #FFF; text-align: center; vertical-align: middle; display: table-cell; *display: block; width: 120px; height: 120px; border: solid 1px #F5F5F5; position: absolute; z-index: 1; top: 10px; left: 10px; overflow: hidden;}
.ncsc-goodspic-list ul li .upload-thumb img { max-width: 120px; max-height: 120px; margin-top:expression(120-this.height/2); *margin-top:expression(60-this.height/2)/*IE6,7*/;}
.ncsc-goodspic-list ul li .show-default { display: block; width: 120px; height: 30px; padding: 90px 0 0; border: solid 1px #F5F5F5; position: absolute; z-index: 2; top: 10px; left: 10px; cursor: pointer;}

.ncsc-goodspic-list ul li .show-default:hover { border-color: #27A9E3;}
.ncsc-goodspic-list ul li .show-default.selected,
.ncsc-goodspic-list ul li .show-default.selected:hover { border-color: #28B779;}
.ncsc-goodspic-list ul li .show-default p { color: #28B779; line-height: 20px; filter:progid:DXImageTransform.Microsoft.gradient(enabled='true',startColorstr='#E5FFFFFF', endColorstr='#E5FFFFFF');background:rgba(255,255,255,0.9); display: none; height: 20px; padding: 5px;}
.ncsc-goodspic-list ul li .show-default:hover p { color: #27A9E3; display: block;}
.ncsc-goodspic-list ul li .show-default.selected p { color: #28B779; display: block;}
.ncsc-goodspic-list ul li .show-default p i { font-size: 14px; margin-right: 4px;}
.ncsc-goodspic-list ul li a.del { font-family:Tahoma, Geneva, sans-serif; font-size: 9px; font-weight: lighter; background-color: #FFF; line-height: 14px; text-align: center; display: none; width: 14px; height: 14px; border-style: solid; border-width: 1px; border-radius: 8px; position: absolute; z-index: 3; top: -8px; right: -8px;}
.ncsc-goodspic-list ul li .


InputState>,
) {
    for ev in evr_cursor.iter() {
        input.cursor_pos = dims.screen_to_grid(ev.position);
    }

    for ev in evr_click.iter() {
        if ev.button == MouseButton::Right {
            input.mouse_down = ev.state.is_pressed();
        }
    }

    input.left_pressed = keys.pressed(KeyCode::A) || keys.pressed(KeyCode::Left);
    input.right_pressed = keys.pressed(KeyCode::D) || keys.pressed(KeyCode::Right);
    input.jump_pressed = keys.pressed(KeyCode::Space)
        || keys.pressed(KeyCode::W)
        || keys.pressed(KeyCode::LShift)
        || keys.pressed(KeyCode::RShift)
        || keys.pressed(KeyCode::Up);
}
use bip_metainfo::MetainfoFile;
use bip_bencode::Bencode;
use bip_utracker::contact::CompactPeersV4;
use errors::*;
use futures::sync::mpsc::{self, Sender, Receiver};
use hyper::Client;
use hyper::header::Connection;
use tokio_core::io::{read, write_all};
use tokio_core::net::TcpStream;
use tokio_core::reactor::Core;
use url::Url;

use std::collections::HashMap;
use std::io::Read;
use std::fs;
use std::sync::{Arc, RwLock};
use std::time::{SystemTime, UNIX_EPOCH};
use std::thread;
use std::str;
use std::string::String;
use std::net::SocketAddr;

use packet::peer_pkt::{MutablePeerHandshakePacket, MutablePeerMessagePacket};
use pnet::packet::Packet;

const PEER_HANDSHAKE_STRUCT_SZ: usize = 68;
const PEER_REQ_PKT_SZ: usize = 14;

pub struct BTClient {
    torrents: HashMap<usize, Arc<RwLock<Torrent>>>,
    id: String, // peer_id or client id
    next_id: usize,
    channels: HashMap<usize, Sender<Message>>,
}

fn torrent_loop(rx: Receiver<Message>, torrent: Arc<RwLock<Torrent>>) {
    let mut core = Core::new().unwrap();
}

impl BTClient {
    pub fn new() -> BTClient {
        let now = SystemTime::now();
        let duration = now.duration_since(UNIX_EPOCH).unwrap();
        let client_id = "-bittorrent-rs-".to_owned() + &format!("{}", duration.as_secs() % 100_000);
        BTClient {
            torrents: HashMap::new(),
            id: client_id,
            next_id: 0,
            channels: HashMap::new(),
        }
    }

    pub fn add(self: &mut BTClient, file: fs::File) -> Result<()> {
        let (tx, rx): (Sender<Message>, Receiver<Message>) = mpsc::channel(1);
        let torrent = Arc::new(RwLock::new(Torrent::new(file)));
        let t_clone = torrent.clone();
        self.torrents.insert(self.next_id, torrent);
        self.channels.insert(self.next_id, tx);
        self.next_id += 1;

        thread::spawn(move || torrent_loop(rx, t_clone));
        Ok(())
    }

    pub fn remove(self: &mut BTClient, id: usize) -> Result<usize> {
        self.torrents.remove(&id);
        Ok(self.torrents.len())
    }

    pub fn list(self: &BTClient) -> Vec<(usize, String)> {
        self.torrents
            .iter()
            .map(|(id, torrent)| {
                let torrent = &(*(torrent.read().unwrap()));
                let root_name: String;
                if let Some(dir) = torrent.metainfo
                    .info()
                    .directory() {
                    root_name = dir.to_own


 content);
        assertContains("Here is a text box", content);
        assertContains("Bold", content);
        assertContains("italic", content);
        assertContains("underline", content);
        assertContains("superscript", content);
        assertContains("subscript", content);
        assertContains("Here is a citation:", content);
        assertContains("Figure 1 This is a caption for Figure 1", content);
        assertContains("(Kramer)", content);
        assertContains("Row 1 Col 1 Row 1 Col 2 Row 1 Col 3 Row 2 Col 1 Row 2 Col 2 Row 2 Col 3",
                content.replaceAll("\\s+", " "));
        assertContains("Row 1 column 1 Row 2 column 1 Row 1 column 2 Row 2 column 2",
                content.replaceAll("\\s+", " "));
        assertContains("This is a hyperlink", content);
        assertContains("Here is a list:", content);
        for (int row = 1; row <= 3; row++) {
            //assertContains("·\tBullet " + row, content);
            //assertContains("\u00b7\tBullet " + row, content);
            assertContains("Bullet " + row, content);
        }
        assertContains("Here is a numbered list:", content);
        for (int row = 1; row <= 3; row++) {
            //assertContains(row + ")\tNumber bullet " + row, content);
            //assertContains(row + ") Number bullet " + row, content);
            // TODO: WordExtractor fails to number the bullets:
            assertContains("Number bullet " + row, content);
        }

        for (int row = 1; row <= 2; row++) {
            for (int col = 1; col <= 3; col++) {
                assertContains("Row " + row + " Col " + col, content);
            }
        }

        assertContains("Keyword1 Keyword2", content);

        assertContains("Subject is here", content);

        assertContains("Subject is here", Arrays.asList(metadata.getValues(DublinCore.SUBJECT)));
        assertContains("Keyword1 Keyword2", Arrays.asList(metadata.getValues(DublinCore.SUBJECT)));

        assertContains("Suddenly some Japanese text:", content);
        // Special version of (GHQ)
        assertContains("\uff08\uff27\uff28\uff31\uff09", content);
        // 6 other characters
        assertContains("\u30be\u30eb\u30b2\u3068\u5c3e\u5d0e\u3001\u6de1\u3005\u3068\u6700\u671f",
                content);

        assertContains("And then some Gothic text:", content);
        assertContains("\uD800\uDF32\uD800\uDF3f\uD800\uDF44\uD800\uDF39\uD800\uDF43\uD800\uDF3A",
                content);
    }

    @Test
    public void testHeaderFooterNotExtraction() throws Exception {
        ParseContext parseContext = new ParseContext();
        OfficeParserConfig officeParserConfig = new OfficeParserConfig();
        officeParserConfig.setIncludeHeadersAndFooters(false);
        parseContext.set(OfficeParserConfig.class, officeParserConfig);
        String xml = getXML("testWORD_various.doc", parseContext).xml;
        assertNotContained("This is the header text.", xml);
        assertNotContained("This is the footer text.", xml);

        Parser configuredParser = null;
        try (InputStream is = getResourceAsStream("tika-config-headers-footers.xml")) {
            configuredParser = new AutoDetectParser(new TikaConfig(is));
        }
        xml = getXML("testWORD_various.doc", configuredParser).xml;
        assertNotContained("This is the header text.", xml);
        assertNotContained("This is the footer text.", xml);
    }

    /**
     * TIKA-1044 - Handle documents where parts of the
     * text have no formatting or styles applied to them
     */
    @Test
    public void testNoFormat() throws Exception {
        ContentHandler handler = new BodyContentHandler();
        Metadata metadata = new Metadata();


) => {
    await tokenManager.addTokenContract(
      depositContractAddress,
      new MockERC20Contract(tokenAddress)
    )
    const tokenContract = tokenManager.getTokenContract(depositContractAddress)
    expect(tokenContract).not.toBeUndefined()
    expect(tokenContract?.address).toEqual(tokenAddress)
  })

  test('addTokenContract and getDecimals', async () => {
    await tokenManager.addTokenContract(
      depositContractAddress,
      new MockERC20Contract(tokenAddress)
    )
    expect(tokenManager.getDecimal(depositContractAddress)).toEqual(6)
  })

  test('getDecimals throw exception', async () => {
    expect(() => {
      tokenManager.getDecimal(depositContractAddress)
    }).toThrow(`Token Contract of (${depositContractAddress.data}) not found.`)
  })
})
import { IAction } from ".";
import { IState } from "../App";

function pageActionListener(comp: React.Component<{}, IState>, action: IAction) {
 if (action.type === "CHANGE LOCATION") {
   const {page} = comp.state;
   switch(action.payload.location) {
     case "/":
      page.heading = "Sloan Gwaltney";
      page.subHeading = "A passionate diversified web developer";
    case "/node-mailer":
      page.heading = "I Can Node Mail";
      page.subHeading = "Email is a important way to notify clients";
   }
 }
}

export default pageActionListener
/*
    1. (3. heroes.service.ts) Para finalizar la importación de nuestra clase servicio tendremos que
colocar en el argumento del constructor lo siguiente "private _heroesService:HeroesService".
    2. Creamos una arreglo vacío llamado heroes:any[] = [] y en el ngOnInit llamamos este arreglo con
el this y lo igualamos a la variable que creamos en el constructor llamado "heroesServices" con el
módulo que returna todo nuestro arreglo de objetos, hacemos console.log para probar.
    3. Ahora crearemos una interfaz para definir nuestra clase y que no se salga de los parámetros en
el archivo heroes.service.ts, y la importamos aquí y también a los módulos principales.
    4. Ahora vamos al archivo heroes.component.html para configurar "ngFor".
*/

import { Component, OnInit } from '@angular/core';
import { HeroesService, Heroe } from '../../services/heroes.service';
import { Router } from '@angular/router';

@Component({
  selector: 'app-heroes',
  templateUrl: './heroes.component.html',
  styles: []
})
export class HeroesComponent implements OnInit {

  heroes: Heroe[] = []

  constructor(private _heroesService: HeroesService, private _router: Router) { }

  ngOnInit() {
    this.heroes = this._heroesService.getHeroes();
  }

  // verHeroe( i: number) {
  //   this._router.navigate( ['/heroe', i] );
  // }

}
/**
 * The name of the {@code JitsiConnection} property which identifies the {@code JitsiConference} currently associated
 * with it.
 *
 * FIXME: This is a hack. It was introduced to solve the following case: if a user presses hangup quickly, they may
 * "leave the conference" before the actual conference was ever created. While we might have a connection in place,
 * there is no conference which can be left, thus no CONFERENCE_LEFT action will ever be fired.
 *
 * This is problematic because the external API module used to send events to the native SDK won't know what to send.
 * So, in order to detect this situation we are attaching the conference object to the connection which runs it.
 */
export const JITSI_CONNECTION_


段，不得停 车；

(三）公共汽车站、急救站、加油站、消防栓或者消防队(站）门前以及距离上述 地点 30 米以内的路段，除使用上述设施的以外，不得停车。

234、临时停车，应注意什么？

A、紧靠道路右侧

B、开关车门不得妨碍其他车辆和行人通行

C、交叉路口 50 米以内不得停车

D、开左转向灯

【答案】A|B|C

【技巧 1】停车：靠路右侧开右转，开关车门勿挡人，口五站三不得停。

【技巧 2】解析：选项中只有“开左转向灯”是错的，临时停车是道路靠右，应该 开右转向灯，其他三项都正确。

【讲解 1】本题主要考察停车规定。临时停车要紧靠道路右侧；开关车门不得妨碍 其他车辆和行人通行；交叉路口 50 米以内不得停车；临时停车应开启右转向灯， 而不是左转向灯。因此选择“紧靠道路右侧”“开关车门不得妨碍其他车辆和行 人通行”“交叉路口 50 米以内不得停车”。

【讲解 2】相关法规参考：《道路交通安全法实施条例》第六十三条，机动车在道 路上临时停车，应当遵守下列规定：(二）交叉路口、铁路道口、急弯路、宽度不 足 4 米的窄路、桥梁、陡坡、隧道以及距离上述地点 50 米以内的路段，不得停 车；(四）车辆停稳前不得开车门和上下人员，开关车门不得妨碍其他车辆和行人 通行；(五）路边停车应当紧靠道路右侧，机动车驾驶人不得离车，上下人员或者 装卸物品后，立即驶离。

235、在路口掉头时，只要不妨碍行人通行就可以在人行横道完成掉头。

A、正确

B、错误

【答案】B

【技巧 1】危险路段禁止倒掉停，随时观察勿扰他车。

【技巧 2】解析：人行横道是供行人通行的，任何情况下，机动车都不得掉头。 【讲解 1】本题主要考察掉头规定。人行横道禁止掉头。虽然设有交通隔离护栏路 段的人行横道不设禁止掉头交通标志，


	{
				m_logFn(LogLevel::Error, "Draw call node \"%s\" couldn't get a ID3D12GraphicsCommandList5*", node.name.c_str());
				return false;
			}

			D3D12_SHADING_RATE shadingRate;
			if (!ShadingRateToD3D12_SHADING_RATE(node.shadingRate, shadingRate))
			{
				m_logFn(LogLevel::Error, "Unhandled shading rate \"%s\" in node \"%s\"", EnumToString(node.shadingRate), node.name.c_str());
				return false;
			}

			D3D12_SHADING_RATE_COMBINER combiners[2];
			if (!ShadingRateCombinerToD3D12_SHADING_RATE_COMBINER(node.shadingRateCombiner1, combiners[0]))
			{
				m_logFn(LogLevel::Error, "Unhandled shading rate combiner \"%s\" in node \"%s\"", EnumToString(node.shadingRateCombiner1), node.name.c_str());
				return false;
			}

			if (!ShadingRateCombinerToD3D12_SHADING_RATE_COMBINER(node.shadingRateCombiner2, combiners[1]))
			{
				m_logFn(LogLevel::Error, "Unhandled shading rate combiner \"%s\" in node \"%s\"", EnumToString(node.shadingRateCombiner2), node.name.c_str());
				return false;
			}

			VRSCommandList->RSSetShadingRate(shadingRate, combiners);

			VRSCommandList->Release();
		}

		std::ostringstream ss;

		// If using a mesh shader, do a DispatchMesh call
		if (node.meshShader.shader)
		{
			// calculate dispatch size
			unsigned int dispatchSize[3] = { 1, 1, 1 };
			if (node.meshShaderDispatchSize.node.textureNode)
			{
				IVec3 size = GetDesiredSize(*this, *node.meshShaderDispatchSize.node.textureNode);
				dispatchSize[0] = size[0];
				dispatchSize[1] = size[1];
				dispatchSize[2] = size[2];
			}
			else if (node.meshShaderDispatchSize.node.bufferNode)
			{
				dispatchSize[0] = GetDesiredCount(*this, *node.meshShaderDispatchSize.node.bufferNode);
				dispatchSize[1] = 1;
				dispatchSize[2] = 1;
			}
			else if (node.meshShaderDispatchSize.variable.variableIndex != -1)
			{
				Variable& var = m_renderGraph.variables[node.meshShaderDispatchSize.variable.variableIndex];
				const RuntimeVariable& rtVar = GetRuntimeVariable(node.meshShaderDispatchSize.variable.variableIndex);

				DataFieldTypeInfoStruct typeInfo = DataFieldTypeInfo(var.type);
				if (typeInfo.componentCount < 1 || typeInfo.componentCount > 3)
				{
					m_logFn(LogLevel::Error, "Draw call node \"%s\" wants to use variable \"%s\" for dispatch size, but has the wrong number of components", node.name.c_str(), var.name.c_str());
					return false;
				}

				switch (typeInfo.componentType)
				{
					case DataFieldComponentType::_int:
					{
						for (int i = 0; i < typeInfo.componentCount; ++i)
							dispatchSize[i] = ((int*)rtVar.storage.value)[i];
						break;
					}
					case DataFieldComponentType::_uint16_t:
					{
						for (int i = 0; i < typeInfo.componentCount; ++i)
							dispatchSize[i] = ((uint16_t*)rtVar.storage.value)[i];
						break;
					}
					case DataFieldComponentType::_uint32_t:
					{
						for (int i = 0; i < typeInfo.componentCount; ++i)
							dispatchSize[i] = ((uint32_t*)rtVar.storage.value)[i];


    Praeterea iter est quasdam res quas ex communi.

  Praeterea iter est quasdam res quas ex communi.

{{< /example >}}

## Word break

Prevent long strings of text from breaking your components' layout by using `.text-break` to set `word-wrap: break-word` and `word-break: break-word`. We use `word-wrap` instead of the more common `overflow-wrap` for wider browser support, and add the deprecated `word-break: break-word` to avoid issues with flex containers.

{{< example >}}

mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm

{{< /example >}}

## Text transform

Transform text in components with text capitalization classes.

{{< example >}}

Lowercased text.

Uppercased text.

CapiTaliZed text.

{{< /example >}}

Note how `.text-capitalize` only changes the first letter of each word, leaving the case of any other letters unaffected.

## Font weight and italics

Quickly change the weight (boldness) of text or italicize text.

{{< example >}}

Bold text.

Bolder weight text (relative to the parent element).

Normal weight text.

Light weight text.

Lighter weight text (relative to the parent element).

Italic text.

{{< /example >}}

## Monospace

Change a selection to our monospace font stack with `.text-monospace`.

{{< example >}}

This is in monospace

{{< /example >}}

## Reset color

Reset a text or link's color with `.text-reset`, so that it inherits the color from its parent.

{{< example >}}

  Muted text with a reset link.

{{< /example >}}

## Text decoration

Remove a text decoration with a `.text-decoration-none` class.

{{< example >}}
Non-underlined link
{{< /example >}}
---
layout: docs
title: Sizing
description: Easily make an element as wide or as tall with our width and height utilities.
group: utilities
toc: true
---

## Relative to the parent

Width and height utilities are generated from the `$sizes` Sass map in `_variables.scss`. Includes support for `25%`, `50%`, `75%`, `100%`, and `auto` by default. Modify those values as you need to generate different utilities here.

{{< example >}}

Width 25%

Width 50%

Width 75%

Width 100%

Width auto

{{< /example >}}


;	bne.s	cont_hash		; index of 0 is valid.

hash_end:
; Right...  Hashing done...  We have the index in D2 and D2*2 in D4.
; This bit if a match has been found...
	move.w	(a4,d4.w),d0		; Get code.
;	bra.s	pack_loop		; And try to find a bigger match.
	cmp.l	a2,a0			; See if we have reached end.
	bgt.s	pack_loop		; If not, continue packing.

; Empty code...  Store it if we have any codes left.
empty_code:
	cmp.w	#codes-1,d5		; See if we have enough codes.
	bgt.s	no_match		; No...  Don't store new one.
; ELse we have room for this code, so store it.
	move.w	d5,(a4,d4.w)		; Store this code.
	move.w	d0,(a5,d4.w)		; Store prefix code.
	move.b	d1,(a6,d2.w)		; Store append character.
	move.w	d5,d2			; Copy code.
	lsr.w	#7,d2			; Access upper nibble and X2!
	bclr	#0,d2			; Throw out dirty bit.
	move.w	btab(pc,d2.w),bits	; And get bits used in output.
	addq.w	#1,d5			; We used one code!
	bra	output_string

btab:	dc.w	0
	dc.w	9
	dc.w	10,10
	dc.w	11,11,11,11
	dc.w	12,12,12,12,12,12,12,12

no_match:
	subq.w	#1,d6			; Else decrease threshold counter.
	bgt	output_string		; Not reached; carry on outputting.
; Check if packed chunk > normal chunk.
	move.l	last_dest_pos(pc),d0	; Get last dest pointer.
	sub.l	a1,d0			; Get packed chunk size.
	move.l	last_source_pos(pc),d1	; Get last source poinmter.
	sub.l	a0,d1			; Get size of data looked at.
	cmp.l	d1,d0			; See if we packed it.
	blt.s	was_packed		; Yep, so send restart code.
	moveq	#0,d2			; Signal from normal pack (not end).
; If it did not pack it, it's more efficient to store it as 8-bit raw data.
; We take advantage that <first code> is always 8-bit, so we can use bit 9
; to signal a raw run (since the first code is read as 9 bits anyway!).
; D0 = destination (packed) size.
; D1 = source size.

do_run:
	move.l	last_source_pos(pc),a0	; Get last source pointer.
	move.l	last_dest_pos(pc),a1	; Get last destination pointer.
	move.w	last_bit_pos(pc),d7	; Get last bit position.

	move.w	#%1111111100000000,d0	; Mask.
	rol.w	d7,d0			; And only use to clear new bits.
	and.b	d0,(a1) 		; Previous data is intact!

;	illegal

; First the raw count is output as a 16-bit number...  That should be ok
; since by the stage it gets to 32k the pack ratio would have been a lot
; greater than the unpacked.


/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 *
 *     http://aws.amazon.com/apache2.0/
 *
 * or in the "license" file accompanying this file. This file 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.
 */

#ifndef AACE_ENGINE_PHONECALLCONTROLLER_PHONECALLCONTROLLER_ENGINE_SERVICE_H
#define AACE_ENGINE_PHONECALLCONTROLLER_PHONECALLCONTROLLER_ENGINE_SERVICE_H

#include "AACE/Engine/Alexa/AlexaEngineService.h"
#include "AACE/PhoneCallController/PhoneCallController.h"

#include "PhoneCallControllerEngineImpl.h"

namespace aace {
namespace engine {
namespace phoneCallController {

class PhoneCallControllerEngineService : public aace::engine::core::EngineService {
    DESCRIBE("aace.phoneCallController", VERSION("1.0"), DEPENDS(aace::engine::alexa::AlexaEngineService))

private:
    PhoneCallControllerEngineService(const aace::engine::core::ServiceDescription& description);

public:
    virtual ~PhoneCallControllerEngineService() = default;

protected:
    bool shutdown() override;
    bool registerPlatformInterface(std::shared_ptr<aace::core::PlatformInterface> platformInterface) override;

private:
    // platform interface registration
    template <class T>
    bool registerPlatformInterfaceType(std::shared_ptr<aace::core::PlatformInterface> platformInterface) {
        std::shared_ptr<T> typedPlatformInterface = std::dynamic_pointer_cast<T>(platformInterface);
        return typedPlatformInterface != nullptr ? registerPlatformInterfaceType(typedPlatformInterface) : false;
    }

    bool registerPlatformInterfaceType(
        std::shared_ptr<aace::phoneCallController::PhoneCallController> phoneCallController);

    // engine implementation object references
    std::shared_ptr<aace::engine::phoneCallController::PhoneCallControllerEngineImpl> m_phoneCallControllerEngineImpl;
};

}  // namespace phoneCallController
}  // namespace engine
}  // namespace aace

#endif


 1, 1, 1],
        intent_code: 5,
        datatype: 16,
        bitpix: 32,
        pixdim: [-1., 4., 4., 6., 1., 1., 1., 1.],
        srow_x: [0.; 4],
        srow_y: [0.; 4],
        srow_z: [0.; 4],
        vox_offset: 352.,
        scl_slope: 0.,
        scl_inter: 0.,
        xyzt_units: 10,
        cal_max: 25500.,
        cal_min: 3.,
        descrip,
        qform_code: 1,
        sform_code: 0,
        quatern_b: 0.,
        quatern_c: 1.,
        magic: *b"n+1\0",
        endianness: Endianness::Big,
        ..Default::default()
    };

    const FILE_NAME: &str = "resources/zstat1.nii.gz";
    let header = NiftiHeader::from_file(FILE_NAME).unwrap();

    assert_eq!(header, zstat1_hdr);

    assert_eq!(header.data_type().unwrap(), NiftiType::Float32);
    assert_eq!(header.intent().unwrap(), Intent::Zscore);
    assert_eq!(header.xyzt_units().unwrap(), (Unit::Mm, Unit::Sec));
    assert_eq!(header.slice_order().unwrap(), SliceOrder::Unknown);
    assert_eq!(header.qform().unwrap(), XForm::ScannerAnat);
    assert_eq!(header.sform().unwrap(), XForm::Unknown);
}
<reponame>t-mw/RustAllegro
// Copyright (c) 2014 by SiegeLord
//
// All rights reserved. Distributed under ZLib. For full terms see the file LICENSE.

use allegro_util::{from_c_str, Flag};
use core::Core;

use ffi::*;
use libc::*;
use std::mem;

flag_type! {
	StickFlags
	{
		DIGITAL = ALLEGRO_JOYFLAG_DIGITAL,
		ANALOGUE = ALLEGRO_JOYFLAG_ANALOGUE
	}
}

#[allow(missing_copy_implementations)]
pub struct Joystick {
	allegro_joystick: *mut ALLEGRO_JOYSTICK,
}

impl Joystick {
	pub fn new(core: &Core, idx: i32) -> Result<Joystick, ()> {
		assert!(
			core.is_joystick_installed(),
			"Joystick support not installed!"
		);
		let ptr = unsafe { al_get_joystick(idx as i32) };
		if !ptr.is_null() {
			Ok(Joystick {
				allegro_joystick: ptr,
			})
		} else {
			Err(())
		}
	}

	pub fn is_active(&self) -> bool {
		unsafe { al_get_joystick_active(self.allegro_joystick) != 0 }
	}

	pub fn get_name(&self) -> Result<String, ()> {
		unsafe {
			let ptr = al_get_joystick_name(self.allegro_joystick);
			if !ptr.is_null() {
				Ok(from_c_str(ptr))
			} else {
				Err(())
			}
		}
	}

	pub fn get_num_sticks(&self) -> i32 {
		unsafe { al_get_joystick_num_sticks(self.allegro_joystick) as i32 }
	}

	pub fn get_stick_flags(&self, stick: i32) -> StickFlags {
		unsafe {
			mem::transmute(al_get_joystick_stick_flags(
				self.allegro_joystick,
				stick as c_int,
			))
		}
	}

	pub fn get_stick_name(&self, stick: i32) -> Result<String, ()> {
		unsafe {
			let ptr = al_get_joystick_stick_name(self.allegro_joystick, stick as c_int);
			if !ptr.is_null() {
				Ok(from_c_str(ptr))
			} else {
				Err(())
			}
		}
	}


                                                                |
| 文章创作     | 给我写一篇关于健康饮食的文章，要包括每日应摄取的营养素、如何选择食材、以及一周健康饮食计划。                                                                                |
| 翻译服务           | 能否将这篇英文科技文章翻译成中文？                                                                                |
| 产品比较                 | 请对比iPhone 12和Samsung Galaxy S21的技术规格，分析它们的优缺点。                                                                                |
| 图像生成       | 能否使用神经网络生成一张风景图片？                                                                                |
| 新闻编辑         | 能否修改这篇报道中的语言，使其更加客观、中立？                                                                                |
| 商业咨询                   | 我想要开一家小型咖啡店，请问应该注意哪些方面？                                                                                |
| 学术研究                 | 如何针对失眠问题进行科学研究？你有哪些建议和方法？                                                                                |
| 人际交往指导   | 我总是感到自己无法与他人建立深入的联系，请问应该怎样改善自己的人际交往能力？                                                                                |
| 情感支持             | 我最近失恋了，感觉非常难过，应该怎样处理自己的情绪？                                                                                |
|股票分析|给出最近一周阿里巴巴的股票走势分析。|
|文本生成|请生成一篇关于环保的文章，字数不少于500字。|
|新闻分类|将以下新闻归类： "国家颁布新能源汽车优惠政策"。|
|问答系统|有没有人类史上身高最高的人？如果是，请问身高是多少？|
|段落编辑|请修改下列段落中的语法错误和拼写错误：“在今天的会议上，我们讨论了如何提升公司的内部沟