-icon,.k-state-active .k-tool-icon,.k-state-active.k-state-hover .k-tool-icon,.k-state-selected .k-tool-icon,.k-state-selected.k-state-hover .k-tool-icon,.k-column-menu .k-sprite,.k-mobile-list .k-check:checked,.k-mobile-list .k-edit-field [type=checkbox]:checked,.k-mobile-list .k-edit-field [type=radio]:checked{background-image:url('Bootstrap/sprite_2x.png');background-size:340px 336px}.k-dropdown-wrap .k-input,.k-picker-wrap .k-input,.k-numeric-wrap .k-input{border-radius:3px 0 0 3px}}@media screen and (-ms-high-contrast:active){.k-editor-toolbar-wrap .k-dropdown-wrap.k-state-focused,.k-editor-toolbar-wrap .k-button-group .k-tool:focus{border-color:#fff}}.k-grid,.k-scheduler,.k-menu,.k-editor{border-radius:4px}.k-menu>.k-first{border-radius:3px 0 0 3px}.k-rtl .k-menu>.k-first{border-radius:0 3px 3px 0}.k-widget.k-treeview{color:#428bca}.k-treeview .k-in.k-state-hover{color:#428bca}.k-treeview .k-state-selected,.k-draghandle.k-state-selected{-webkit-box-shadow:none;box-shadow:none}.k-tabstrip-items .k-state-hover .k-link{color:#428bca}.k-tabstrip-items .k-state-active .k-link{color:#333}.k-tabstrip-items .k-state-active .k-link{color:#333}.k-tabstrip-items .k-item{background:transparent}.k-tabstrip-items .k-item.k-state-active{background:#fff}.k-tabstrip-items .k-item.k-state-hover{background:#ebebeb}.k-tabstrip-items .k-state-focused{border-color:#67afe9;-webkit-box-shadow:0 0 7px 0 #67afe9;box-shadow:0 0 7px 0 #67afe9}.k-tabstrip-items .k-state-default.k-state-hover,.k-ie7 .k-tabstrip-items .k-state-default .k-loading{border-color:#ebebeb}.k-multiselect .k-button{color:#fff;border-color:#357ebd;background-color:#428bca}.k-multiselect .k-button.k-state-hover{border-color:#295f8e;background-color:#3276b1}.k-multiselect .k-button:active{color:#fff;-webkit-box-shadow:inset 0 0 10px 3px #3276b1;box-shadow:inset 0 0 10px 3px #3276b1}.k-list>.k-state-hover{border-color:#ebebeb}.k-scheduler-toolbar>ul>li{background-color:#fff;border-color:#ccc}.k-menu .k-group{background:#fff}.k-menu .k-state-default .k-state-border-down{background-color:#e7e7e7;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.k-menu .k-state-border-right{background-color:#428bca;color:#fff}.k-slider-track{background-color:#fff;border-color:#ccc;border-radius:0}.k-slider-selection{background-color:#ebebeb;border-radius:0}.k-slider-horizontal .k-tick{background-image:url('Bootstrap/slider-h.gif')}.k-draghandle.k-state-selected,.k-draghandle.k-state-selected:link,.k-draghandle.k-state-selected:hover{background-colo


Manager.getItemByIndex(replyIndex)!;
          final imageName = '${reply.img}${reply.ext}';
          final imageIndex = allImageNames.indexOf(imageName);
          return myDividerWrapper(
            child: InkWell(
              onLongPress: () => _showThreadActionMenu(context, reply, false),
              child: Padding(
                padding: EdgeInsets.symmetric(
                  horizontal: breakpoint.gutters,
                  vertical: breakpoint.gutters / 2,
                ),
                child: FilterableThreadWidget(
                  reply: reply,
                  isTimeLineFilter: false,
                  child: Theme(
                    data: Theme.of(context).copyWith(
                      textTheme: Theme.of(context).textTheme.apply(
                        fontSizeFactor: appState.setting.fontSizeFactor,
                      ),
                    ),
                    child: ReplyItem(
                      key: ValueKey('threadCard ${reply.id} in Page $page'),
                      poUserHash: _poReply.userHash,
                      isRawPicMode: _isRawPicMode,
                      threadJson: reply,
                      contentNeedCollapsed: false,
                      imageHeroTag: 'Image ${reply.img}${reply.ext}',
                      imageInitIndex: imageIndex,
                      imageNames: allImageNames,
                      refCache: _refCache,
                      onImageEdit: _onImageEdit,
                    ),
                  ),
                ),
              ),
            ),
          );
        },
      ),
      bottomNavigationBar: AnimatedContainer(
        duration: const Duration(milliseconds: 300),
        curve: Curves.easeOutExpo,
        height: _showBar || appState.setting.fixedBottomBar
            ? kToolbarHeight + 10 + MediaQuery.of(context).padding.bottom
            : 0,
        child: BottomAppBar(
          shape: CircularNotchedRectangle(),
          child: _showBar || appState.setting.fixedBottomBar
              ? Row(
                  children: [
                    IconButton(
                      tooltip: '收藏',
                      onPressed: () => _toggleFavorite(context),
                      icon: Icon(
                        appState.isStared(_poReply.id)
                            ? Icons.favorite
                            : Icons.favorite_border,
                      ),
                    ),
                    IconButton(
                      tooltip: '页跳转',
                      onPressed: () {
                        _showPageJumpDialog(context);
                      },
                      icon: Icon(Icons.move_down),
                    ),
                    IconButton(
                      tooltip: '字体大小调整',
                      onPressed: () => _showFontSizeDialog(context),
                      icon: Icon(Icons.format_size),
                    ),
                  ],
                )
              : SizedBox.shrink(),
        ),
      ),
      floatingActionButtonLocation: FloatingActionButtonLocation.endDocked,
      floatingActionButton: (!_showBar && !appState.setting.fixedBottomBar)
          ? null
          : FloatingActionButton(
              shape: CircleBorder(),
              tooltip: '回复',
              child: Icon(Icons.create),
              onPressed: () => showReplyBottomSheet(
                context,
                false,
                _poReply.id,
                _curPageManager.maxPage ?? 1,
                _poReply,
                _replyImageFile,
                (image) => _replyImageFile = image,
                _replyTitleControler,
                _replyAuthorControler,
                _replyTextControler,
                () {
                  // 在回调中首先检查组件是否仍然挂载
                  if (!mounted) return;


from pdfalyzer.util.pdf_parser_manager import PdfParserManager

class TestPdfalyzer:
    def test_struct_elem_parent(self, analyzing_malicious_pdfalyzer):
        struct_elem_node = analyzing_malicious_pdfalyzer.find_node_by_idnum(120)
        assert struct_elem_node.parent.idnum == 119

    def test_all_nodes_in_tree(self, analyzing_malicious_pdfalyzer, analyzing_malicious_pdf_path):
        for object_id in PdfParserManager(analyzing_malicious_pdf_path).object_ids:
            if object_id == 71:
                # 71 is the ID of the object stream holding many of the /StructElem
                continue
            elif object_id == 67:
                # 67 is an object without any references or data
                continue
            elif object_id == 426:
                # 426 is a Cross-reference stream containing the same info as the trailer
                continue

            node = analyzing_malicious_pdfalyzer.find_node_by_idnum(object_id)
            assert node is not None, f"Expected {object_id} to appear in tree."


const BA_ZI_WEIGHT_YEARS: [u8; 60] = [
    12, 9, 6, 7, 12, 5, 9, 8, 7, 8, 15, 9, 16, 8, 8, 19, 12, 6, 8, 7, 5, 15, 6, 16, 15, 7, 9, 12,
    10, 7, 15, 6, 5, 14, 14, 9, 7, 7, 9, 12, 8, 7, 13, 5, 14, 5, 9, 17, 5, 7, 12, 8, 8, 6, 19, 6,
    8, 16, 10, 7,
];

/// 從正月到臘月共十二個月的八字重量。
pub(crate) const BA_ZI_WEIGHT_MONTHS: [u8; 12] = [6, 7, 18, 9, 5, 16, 9, 15, 18, 8, 9, 5];

/// 從初一到三十共三十天的八字重量。
pub(crate) const BA_ZI_WEIGHT_DAYS: [u8; 30] = [
    5, 10, 8, 15, 16, 15, 8, 16, 8, 16, 9, 17, 8, 17, 10, 8, 9, 18, 5, 15, 10, 9, 8, 9, 15, 18, 7,
    8, 16, 6,
];

/// 從子時到亥時共十二地支的八字重量。
pub(crate) const BA_ZI_WEIGHT_TIME: [u8; 12] = [16, 6, 7, 10, 9, 16, 10, 8, 8, 9, 6, 6];
use node_bindgen::derive::node_bindgen;

#[node_bindgen]
fn hello<F: Fn(String)>(first: f64, second: F) {
    let msg = format!("argument is: {}", first);

    second(msg);
}

#[node_bindgen]
fn example<F: Fn(i32)>(cb: F,second: i32) {
    cb(second*2)
}

use std::time::Instant;
use xngin_catalog::QueryCatalog;
use xngin_frontend::parser::dialect::Ansi;
use xngin_frontend::parser::parse_query_verbose;
use xngin_plan::builder::PlanBuilder;
use xngin_plan::explain::Explain;
use xngin_plan::rule::rule_optimize;
use xngin_tpch_tests::tpch_catalog;

#[test]
fn test_tpch_rule_optimize1() {
    let cat = tpch_catalog();
    let sql = include_str!("../../sql/tpch1.sql");
    check_tpch_rule_optimize(&cat, sql);
}

#[test]
fn test_tpch_rule_optimize2() {
    let cat = tpch_catalog();
    let sql = include_str!("../../sql/tpch2.sql");
    check_tpch_rule_optimize(&cat, sql);
}

#[test]
fn test_tpch_rule_optimize3() {
    let cat = tpch_catalog();
    let sql = include_str!("../../sql/tpch3.sql");
    check_tpch_rule_optimize(&cat, sql);
}

#[test]
fn test_tpch_rule_optimize4() {
    let cat = tpch_catalog();
    let sql = include_str!("../../sql/tpch4.sql");
    check_tpch_rule_optimize(&cat, sql);
}

#[test]
fn test_tpch_rule_optimize5() {
    let cat =


 j < StructNumEles; j++) {
      Ret = Builder.CreateInsertValue(Ret, Values[i * StructNumEles + j], {j});
    }
    Values[i] = Ret;
  }
  Values.resize(NumArrays);
}

// 'Values' is expected to contain elements that will compose arrays of type
// 'Ty'.
// 'Values' is also the output of this function, containing arrays of type 'Ty'.
void InsertInArray(IRBuilder<> &Builder, ArrayType *Ty,
                   SmallVector<Value *, 8> &Values) {
  DEBUG_FCT_TY_VALUES(Ty, Values);
  unsigned ArrayNumEles = Ty->getNumElements();
  assert(Ty->getElementType() == Values[0]->getType());
  assert(Values.size() % ArrayNumEles == 0);
  unsigned NumArrays = Values.size() / ArrayNumEles;
  for (unsigned i = 0; i < NumArrays; i++) {
    Value *Ret = PoisonValue::get(Ty);
    for (unsigned j = 0; j < ArrayNumEles; j++) {
      Ret = Builder.CreateInsertValue(Ret, Values[i * ArrayNumEles + j], {j});
    }
    Values[i] = Ret;
  }
  Values.resize(NumArrays);
}

// 'Values' is expected to contain vectors.
// 'Values is also the output of this function, containing all the elements of
// the input vectors.
void ExtractFromVector(IRBuilder<> &Builder, SmallVector<Value *, 8> &Values) {
  DEBUG_FCT_VALUES(Values);
  SmallVector<Value *, 8> ScalarValues;
  Type *ValueTy = Values[0]->getType();
  assert(ValueTy->isVectorTy());
  for (unsigned i = 0; i < Values.size(); i++) {
    for (unsigned j = 0; j < GetNumEle(ValueTy); j++) {
      ScalarValues.push_back(Builder.CreateExtractElement(Values[i], j));
    }
  }
  Values.clear();
  Values = std::move(ScalarValues);
}

// 'Values' is expected to contain arrays.
// 'Values is also the output of this function, containing all the elements of
// the input arrays.
void ExtractFromArray(IRBuilder<> &Builder, SmallVector<Value *, 8> &Values,
                      bool isPackedStructSrc, unsigned DstTySize) {
  DEBUG_FCT_VALUES(Values);
  SmallVector<Value *, 8> ScalarValues;
  Type *ValueTy = Values[0]->getType();
  unsigned CharSize = CHAR_BIT;
  unsigned NumElements =
      isPackedStructSrc ? DstTySize / CharSize : GetNumEle(ValueTy);
  assert(NumElements != 0);
  assert(ValueTy->isArrayTy());
  for (unsigned i = 0; i < Values.size(); i++) {
    for (unsigned j = 0; j < NumElements; j++) {
      ScalarValues.push_back(Builder.CreateExtractValue(Values[i], j));
    }
  }
  Values.clear();
  Values = std::move(ScalarValues);
}

// Return a scalar type of size 'N' matching the 'TargetTy' if possible.
Type *getNTy(IRBuilder<> &Builder, unsigned N, Type *TargetTy) {
  if (GetEleType(TargetTy)->isFloatTy() && N == 32) {
    return Builder.getFloatTy();
  } else if (GetEleType(TargetTy)->isHalfTy() && N == 16) {
    return Builder.getHalfTy();
  } else {
    return Builder.getIntNTy(N);
  }
}

// Convert all elements of 'Values' into 'Ty' using 'ConvertValue'.
// Expect all values to have the same type;
// 'Values' is also the output of this function, containing all bitcasted
// values.
void BitcastValues(IRBuilder<> &Builder, Type *Ty,
                   SmallVector<Value *, 8> &Values) {
  DEBUG_FCT_TY_VALUES(Ty, Values);
  Type *ValueTy = Values[0]->getType();
  assert(SizeInBits(B


		expect(p.parse("TERCEIRA JOAO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("TERCEIRA JOÃO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("TERCEIRO JOAO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("TERCEIRO JOÃO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("III. JOAO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("III. JOÃO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("3A. JOAO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("3A. JOÃO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("3O. JOAO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("3O. JOÃO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("III JOAO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("III JOÃO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("3. JOAO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("3. JOÃO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("3A JOAO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("3A JOÃO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("3O JOAO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("3O JOÃO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("3 JOAO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("3 JOÃO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("3JOHN 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("3 JO 1:1").osis()).toEqual("3John.1.1");
		expect(p.parse("3 J 1:1").osis()).toEqual("3John.1.1");
	});
});
describe("Localized book John (pt)", () => {
	let p: InstanceType<typeof bcv_parser>;
	beforeEach(() => {
		p = new bcv_parser();
		p.set_options({book_alone_strategy: "ignore",book_sequence_strategy: "ignore",osis_compaction_strategy: "bc",captive_end_digits_strategy: "delete"});
		p.include_apocrypha(true);
	});
	it("should handle book: John (pt)", () => {
		expect(p.parse("Joao 1:1").osis()).toEqual("John.1.1");
		expect(p.parse("John 1:1").osis()).toEqual("John.1.1");
		expect(p.parse("João 1:1").osis()).toEqual("John.1.1");
		expect(p.parse("Jo 1:1").osis()).toEqual("John.1.1");
		p.include_apocrypha(false);
		expect(p.parse("JOAO 1:1").osis()).toEqual("John.1.1");
		expect(p.parse("JOHN 1:1").osis()).toEqual("John.1.1");
		expect(p.parse("JOÃO 1:1").osis()).toEqual("John.1.1");
		expect(p.parse("JO 1:1").osis()).toEqual("John.1.1");
	});
});
describe("Localized book Acts (pt)", () => {
	let p: InstanceType<typeof


 : ObjectId("6041f5bc0c893dc3bb362e75"), "name" : "howie" }
```

没问题，引用了之前的`NFS`下的对应目录。

## 动态卷

前面提到，`PV`需要管理人员进行创建，在实际生产环境下，这个`PV`的需求量可能是非常大的，所以这种协调方式是不合理的。所以，`k8s`提供了一套可以自动创建`PV`的机制——**动态卷**。

![image-20210305213129142](https://images-1252557999.file.myqcloud.com/uPic/image-20210305213129142.png)

这张图将使用`StorageClass`的流程描述地很清楚，管理员创建一个或多个`StorageClass`，用户创建`Pod`引用`PVC`声明相关的`storageClassName`就会通过管理员创建的`StorageClass`自动创建`PV`。

## 参考

本章关于容器持久化就介绍到这里了，谢谢！本部分内容有参考如下文章：

- [深入剖析Kubernetes](https://time.geekbang.org/column/intro/100015201?code=UhApqgxa4VLIA591OKMTemuH1%2FWyLNNiHZ2CRYYdZzY%3D)：持久化存储部分
- [Kubernetes in Action](https://github.com/luksa/kubernetes-in-action)中文版：可以算是第6章的读书笔记

# 树状数组Binary Tree Array

## 1 概念

### lowbit运算
$$
lowbit(x) = x \& ((\sim x)+1)
$$
* 作用：二进制表示中，保留最后的`1`。如`x=10100100`,`lowbit(x)=00000100`

### 树状数组

* 根据lowbit的运算规则构建树状数组。
* 其中数组A第i个位置的值**管理区间**[i-lowbit(i)+1,i]。即去掉二进制最后一位后到当前位置的的区间。

$$
A[i] = \sum_{k=i-lowbit(i)+1}^i A[k]
$$

* 其中数组A第i个位置的值的**被管节点**。即找到所有的之后的$2^i$的点，也包括非$2^i$的点。

$$
i = i + lowbit(i) ,i<max(i)
$$

### 本质理解
![](image/2021-03-26-18-06-40.png)

* 怎么看每个原始数组的数字管理多少？只要顺着原始数组的数字往下画竖线，碰到的第一根横线所覆盖的范围就是它能管理的范围。
* 怎么看每个原始数组的数字被谁管理？顺着原始数组的数字往下画竖线，碰到的第一根横线之后的所有横先，都是管理该数字的树状数组值。

* 在构建的**树状数组中**$2^i$管理之前所有位置的**原始数组**。即前i项和。
* 通过lowbit()运算，构建的树状数组，本质上是一种**辅助数组**。

![](image/2021-03-26-18-42-22.png)

## 2 性质

* 任何一个数字管理

$$
(i-lowbit(i),i]
$$
* 任何一个数字被管理

$$
[i,i+lowbit(i)],进行迭代i=i+lowbit(i)
$$

管理的继承性：即一个数字x如果管理y，那么也一定管理了被y管理的数字。
## 3 应用

### 把位置k的元素加x

* 我们每次执行操作A（把位置k的值+x），只需要把"能管理到k的所有位置"都+x就行
    1.


Size of: ", stringify!(sapp_touchpoint))
    );
    assert_eq!(
        ::std::mem::align_of::<sapp_touchpoint>(),
        8usize,
        concat!("Alignment of ", stringify!(sapp_touchpoint))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<sapp_touchpoint>())).identifier as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(sapp_touchpoint),
            "::",
            stringify!(identifier)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<sapp_touchpoint>())).pos_x as *const _ as usize },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(sapp_touchpoint),
            "::",
            stringify!(pos_x)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<sapp_touchpoint>())).pos_y as *const _ as usize },
        12usize,
        concat!(
            "Offset of field: ",
            stringify!(sapp_touchpoint),
            "::",
            stringify!(pos_y)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<sapp_touchpoint>())).changed as *const _ as usize },
        16usize,
        concat!(
            "Offset of field: ",
            stringify!(sapp_touchpoint),
            "::",
            stringify!(changed)
        )
    );
}
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum sapp_mousebutton {
    SAPP_MOUSEBUTTON_LEFT = 0,
    SAPP_MOUSEBUTTON_RIGHT = 1,
    SAPP_MOUSEBUTTON_MIDDLE = 2,
    SAPP_MOUSEBUTTON_INVALID = 256,
}
pub const SAPP_MODIFIER_SHIFT: _bindgen_ty_2 = _bindgen_ty_2::SAPP_MODIFIER_SHIFT;
pub const SAPP_MODIFIER_CTRL: _bindgen_ty_2 = _bindgen_ty_2::SAPP_MODIFIER_CTRL;
pub const SAPP_MODIFIER_ALT: _bindgen_ty_2 = _bindgen_ty_2::SAPP_MODIFIER_ALT;
pub const SAPP_MODIFIER_SUPER: _bindgen_ty_2 = _bindgen_ty_2::SAPP_MODIFIER_SUPER;
pub const SAPP_MODIFIER_LMB: _bindgen_ty_2 = _bindgen_ty_2::SAPP_MODIFIER_LMB;
pub const SAPP_MODIFIER_RMB: _bindgen_ty_2 = _bindgen_ty_2::SAPP_MODIFIER_RMB;
pub const SAPP_MODIFIER_MMB: _bindgen_ty_2 = _bindgen_ty_2::SAPP_MODIFIER_MMB;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum _bindgen_ty_2 {
    SAPP_MODIFIER_SHIFT = 1,
    SAPP_MODIFIER_CTRL = 2,
    SAPP_MODIFIER_ALT = 4,
    SAPP_MODIFIER_SUPER = 8,
    SAPP_MODIFIER_LMB = 256,
    SAPP_MODIFIER_RMB = 512,
    SAPP_MODIFIER_MMB = 1024,
}


için de eşit hukuksal düzeni sağlamak ve buna uymak zorundasınız! Vicdanlarınızdan vazgeçtim artık!

esmerayozadikti@gmail.com

Kaynak: [taraf.com.tr](http://www.taraf.com.tr:80/esmeray/makale-gezi-halleri-3.htm), [web.archive.org (arşiv bağlantısı)](http://web.archive.org/web/20130712002212/http://www.taraf.com.tr:80/esmeray/makale-gezi-halleri-3.htm)
# Glokal farkındalık ve Gezi Parkı

*Misal Adnan Yıldız 09.06.2013*

Bu yeri, Türkiye’de son zamanlarda gerçekleşen hükümet karşıtı eylemler hakkında yazmak için kaplıyorum. Sergiler, hayatın kendisi gibi dünyaya bakış açımıza meydan okumayı amaçlar. Herşey günler önce, polisin Gezi Parkı eylemcilerine ölçüsüz güç ve göz yaşartıcı gaz kullanması üzerine başladı. Polis, eylemcilere hunharca saldırdı ve çadırlarını yaktı.

Eylemcilerden gelen fotoğraf ve haberler, Gezi Parkı’nın yıkılmasına karşı kitap okuyarak ve kamp yaparak, yaratıcı araç ve barışçıl strateji geliştirmeye çalışan bu insanlara uygulanan, daha önce görülmemiş bir gaddarlığı açıkça belgeliyordu. Türk basını bu olanlara tamamiyle kör ve sessiz kaldı; baskı uyguladığı aşikâr olan hükümet gerçeklerin ciddiyetini yadsıdı. Giderek büyüyerek, binlerce, onbinlerce ve yüzlerce insan, devlet şiddetine karşı gelmek için biraraya geldi, konuşma özgürlüğünü, hükümetin istifasını ve polis tarafından kullanılan plastik mermi, gaz, fiziksel şiddetin son bulmasını talep eden başkaldırılar ülkenin bir çok kentine yayıldı. Gençlerimiz hayatını kaybetti, çok insan yaralandı ve polis tarafından göz altına alındı.

Bu ne askerî monarşiye karşı bir “Arap Bahar”ı, ne yüzde 1’e karşı yüzde 99’un eşitsizliğini protesto eden “Occupy” Hareketi. Bu bir çok şeyin ve durumun aynı anda birleşimi.

Fikirleri olan bir tartışma yaratmak için, yakın geçmişte yaşanan tarihsel olayları değerledirmek gerekiyor. AKP (Adalet ve Kalk


,
) -> Option<()> {
    match args.value {
        FieldKind::Inspectable(ref inner) => match args.name.as_ref() {
            DirectionalLight::BASE_LIGHT => {
                handle_base_light_property_changed(inner, handle, node, helper)
            }
            _ => None,
        },
        _ => None,
    }
}
#![allow(clippy::eval_order_dependence)]

use macroquad::{
    audio::{load_sound, Sound},
    miniquad::*,
    prelude::*,
};
use once_cell::sync::Lazy;

use std::path::PathBuf;

pub struct Assets {
    pub textures: Textures,
    pub sounds: Sounds,
    pub shaders: Shaders,
}

impl Assets {
    pub async fn init() -> Self {
        Self {
            textures: Textures::init().await,
            sounds: Sounds::init().await,
            shaders: Shaders::init().await,
        }
    }
}

pub struct Textures {
    pub fonts: Fonts,

    pub title_banner: Texture2D,
    pub billboard_patch9: Texture2D,

    pub title_logo: Texture2D,
    pub title_stencil: Texture2D,
    pub marble_atlas: Texture2D,
}

impl Textures {
    async fn init() -> Self {
        Self {
            fonts: Fonts::init().await,
            title_banner: texture("splash/banner").await,
            billboard_patch9: texture("ui/billboard_patch9").await,
            title_logo: texture("splash").await,
            title_stencil: texture("splash_stencil").await,
            marble_atlas: texture("marbles").await,
        }
    }
}

pub struct Fonts {
    pub small: Texture2D,
    pub medium: Texture2D,
}

impl Fonts {
    async fn init() -> Self {
        Self {
            small: texture("ui/font_small").await,
            medium: texture("ui/font_medium").await,
        }
    }
}

pub struct Sounds {
    pub splash_jingle: Sound,

    pub title_music: Sound,
    pub end_jingle: Sound,

    pub music0: Sound,
    pub music1: Sound,
    pub music2: Sound,

    pub select: Sound,
    pub close_loop: Sound,
    pub shunt: Sound,
    pub clear1: Sound,
    pub clear2: Sound,
    pub clear3: Sound,
    pub clear4: Sound,
    pub clear5: Sound,
    pub clear_all: Sound,
}

impl Sounds {
    async fn init() -> Self {
        Self {
            splash_jingle: sound("splash/jingle").await,

            title_music: sound("music/title").await,
            end_jingle: sound("music/ending").await,

            music0: sound("music/music0").await,
            music1: sound("music/music1").await,
            music2: sound("music/music2").await,

            select: sound("sfx/select").await,
            close_loop: sound("sfx/close_loop").await,
            shunt: sound("sfx/shunt").await,
            clear1: sound("sfx/clear1").await,
            clear2: sound("sfx/clear2").await,
            clear3: sound("sfx/clear3").await,
            clear4: sound("sfx/clear4").await,
            clear5: sound("sfx/clear5").await,
            clear_all: sound("sfx/clear_all").await,
        }
    }
}

pub struct Shaders {
    pub pattern_beam: Material,
    pub noise: Material,
}

impl Shaders {
    async fn init() -> Self {
        Self {
            pattern_beam: material_vert_frag(
                "standard",
                "pattern_beam",
                MaterialParams {
                    textures: Vec::new(),


mem5YaGs126MiZpBA-UNirkOXOhv.woff) format("woff")}@font-face{font-family:"Open Sans";font-style:normal;font-weight:700;src:local("Open Sans Bold"),local(OpenSans-Bold),url(https://fonts.gstatic.com/s/opensans/v18/mem5YaGs126MiZpBA-UN7rgOXOht.eot?#) format("eot"),url(https://fonts.gstatic.com/s/opensans/v18/mem5YaGs126MiZpBA-UN7rgOUuhp.woff2) format("woff2"),url(https://fonts.gstatic.com/s/opensans/v18/mem5YaGs126MiZpBA-UN7rgOXOhv.woff) format("woff")}@font-face{font-family:"Open Sans";font-style:normal;font-weight:800;src:local("Open Sans ExtraBold"),local(OpenSans-ExtraBold),url(https://fonts.gstatic.com/s/opensans/v18/mem5YaGs126MiZpBA-UN8rsOXOht.eot?#) format("eot"),url(https://fonts.gstatic.com/s/opensans/v18/mem5YaGs126MiZpBA-UN8rsOUuhp.woff2) format("woff2"),url(https://fonts.gstatic.com/s/opensans/v18/mem5YaGs126MiZpBA-UN8rsOXOhv.woff) format("woff")}.vf-activity.vf-activity .vf-activity{margin-bottom:60px;text-align:left}.vf-activity.vf-activity .vf-activity__table .table thead th{font-family:'Open Sans', sans-serif;font-size:16px;font-weight:600;font-stretch:normal;font-style:normal;line-height:1.5;letter-spacing:0.16px;text-align:left;color:#1a1a1a;padding:20px 50px;background-color:#fbfbfc}.vf-activity.vf-activity .vf-activity__table .table tbody td{position:relative;font-family:'Open Sans', sans-serif;font-size:16px;font-weight:normal;font-stretch:normal;font-style:normal;line-height:1.5;letter-spacing:0.16px;text-align:left;color:#7d7d7d;padding:20px 50px}.vf-activity.vf-activity .vf-activity__table .table tbody td>.vf-activity__success_build:after{position:absolute;content:'';display:block;width:10px;height:10px;border-radius:50%;background-color:#53b982;top:50%;transform:translateY(-50%);left:25px}.vf-activity.vf-activity .vf-activity__table .table tbody td>.vf-activity__failed_build:after{position:absolute;content:'';display:block;width:10px;height:10px;border-radius:50%;background-color:#e64141;top:50%;transform:translateY(-50%);left:25px}.vf-activity.vf-activity .vf-activity__table .table tbody td>.vf-activity__pending_build:after{position:absolute;content:'';display:block;width:10px;height:10px;border-radius:50%;background-color:#f1a908;top:50%;transform:translateY(-50%);left:25px}

@font-face{font-family:"Open Sans";font-style:italic;font-weight:300;src:local("Open Sans Light Italic"),local(OpenSans-LightItalic),url(https://fonts.gstatic.com/s/opensans/


Exp(\"^(\" + qualify(I) + \")[-_.\\\\s]\", \"i\"), I + \" \").replace(RegExp(\"^(\" + qualify(I) + \")[-_.]?(\\\\w)\", \"i\"), I + \" $2\");\n                    }\n                    if (M = /\\bGoogle TV\\b/.exec(A)) {\n                        A = M[0];\n                    }\n                    if (/\\bSimulator\\b/i.test(e)) {\n                        A = (A ? A + \" \" : \"\") + \"Simulator\";\n                    }\n                    if (R == \"Opera Mini\" && /\\bOPiOS\\b/.test(e)) {\n                        P.push(\"running in Turbo/Uncompressed mode\");\n                    }\n                    if (R == \"IE\" && /\\blike iPhone OS\\b/.test(e)) {\n                        M = parse(e.replace(/like iPhone OS/, \"\"));\n                        I = M.manufacturer;\n                        A = M.product;\n                    } else if (/^iP/.test(A)) {\n                        R || (R = \"Safari\");\n                        T = \"iOS\" + ((M = / OS ([\\d_]+)/i.exec(e)) ? \" \" + M[1].replace(/_/g, \".\") : \"\");\n                    } else if (R == \"Konqueror\" && /^Linux\\b/i.test(T)) {\n                        T = \"Kubuntu\";\n                    } else if (I && I != \"Google\" && (/Chrome/.test(R) && !/\\bMobile Safari\\b/i.test(e) || /\\bVita\\b/.test(A)) || /\\bAndroid\\b/.test(T) && /^Chrome/.test(R) && /\\bVersion\\//i.test(e)) {\n                        R = \"Android Browser\";\n                        T = /\\bAndroid\\b/.test(T) ? T : \"Android\";\n                    } else if (R == \"Silk\") {\n                        if (!/\\bMobi/i.test(e)) {\n                            T = \"Android\";\n                            P.unshift(\"desktop mode\");\n                        }\n                        if (/Accelerated *= *true/i.test(e)) {\n                            P.unshift(\"accelerated\");\n                        }\n                    } else if (R == \"UC Browser\" && /\\bUCWEB\\b/.test(e)) {\n                        P.push(\"speed mode\");\n                    } else if (R == \"PaleMoon\" && (M = /\\bFirefox\\/([\\d.]+)\\b/.exec(e))) {\n                        P.push(\"identifying as Firefox \" + M[1]);\n                    } else if (R == \"Firefox\" && (M = /\\b(Mobile|Tablet|TV)\\b/i.exec(e))) {\n                        T || (T = \"Firefox OS\");\n                        A || (A = M[1]);\n                    } else if (!R || (M = !/\\bMinefield\\b/i.test(e) && /\\b(?:Firefox|Safari)\\b/.exec(R))) {\n                        if (R && !A && /[\\/,]|^[^(]+?\\)/.test(e.slice(e.indexOf(M + \"/\") + 8))) {\n                            R = null;\n                        }\n                        if ((M = A || I || T) && (A || I || /\\b(?:Android|Symbian OS|Tablet OS|webOS)\\b/.test(T))) {\n                            R = /[a-z]+(?: Hat)?/i.exec(/\\bAndroid\\b/.test(T) ? T : M) + \" Browser\";\n                        }\n                    } else if (R == \"Electron\" && (M = (/\\bChrome\\/([\\d.]+)\\b/.exec(e) || 0)[1])) {\n                        P.push(\"Chromium \" + M);\n                    }\n                    if (!B) {\n                        B = getVersion([\n                            \"(?:Cloud9|CriOS|CrMo|Edge|Edg|EdgA|EdgiOS|FxiOS|HeadlessChrome|IEMobile|Iron|Opera ?Mini|OPiOS|OPR


 keys
 * and values.
 *
 * Keys are assumed to be URI encoded already and live at even indices.  See
 * goog.uri.utils.QueryValue for details on how parameter values are encoded.
 *
 * Example:
 * <pre>
 * var data = [
 *   // Simple param: ?name=BobBarker
 *   'name', 'BobBarker',
 *   // Conditional param -- may be omitted entirely.
 *   'specialDietaryNeeds', hasDietaryNeeds() ? getDietaryNeeds() : null,
 *   // Multi-valued param: &house=LosAngeles&house=NewYork&house=null
 *   'house', ['LosAngeles', 'NewYork', null]
 * ];
 * </pre>
 *
 * @typedef {!Array<string|goog.uri.utils.QueryValue>}
 */
goog.uri.utils.QueryArray;

/**
 * Parses encoded query parameters and calls callback function for every
 * parameter found in the string.
 *
 * Missing value of parameter (e.g. “…&key&…”) is treated as if the value was an
 * empty string.  Keys may be empty strings (e.g. “…&=value&…”) which also means
 * that “…&=&…” and “…&&…” will result in an empty key and value.
 *
 * @param {string} encodedQuery Encoded query string excluding question mark at
 *     the beginning.
 * @param {function(string, string)} callback Function called for every
 *     parameter found in query string.  The first argument (name) will not be
 *     urldecoded (so the function is consistent with buildQueryData), but the
 *     second will.  If the parameter has no value (i.e. “=” was not present)
 *     the second argument (value) will be an empty string.
 */
goog.uri.utils.parseQueryData = function(encodedQuery, callback) {
  var pairs = encodedQuery.split('&');
  for (var i = 0; i < pairs.length; i++) {
    var indexOfEquals = pairs[i].indexOf('=');
    var name = null;
    var value = null;
    if (indexOfEquals >= 0) {
      name = pairs[i].substring(0, indexOfEquals);
      value = pairs[i].substring(indexOfEquals + 1);
    } else {
      name = pairs[i];
    }
    callback(name, value ? goog.string.urlDecode(value) : '');
  }
};

/**
 * Appends a URI and query data in a string buffer with special preconditions.
 *
 * Internal implementation utility, performing very few object allocations.
 *
 * @param {!Array<string|undefined>} buffer A string buffer.  The first element
 *     must be the base URI, and may have a fragment identifier.  If the array
 *     contains more than one element, the second element must be an ampersand,
 *     and may be overwritten, depending on the base URI.  Undefined elements
 *     are treated as empty-string.
 * @return {string} The concatenated URI and query data.
 * @private
 */
goog.uri.utils.appendQueryData_ = function(buffer) {
  if (buffer[1]) {
    // At least one query parameter was added.  We need to check the
    // punctuation mark, which is currently an ampersand, and also make sure
    // there aren't any interfering fragment identifiers.
    var baseUri = /** @type {string} */ (buffer[0]);
    var hashIndex = baseUri.indexOf('#');
    if (hashIndex >= 0) {
      // Move the fragment off the base part of the URI into the end.
      buffer.push(baseUri.substr(hashIndex));
      buffer[0] = baseUri = baseUri.substr(0, hashIndex);
    }
    var questionIndex = baseUri.indexOf('?');
    if (questionIndex < 0) {
      // No question mark, so we need a question mark instead of an ampersand.
      buffer[1] = '?';
    } else if (questionIndex == baseUri.length - 1) {
      // Question mark is the very last character of the existing URI, so don


at the appropriate framerate. The compositor MAY composite additional device or user agent UI over rendered content, like device menus.

Note: Future extensions to this spec may utilize the compositor to composite multiple layers coming from the same page as well.

5. Frame Loop

5.1. XRFrame

An XRFrame represents a snapshot of the state of all of the tracked objects for an XRSession. Applications can acquire an XRFrame by calling requestAnimationFrame() on an XRSession with an XRFrameRequestCallback. When the callback is called it will be passed an XRFrame. Events which need to communicate tracking state, such as the select event, will also provide an XRFrame.

[<c- g>SecureContext</c->, <c- g>Exposed</c->=<c- n>Window</c->] <c- b>interface</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="interface" data-export id="xrframe"><c- g>XRFrame</c-></dfn> {
  [<a class="idl-code" data-link-type="extended-attribute" hre


Condition) {
        (*aCurrentCondition)->SetNext(condition);
    }
    else {
        aRule->SetCondition(condition);
    }

    *aCurrentCondition = condition;

    return NS_OK;
}

nsresult
nsXULTemplateBuilder::CompileBindings(nsTemplateRule* aRule, nsIContent* aBindings)
{
    // Add an extended rule's bindings.
    nsresult rv;

    for (nsIContent* binding = aBindings->GetFirstChild();
         binding;
         binding = binding->GetNextSibling()) {

        if (binding->NodeInfo()->Equals(nsGkAtoms::binding,
                                        kNameSpaceID_XUL)) {
            rv = CompileBinding(aRule, binding);
            if (NS_FAILED(rv))
                return rv;
        }
    }

    aRule->AddBindingsToQueryProcessor(mQueryProcessor);

    return NS_OK;
}

nsresult
nsXULTemplateBuilder::CompileBinding(nsTemplateRule* aRule,
                                     nsIContent* aBinding)
{
    // Compile a <binding> "condition", which must be of the form:
    //
    //   <binding subject="?var1"
    //            predicate="resource"
    //            object="?var2" />
    //
    // XXXwaterson Some day it would be cool to allow the 'predicate'
    // to be bound to a variable.

    // subject
    nsAutoString subject;
    aBinding->GetAttr(kNameSpaceID_None, nsGkAtoms::subject, subject);
    if (subject.IsEmpty()) {
        nsXULContentUtils::LogTemplateError(ERROR_TEMPLATE_BINDING_BAD_SUBJECT);
        return NS_OK;
    }

    nsCOMPtr<nsIAtom> svar;
    if (subject[0] == char16_t('?')) {
        svar = NS_Atomize(subject);
    }
    else {
        nsXULContentUtils::LogTemplateError(ERROR_TEMPLATE_BINDING_BAD_SUBJECT);
        return NS_OK;
    }

    // predicate
    nsAutoString predicate;
    aBinding->GetAttr(kNameSpaceID_None, nsGkAtoms::predicate, predicate);
    if (predicate.IsEmpty()) {
        nsXULContentUtils::LogTemplateError(ERROR_TEMPLATE_BINDING_BAD_PREDICATE);
        return NS_OK;
    }

    // object
    nsAutoString object;
    aBinding->GetAttr(kNameSpaceID_None, nsGkAtoms::object, object);

    if (object.IsEmpty()) {
        nsXULContentUtils::LogTemplateError(ERROR_TEMPLATE_BINDING_BAD_OBJECT);
        return NS_OK;
    }

    nsCOMPtr<nsIAtom> ovar;
    if (object[0] == char16_t('?')) {
        ovar = NS_Atomize(object);
    }
    else {
        nsXULContentUtils::LogTemplateError(ERROR_TEMPLATE_BINDING_BAD_OBJECT);
        return NS_OK;
    }

    return aRule->AddBinding(svar, predicate, ovar);
}

nsresult
nsXULTemplateBuilder::AddSimpleRuleBindings(nsTemplateRule* aRule,
                                            nsIContent* aElement)
{
    // Crawl the content tree of a "simple" rule, adding a variable
    // assignment for any attribute whose value is "rdf:".

    AutoTArray<nsIContent*, 8> elements;

    if (elements.AppendElement(aElement) == nullptr)
        return NS_ERROR_OUT_OF_MEMORY;

    while (elements.Length()) {
        // Pop the next element off the stack
        uint32_t i = elements.Length() - 1;
        nsIContent* element = elements[i];
        elements.RemoveElementAt(i);

        // Iterate through its attributes, looking for substitutions
        // that we need to add as bindings.
        uint32_t count = element->GetAttrCount();

        for (i = 0; i < count; ++i) {
            const nsAttrName* name = element->GetAttrNameAt(i);


, 0L);
			}

			if (_InternalOptimisedMapOp_F_M_M(mapOp, a, ref b))
			{
				return b;
			}

			// If no optimised versions exist for the given map operation, manually invoke the given function for each element (slow).
			b = b.DeepCopy();

			float[] aData = a.DataBuffer.Data, bData = b.DataBuffer.Data;
			int aOffset = a.DataBuffer.Offset, bOffset = b.DataBuffer.Offset;

			fixed (float* aref = &aData[aOffset])
			fixed (float* bref = &bData[bOffset])
			{
				for (int i = 0; i < a.Length; i++)
				{
					bref[i] = f.Invoke(aref[i]).Invoke(bData[i]);
				}
			}

			return b;
		}

		/// <inheritdoc cref="DiffSharpBackendHandle{T}.ReshapeCopy_MRows_V"/>
		public override ISigmaDiffDataBuffer<float> ReshapeCopy_MRows_V(ShapedDataBufferView<float> value)
		{
			if (value.Length == 0)
			{
				return CreateDataBuffer(new float[0]);
			}

			return value.DataBuffer.DeepCopy();
		}

		/// <inheritdoc cref="DiffSharpBackendHandle{T}.ReshapeCopy_V_MRows"/>
		public override ShapedDataBufferView<float> ReshapeCopy_V_MRows(int rows, ISigmaDiffDataBuffer<float> value)
		{
			if (value.Length == 0)
			{
				return new ShapedDataBufferView<float>(CreateDataBuffer(new float[0]), 0L, 0L);
			}

			int n = value.Length / rows;

			return new ShapedDataBufferView<float>(value.DeepCopy(), rows, n);
		}

		/// <inheritdoc cref="DiffSharpBackendHandle{T}.RepeatReshapeCopy_V_MRows"/>
		public override ShapedDataBufferView<float> RepeatReshapeCopy_V_MRows(int rows, ISigmaDiffDataBuffer<float> row)
		{
			if (row.Length == 0)
			{
				return new ShapedDataBufferV


14}},nil,nil,nil,nil,{{100}}},
            [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Learn Spell: Charge"), 2, {{"monster", 3593}}}},
        },
        [26946] = { -- A Rogue's Advantage
            [questKeys.objectives] = {{{44614}},nil,nil,nil,nil,{{2098}}},
            [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Learn Spell: Eviscerate"), 2, {{"monster", 3594}}}},
        },
        [26947] = { -- A Woodsman's Training
            [questKeys.objectives] = {{{44614}},nil,nil,nil,nil,{{56641}}},
            [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Learn Spell: Steady Shot"), 2, {{"monster", 3596}}}},
        },
        [26948] = { -- Rejuvenating Touch
            [questKeys.objectives] = {{{44617,nil,Questie.ICON_TYPE_INTERACT}},nil,nil,nil,nil,{{774}}},
            [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Learn Spell: Rejuvenation"), 2, {{"monster", 3597}}}},
        },
        [26949] = { -- Healing for the Wounded
            [questKeys.objectives] = {{{44617,nil,Questie.ICON_TYPE_INTERACT}},nil,nil,nil,nil,{{2061}}},
            [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Learn Spell: Flash Heal"), 2, {{"monster", 3595}}}},
        },
        [26950] = { -- The Dark Side of the Light
            [questKeys.requiredRaces] = raceIDs.ALL_HORDE,
        },
        [26952] = { -- The Menders' Stead
            [questKeys.preQuestSingle] = {26978},
            [questKeys.nextQuestInChain] = 26999,
        },
        [26953] = { -- Zen'Kiki, the Druid
            [questKeys.objectives] = {nil,nil,nil,nil,{{{1817,1822,1824,44482},1817}}},
        },
        [26954] = { -- Zen'Kiki, the Druid
            [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_INTERACT, l10n("Use Zen'Kiki to engage the Diseased Hawks"), 0, {{"monster", 44269}}}},
        },
        [26955] = { -- Zen'Kiki and the Cultists
            [questKeys.preQuestGroup] = {26954,27057},
            [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_INTERACT, l10n("Open the cage"), 0, {{"object", 430023}}}},
            [questKeys.objectives] = {{{44902,nil,Questie.ICON_TYPE_EVENT}}},
        },
        [26956] = { -- I Ain't Sayin' You a Gourd-Digger...
            [questKeys.objectives] = {nil,{{205054},{205053},{205052}}},
        },
        [26958] = { -- Your First Lesson
            [questKeys.objectives] = {{{44703}},nil,nil,nil,nil,{{100}}},
            [questKeys.extraObjectives] = {{nil, Questie.ICON_TYPE_TALK, l10n("Learn Spell: Charge"), 2, {{"monster", 16503}}}},
            [questKeys.preQuestSingle] = {},
        },
        [26959] = { -- Stripping Their Defenses
            [questKeys.requiredRaces] = raceIDs.ALL_HORDE,
        },
        [26960] = { -- My Son, the Prince
            [questKeys.preQuestSingle] = {},
            [questKeys.objectives] = {{{1747,nil,Questie.ICON_TYPE_TALK}}},
        },


}},
[28017] = {"Procuram-se aventureiros: Biblioteca do Monastério Escarlate", nil, {"Fale com a Patrulheira Sombria Velonara."}},
[28018] = {"Procuram-se aventureiros: Armaria do Monastério Escarlate", nil, {"Fale com a Patrulheira Sombria Velonara."}},
[28019] = {"Procuram-se aventureiros: Catedral do Monastério Escarlate", nil, {"Fale com a Patrulheira Sombria Velonara."}},
[28020] = {"Procuram-se aventureiros: Cemitério do Monastério Escarlate", nil, {"Fale com José, o Desperto."}},
[28021] = {"Procuram-se aventureiros: Biblioteca do Monastério Escarlate", nil, {"Fale com José, o Desperto."}},
[28022] = {"Procuram-se aventureiros: Armaria do Monastério Escarlate", nil, {"Fale com José, o Enlouquecido."}},
[28023] = {"Procuram-se aventureiros: Catedral do Monastério Escarlate", nil, {"Fale com José, o Insano."}},
[28024] = {"Procuram-se aventureiros: Urzal dos Mortos", nil, {"Falar com Koristrasza."}},
[28025] = {"Procuram-se aventureiros: Urzal dos Mortos", nil, {"Falar com Koristrasza."}},
[28026] = {"Procuram-se aventureiros: Uldaman", nil, {"Fale com o Avaliador-mor Tae'thelan Vigiassangre."}},
[28027] = {"Procuram-se aventureiros: Uldaman", nil, {"Fale com o Prospector-chefe Durdin."}},
[28028] = {"Cerco!", nil, {"Mate 9 Atiradores Peritos Ferro Negro."}},
[28029] = {"Taca fogo neles!", nil, {"Use a Tocha da Retribuição nas quatro torres ao redor do Caldeirão."}},
[28030] = {"A bala deles é melhor", nil, {"Obtenha 200 Balas de Ferro Negro."}},
[28031] = {"Entrega especial para Pena Tabwa", nil, {"Entregue o Canhão Criogênico de Pico-léguas para Pena Tabwa no Sítio Arqueológico Submerso, que fica em Mil Agulhas."}},
[28032] = {"Os mistérios da moela de fogo", nil, {"Obtenha 6 Moelas de Fogo."}},
[28033] = {"Trapaça", nil, {"Encontre uma forma de convencer o Senhor da Montanha Rendan a se juntar à Irmandade do Tório."}},
[28034] = {"A aventura do Lanque: o ponto fraco do Rendan", nil, {"Fale com três Guardas do Auge Férreo e pergunte se eles querem participar da sua dança."}},
[28035] = {"O apoio do Senhor da Montanha", nil, {"Reporte o seu sucesso ao Feitor Mão-de-graxa no Posto de Tório, que fica na Garganta Abrasadora."}},
[28036] = {"Procuram-se aventureiros: Zul'farrak", nil, {"Fale com Tran'rek."}},
[28037] = {"Procuram-se aventureiros: Zul'farrak", nil, {"Fale com Tran'rek."}},
[28038] = {"Sangue sobre o Planalto", nil, {"Fale com Wodin, o Serviçal Troll, no Caldeirão da Carnificina, que fica no Planalto do Crepúsculo."}},
[28039] = {"Procuram-se aventureiros: Maraudon", nil, {"Fale com o Espírito


ormatting")

  require("godotdev.dap").setup({
    type = "server",
    host = M.opts.editor_host,
    port = M.opts.debug_port,
  })

  require("godotdev.tree-sitter")

  require("godotdev.health").setup({
    port = M.opts.editor_port,
  })

  if opts.csharp then
    local dap = require("dap")
    dap.adapters.coreclr = {
      type = "executable",
      command = opts.netcoredbg_path or "netcoredbg",
      args = { "--interpreter=vscode" },
    }
    dap.configurations.cs = {
      {
        type = "coreclr",
        name = "launch - netcoredbg",
        request = "launch",
        program = function()
          return vim.fn.input("Path to dll: ", vim.fn.getcwd() .. "/bin/Debug/net6.0/", "file")
        end,
      },
    }
  end
end

return M


式进行存储
     *
     * @param host                   机器信息
     * @param thirdFileSourceTaskLog 第三方源文件下载任务日志
     * @return 统一格式日志实体
     */
    private ServiceExecuteObjectLogDTO buildServiceHostLogDTO(HostDTO host,
                                                              ThirdFileSourceTaskLogDTO thirdFileSourceTaskLog) {
        if (thirdFileSourceTaskLog == null) {
            return null;
        }
        ServiceExecuteObjectLogDTO serviceHostLog = new ServiceExecuteObjectLogDTO();
        serviceHostLog.setStepInstanceId(stepInstance.getId());
        serviceHostLog.setExecuteCount(stepInstance.getExecuteCount());
        serviceHostLog.setBatch(stepInstance.getBatch());
        ExecuteObject executeObject;
        if (stepInstance.isSupportExecuteObjectFeature()) {
            executeObject = new ExecuteObject(host);
            serviceHostLog.setExecuteObjectId(executeObject.getId());
        } else {
            serviceHostLog.setHostId(host.getHostId());
            serviceHostLog.setCloudIp(host.getIp());
            executeObject = ExecuteObject.buildCompatibleExecuteObject(host);
        }
        serviceHostLog.setFileTaskLogs(buildFileTaskLogs(executeObject, thirdFileSourceTaskLog.getFileTaskLogs()));
        return serviceHostLog;
    }

    /**
     * 将第三方文件源任务日志转为Job系统统一格式日志用于存储与展示
     *
     * @param executeObject 日志关联的执行对象信息
     * @param fileLogPieces 文件下载日志列表
     * @return Job日志列表
     */
    private List<ServiceFileTaskLogDTO> buildFileTaskLogs(ExecuteObject executeObject,
                                                          List<FileLogPieceDTO> fileLogPieces) {
        if (CollectionUtils.isEmpty(fileLogPieces)) {
            return Collections.emptyList();
        }
        return fileLogPieces.stream().map(fileLogPiece ->
            logService.buildUploadServiceFileTaskLogDTO(
                stepInstance,
                TaskFileTypeEnum.FILE_SOURCE,
                fileLogPiece.getSrcFile(),
                fileLogPiece.getDisplaySrcFile(),
                executeObject,
                FileDistStatusEnum.getFileDistStatus(fileLogPiece.getStatus()),
                fileLogPiece.getSize(),
                fileLogPiece.getSpeed(),
                fileLogPiece.getProcess(),
                fileLogPiece.getContent()
            )
        ).collect(Collectors.toList());
    }

    @Override
    public void stop() {
        synchronized (stopMonitor) {
            if (!isStopped) {
                StopTaskCounter.getInstance().decrement(getTaskId());
                this.isStopped = true;
            }
        }
    }

    @Override
    public String getTaskId() {
        return "file_source_batch_task:" + this.stepInstance.getId() + ":" + this.stepInstance.getExecuteCount();
    }

    @Override
    public TaskContext getTaskContext() {
        return taskContext;
    }

    @Override
    public boolean isForRetry() {
        return isForRetry;
    }
}
/*
 * Tencent is pleased to support the open source community by making BK-JOB蓝鲸智云作业平台 available.
 *
 * Copyright (C) 2021 Tencent.  All rights reserved.
 *
 * BK-JOB蓝鲸智云作业平台 is licensed under the MIT License.
 *
 * License for BK-JOB蓝鲸智云作业平台:
 * --------------------------------------------------------------------
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
 * documentation files (t


atter service injected dependency.
   */
  constructor(
    public uiService: UiService,
    private excelDateFormatterService: ExcelDateFormatterService
  ) {
  }

  /**
   * Calculates the number of items in an aggregation string based on a splitter character/string.
   *
   * @param collection The collection of objects to process.
   * @param propertyName The name of the property to process.
   * @param splitter The splitter character/string.
   *
   * @returns The number of items in an aggregation string.
   */
  public count(collection: Indexable[], propertyName: string, splitter: string = ', '): number {
    const aggregate = this.aggregate(collection, propertyName, splitter);
    const matches = aggregate.match(new RegExp(this.uiService.frequenciesDivider, 'g'));
    return matches ? matches.length + 1 : aggregate.length > 0 ? 1 : 0;
  }

  /**
   * Aggregates the value parts in a collection objects' property based on a splitter character/string.
   *
   * @param collection The collection of objects to process.
   * @param propertyName The name of the property to process.
   * @param splitter The splitter character/string.
   *
   * @description
   * For a given object property name in the collection of objects, extracts the values, concatenates them with the splitter
   * and filters out the blank ones and the repetitions.
   *
   * @returns A string with the aggregated values.
   */
  private aggregate(collection: Indexable[], propertyName: string, splitter: string = ', '): string {
    if ((typeof collection === 'undefined')) {
      return '';
    }

    let aggregation = '';

    for (const property of collection) {
      let propertyValue = property[propertyName];

      propertyValue = this.excelDateFormatterService.formatDates(['From', 'To'], propertyName, propertyValue);

      aggregation = aggregation.concat(propertyValue, splitter);
    }

    const arr = aggregation.split(splitter);

    aggregation = arr
      .filter((item: string, pos: number) => item !== '' && arr.indexOf(item) === pos)
      .join(' ' + this.uiService.frequenciesDivider + ' ');

    return aggregation;
  }
}
import {isSameMonth} from '../is-same-month';

describe('isSameMonth()', () => {
  describe('UTC timezone', () => {
    it('returns true if inputs are the same month', () => {
      const date1 = new Date('2018-01-01T00:00:00.000+00:00');
      const date2 = new Date('2018-01-31T23:59:59.999+00:00');

      expect(isSameMonth(date1, date2, 'UTC')).toBe(true);
    });

    it('returns false if inputs are not the same month', () => {
      const date1 = new Date('2018-01-01T00:00:00.000+00:00');
      const date2 = new Date('2018-02-31T23:59:59.999+00:00');

      expect(isSameMonth(date1, date2, 'UTC')).toBe(false);
    });
  });

  describe('not UTC timezone', () => {
    it('returns true if inputs are the same month', () => {
      const date1 = new Date('2018-01-01T00:00:00.000+08:00');
      const date2 = new Date('2018-01-31T23:59:59.999+08:00');

      expect(isSameMonth(date1, date2, 'Australia/Perth')).toBe(true);
    });

    it('returns false if inputs are not the same month', () => {
      const date1 = new Date('2018-01-01T00:00:00.000+08:00');
      const date2 = new Date('2018-02-31T23:59:59.999+08:00');

      expect(isSameMonth(date1, date2, 'Australia/Perth')).toBe(false);
    });
  });

  describe('Daylight S


�查阅案卷的时间不计入审理期限。

第二百三十六条 第二审人民法院对不服第一审判决的上诉、抗诉案件，经过审理后，应当按照下列情形分别处理：

（一）原判决认定事实和适用法律正确、量刑适当的，应当裁定驳回上诉或者抗诉，维持原判；

（二）原判决认定事实没有错误，但适用法律有错误，或者量刑不当的，应当改判；

（三）原判决事实不清楚或者证据不足的，可以在查清事实后改判；也可以裁定撤销原判，发回原审人民法院重新审判。

原审人民法院对于依照前款第三项规定发回重新审判的案件作出判决后，被告人提出上诉或者人民检察院提出抗诉的，第二审人民法院应当依法作出判决或者裁定，不得再发回原审人民法院重新审判。

第二百三十七条 第二审人民法院审理被告人或者他的法定代理人、辩护人、近亲属上诉的案件，不得加重被告人的刑罚。第二审人民法院发回原审人民法院重新审判的案件，除有新的犯罪事实，人民检察院补充起诉的以外，原审人民法院也不得加重被告人的刑罚。

人民检察院提出抗诉或者自诉人提出上诉的，不受前款规定的限制。

第二百三十八条 第二审人民法院发现第一审人民法院的审理有下列违反法律规定的诉讼程序的情形之一的，应当裁定撤销原判，发回原审人民法院重新审判：

（一）违反本法有关公开审判的规定的；

（二）违反回避制度的；

（三）剥夺或者限制了当事人的法定诉讼权利，可能影响公正审判的；

（四）审判组织的组成不合法的；

（五）其他违反法律规定的诉讼程序，可能影响公正审判的。

第二百三十九条 原审人民法院对于发回重新审判的案件，应当另行组成合议庭，依照第一审程序进行审判。对于重新审判后的判决，依照本法第二百二十七条、第二百二十八条、第二百二十九条的规定可以上诉、抗诉。

第二百四十条 第二审人民法院对不服第一审裁定的上诉或者


 #1
	add r1, #0xc
	str r0, [r4, r1]
	ldr r0, [r4, #0x10]
	mov r1, #0x12
	str r1, [r0]
	pop {r3, r4, r5, r6, r7, pc}
	nop
_02230D1C: .word 0x00000504
	thumb_func_end ov40_02230CDC

	thumb_func_start ov40_02230D20
ov40_02230D20: ; 0x02230D20
	push {r4, lr}
	ldr r2, _02230D90 ; =0x00000514
	add r4, r0, #0
	ldr r1, [r4, r2]
	cmp r1, #0
	beq _02230D32
	cmp r1, #1
	beq _02230D58
	b _02230D70
_02230D32:
	add r1, r2, #4
	ldr r1, [r4, r1]
	cmp r1, #8
	bge _02230D46
	add r0, r2, #4
	ldr r0, [r4, r0]
	add r1, r0, #1
	add r0, r2, #4
	str r1, [r4, r0]
	pop {r4, pc}
_02230D46:
	sub r1, r2, #4
	ldr r1, [r4, r1]
	bl ov40_0222DED0
	ldr r0, _02230D90 ; =0x00000514
	ldr r1, [r4, r0]
	add r1, r1, #1
	str r1, [r4, r0]
	pop {r4, pc}
_02230D58:
	bl System_GetTouchNew
	cmp r0, #0
	beq _02230D8C
	add r0, r4, #0
	bl ov40_0222DFB0
	ldr r0, _02230D90 ; =0x00000514
	ldr r1, [r4, r0]
	add r1, r1, #1
	str r1, [r4, r0]
	pop {r4, pc}
_02230D70:
	add r0, r2, #4
	ldr r0, [r4, r0]
	cmp r0, #0
	ble _02230D84
	add r0, r2, #4
	ldr r0, [r4, r0]
	sub r1, r0, #1
	add r0, r2, #4
	str r1, [r4, r0]
	pop {r4, pc}
_02230D84:
	sub r2, #8
	ldr r1, [r4, r2]
	ldr r0, [r4, #0x10]
	str r1, [r0]
_02230D8C:
	pop {r4, pc}
	nop
_02230D90: .word 0x00000514
	thumb_func_end ov40_02230D20

	thumb_func_start ov40_02230D94
ov40_02230D94: ; 0x02230D94
	push {r3, r4, r5, r6, r7, lr}
	add r6, r1, #0
	add r7, r2, #0
	mov r4, #1
	add r5, r0, #4
_02230D9E:
	ldr r0, _02230DC8 ; =0x0000087C
	ldr r0, [r5, r0]
	cmp r0, #0
	beq _02230DBA
	mov r1, #4
	mov r2, #0
	bl sub_0203088C
	eor r1, r7
	eor r0, r6
	orr r0, r1
	bne _02230DBA
	mov r0, #1
	pop {r3, r4, r5, r6,


n, with tag t.
The size of the block can be greater than Max_young_wosize. (It
can also be smaller, but in this case it is more efficient to call
<TT>caml_alloc_small</TT> instead of <TT>caml_alloc_shr</TT>.)
If this block is a structured block (i.e. if t < <TT>No_scan_tag</TT>), then
the fields of the block (initially containing garbage) must be initialized
with legal values (using the <TT>caml_initialize</TT> function described below)
before the next allocation.

18.4.5Raising exceptions

Two functions are provided to raise two standard exceptions:

<TT>caml_failwith(</TT>s<TT>)</TT>, where s is a null-terminated C string (with
type char *), raises exception <TT>Failure</TT> with argument s.

<TT>caml_invalid_argument(</TT>s<TT>)</TT>, where s is a null-terminated C
string (with type char *), raises exception <TT>Invalid_argument</TT>
with argument s.

Raising arbitrary exceptions from C is more delicate: the
exception identifier is dynamically allocated by the Caml program, and
therefore must be communicated to the C function using the
registration facility described below in section18.7.3.
Once the exception identifier is recovered in C, the following
functions actually raise the exception:

<TT>caml_raise_constant(</TT>id<TT>)</TT> raises the exception id with
no argument;

<TT>caml_raise_with_arg(</TT>id<TT>, </TT>v<TT>)</TT> raises the exception
id with the Caml value v as argument;

<TT>caml_raise_with_args(</TT>id<TT>, </TT>n<TT>, </TT>v<TT>)</TT>
raises the exception id with the Caml values
v<TT>[0]</TT>, …, v<TT>[</TT>n<TT>-1]</TT> as arguments;

<TT>caml_raise_with_string(</TT>id<TT>, </TT>s<TT>)</TT>, where s is a
null-terminated C string, raises the exception id with a copy of
the C string s as argument.

18.5Living in harmony with the garbage collector

Unused blocks in the heap are automatically reclaimed by the garbage
collector. This requires some cooperation from C code that
manipulates heap-allocated blocks.

18.5.1Simple interface

All the macros described in this section are declared in the
<TT>memory.h</TT> header file.

Rule1
A function that has parameters or


.code.lineNumbers&&e.markdown.lineNumbers&&e.raw.lineNumbers)}return!1}}),s.addCommand(D.commandMode,{label:i.__("Enter Command Mode"),execute:e=>{const o=me(t,c,e);o&&(o.content.mode="command")},isEnabled:d}),s.addCommand(D.editMode,{label:i.__("Enter Edit Mode"),execute:e=>{const o=me(t,c,e);o&&(o.content.mode="edit")},isEnabled:d}),s.addCommand(D.undoCellAction,{label:i.__("Undo Cell Operation"),execute:e=>{const o=me(t,c,e);if(o)return v.NotebookActions.undo(o.content)},isEnabled:d}),s.addCommand(D.redoCellAction,{label:i.__("Redo Cell Operation"),execute:e=>{const o=me(t,c,e);if(o)return v.NotebookActions.redo(o.content)},isEnabled:d}),s.addCommand(D.redo,{label:i.__("Redo"),execute:e=>{var o;const n=me(t,c,e);if(n){const e=n.content.activeCell;if(e)return e.inputHidden=!1,null===(o=e.editor)||void 0===o?void 0:o.redo()}}}),s.addCommand(D.undo,{label:i.__("Undo"),execute:e=>{var o;const n=me(t,c,e);if(n){const e=n.content.activeCell;if(e)return e.inputHidden=!1,null===(o=e.editor)||void 0===o?void 0:o.undo()}}}),s.addCommand(D.changeKernel,{label:i.__("Change Kernel…"),execute:e=>{const o=me(t,c,e);if(o)return n.selectKernel(o.context.sessionContext)},isEnabled:d}),s.addCommand(D.getKernel,{label:i.__("Get Kernel"),execute:e=>{var o;const n=me(t,c,{activate:!1,...e});if(n)return null===(o=n.sessionContext.session)||void 0===o?void 0:o.kernel},isEnabled:d}),s.addCommand(D.reconnectToKernel,{label:i.__("Reconnect to Kernel"),execute:e=>{var o;const n=me(t,c,e);if(!n)return;const l=null===(o=n.context.sessionContext.session)||void 0===o?void 0:o.kernel;return l?l.reconnect():void 0},isEnabled:d}),s.addCommand(D.markdown1,{label:i.__("Change to Heading 1"),execute:e=>{const o=me(t,c,e);if(o)return v.NotebookActions.setMarkdownHeader(o.content,1)},isEnabled:d}),s.addCommand(D.markdown2,{label:i.__("Change to Heading 2"),execute:e=>{const o=me(t,c,e);if(o)return v.NotebookActions.setMarkdownHeader(o.content,2)},isEnabled:d}),s.addCommand(D.markdown3,{label:i.__("Change to Heading 3"),execute:e=>{const o=me(t,c,e);if(o)return v.NotebookActions.setMarkdownHeader(o.content,3)},isEnabled:d}),s.addCommand(D.markdown4,{label:i.__("Change to Heading 4"),execute:e=>{const o=me(t,c,e);if(o)return v.NotebookActions.setMarkdownHeader(o.content,4)},isEnabled:d}),s.addCommand(D.markdown5,{label:i.__("Change to Heading 5"),execute:e=>{const o=me(t,c,e);if(o)return v.NotebookActions.setMarkdownHeader(o.content,5)},isEnabled:d}),s.addCommand(D.markdown6,{label:i.__("Change to Heading 6"),execute:e=>{const o=me(t,c,e);if(o)return v.NotebookActions.setMarkdownHeader(o.content,6)},isEnabled:d}),s.a


 });

    if (onAnimationComplete != null) {
      animator.addListener(onAnimationComplete);
    }

    return animator;
  }

  public Optional<QuoteModel> getQuote() {
    if (quoteView.getVisibility() == View.VISIBLE && quoteView.getBody() != null) {
      return Optional.of(new QuoteModel(
              quoteView.getDcContact(), quoteView.getBody().toString(),
              false, quoteView.getAttachments(), quoteView.getOriginalMsg()
      ));
    } else {
      return Optional.absent();
    }
  }

  public void clickOnComposeInput() {
    composeText.performClick();
  }

  public void setMediaKeyboard(@NonNull MediaKeyboard mediaKeyboard) {
    mediaKeyboard.setKeyboardListener(this);
  }

  @Override
  public void onRecordPermissionRequired() {
    if (listener != null) listener.onRecorderPermissionRequired();
  }

  @Override
  public void onRecordPressed() {
    if (listener != null) listener.onRecorderStarted();
    recordTime.display();
    slideToCancel.display();

    ViewUtil.fadeOut(emojiToggle, FADE_TIME, View.INVISIBLE);
    ViewUtil.fadeOut(composeText, FADE_TIME, View.INVISIBLE);
    ViewUtil.fadeOut(quickCameraToggle, FADE_TIME, View.INVISIBLE);
    ViewUtil.fadeOut(quickAudioToggle, FADE_TIME, View.INVISIBLE);
    buttonToggle.animate().alpha(0).setDuration(FADE_TIME).start();
  }

  @Override
  public void onRecordReleased() {
    long elapsedTime = onRecordHideEvent();

    if (listener != null) {
      Log.d(TAG, "Elapsed time: " + elapsedTime);
      if (elapsedTime > 1000) {
        listener.onRecorderFinished();
      } else {
        Toast.makeText(getContext(), R.string.chat_record_explain, Toast.LENGTH_LONG).show();
        listener.onRecorderCanceled();
      }
    }
  }

  @Override
  public void onRecordMoved(float offsetX, float absoluteX) {
    slideToCancel.moveTo(offsetX);

    float position  = absoluteX / recordingContainer.getWidth();

    if (ViewUtil.isLtr(this) && position <= 0.5 ||
        ViewUtil.isRtl(this) && position >= 0.6)
    {
      this.microphoneRecorderView.cancelAction();
    }
  }

  @Override
  public void onRecordCanceled() {
    onRecordHideEvent();
    if (listener != null) listener.onRecorderCanceled();
  }

  @Override
  public void onRecordLocked() {
    slideToCancel.hide();
    recordLockCancel.setVisibility(View.VISIBLE);
    buttonToggle.animate().alpha(1).setDuration(FADE_TIME).start();
    if (listener != null) listener.onRecorderLocked();
  }

  public void onPause() {
    this.microphoneRecorderView.cancelAction();
  }

  public void setEnabled(boolean enabled) {
    composeText.setEnabled(enabled);
    emojiToggle.setEnabled(enabled);
    quickAudioToggle.setEnabled(enabled);
    quickCameraToggle.setEnabled(enabled);
  }

  private long onRecordHideEvent() {
    recordLockCancel.setVisibility(View.GONE);

    ListenableFuture<Void> future      = slideToCancel.hide();
    long                   elapsedTime = recordTime.hide();

    future.addListener(new AssertedSuccessListener<Void>() {
      @Override
      public void onSuccess(Void result) {
        ViewUtil.fadeIn(emojiToggle, FADE_TIME);
        ViewUtil.fadeIn(composeText, FADE_TIME);
        ViewUtil.fadeIn(quickCameraToggle, FADE_TIME);
        ViewUtil.fadeIn(quickAudioToggle, FADE_TIME);
        buttonToggle.animate().alpha(1).setDuration(FADE_TIME).start();
        composeText.requestFocus();
      }
    });

    return elapsedTime;
  }

  @Override
  public void onKeyboardShown() {
    emojiToggle.setToMedia();
  }


 I l J D E F A B C K L G M N O m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"2":"I l J D E F A B C K 0B oB 1B 2B 3B 4B pB hB iB","16":"L G 5B 6B 7B qB rB 8B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB Y TB UB VB WB XB YB ZB aB bB cB dB eB fB gB P Q R mB S T U V W 9B AC BC CC hB sB DC iB"},G:{"2":"E oB EC tB FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC WC XC qB rB"},H:{"2":"YC"},I:{"2":"jB I H ZC aC bC cC tB dC eC"},J:{"2":"D A"},K:{"2":"A B C Y hB sB iB"},L:{"2":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"fC"},P:{"2":"I gC hC iC jC kC pB lC mC nC oC pC qC"},Q:{"2":"rC"},R:{"2":"sC"},S:{"2":"tC"}},B:6,C:"Media Session API"};
module.exports={A:{A:{"2":"J D E F A B uB"},B:{"1":"P Q R S T U V W Z a b c d e f g h i j k X H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 vB jB I l J D E F A B C K L G M N O m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB kB QB lB RB SB Y TB UB VB WB XB YB ZB aB bB cB dB eB fB gB P Q R mB S T U V W Z a b c d e f g h i j k X H nB wB xB"},D:{"1":"cB dB eB fB gB P Q R S T U V W Z a b c d e f g h i j k X H nB yB zB","2":"0 1 2 3 4 5 6 7 8 9 I l J D E F A B C K L G M N O m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB kB QB lB RB SB Y TB UB VB WB XB YB ZB aB bB"},E:{"2":"I l J D E F A B C K L G 0B oB 1B 2B 3B 4B pB hB iB 5B 6B 7B qB rB 8B"},F:{"1":"RB SB Y TB UB VB WB XB YB ZB aB bB cB dB eB fB gB P Q R mB S T U V W","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB 9B AC BC CC hB sB DC iB"},G:{"2":"E oB EC tB FC GC HC IC JC KC LC MC NC OC PC QC RC SC TC UC VC WC XC qB rB"},H:{"2":"YC"},I:{"1":"H","2":"jB I ZC aC bC cC tB dC eC"},J:{"2":"D A"},K:{"1":"Y","2":"A B C hB sB iB"},L:{"1":"H"},M:{"2":"X"},N:{"2":"A B"},O:{"2":"fC"},P:{"1":"lC mC nC oC pC qC","2":"I gC hC iC jC kC pB"},Q:{"2":"rC"},R:{"2":"sC"},S:{"2":"tC"}},B:7,C:"IntersectionObserver V2"};
module.exports={A:{A:{"2":"J D E F A


GeneratedMessageV3.FieldAccessorTable(
        internal_static_palm_musa_v1_WechatPayPrepayRequest_Amount_descriptor,
        new java.lang.String[] { "Total", "Currency", });
    internal_static_palm_musa_v1_WechatPayCloseOrderRequest_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_palm_musa_v1_WechatPayCloseOrderRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_palm_musa_v1_WechatPayCloseOrderRequest_descriptor,
        new java.lang.String[] { "OutTradeNo", "Reason", });
    internal_static_palm_musa_v1_Error_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_palm_musa_v1_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_palm_musa_v1_Error_descriptor,
        new java.lang.String[] { "Code", "Message", });
    internal_static_palm_musa_v1_WechatPayNativeQrCodeUrlResponse_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_palm_musa_v1_WechatPayNativeQrCodeUrlResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_palm_musa_v1_WechatPayNativeQrCodeUrlResponse_descriptor,
        new java.lang.String[] { "Url", "OutTradeNo", });
    internal_static_palm_musa_v1_WechatPayTradeResponse_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_palm_musa_v1_WechatPayTradeResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_palm_musa_v1_WechatPayTradeResponse_descriptor,
        new java.lang.String[] { "TradeState", "TradeStateDesc", });
    internal_static_palm_musa_v1_WechatPayQueryOrderByIdRequest_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_palm_musa_v1_WechatPayQueryOrderByIdRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_palm_musa_v1_WechatPayQueryOrderByIdRequest_descriptor,
        new java.lang.String[] { "TransactionId", });
    internal_static_palm_musa_v1_WechatPayQueryOrderByOutTradeNoRequest_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_palm_musa_v1_WechatPayQueryOrderByOutTradeNoRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_palm_musa_v1_WechatPayQueryOrderByOutTradeNoRequest_descriptor,
        new java.lang.String[] { "OutTradeNo", });
    internal_static_palm_musa_v1_WechatPayJsapiPrepayIdResponse_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_palm_musa_v1_WechatPayJsapiPrepayIdResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_palm_musa_v1_WechatPayJsapiPrepayIdResponse_descriptor,
        new java.lang.String[] { "AppId", "TimeStamp", "NonceStr", "Package", "SignType", "PaySign", "OutTradeNo", });
    internal_static_palm_musa_v1_WechatPayBillDate_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_stat


temRegisteredSignalBody{
				V0: v0,
			},
		}, nil
	case InterfaceStatusNotifierWatcher + "." + "StatusNotifierItemUnregistered":
		v0, ok := signal.Body[0].(string)
		if !ok {
			return nil, fmt.Errorf("prop .V0 is %T, not string", signal.Body[0])
		}
		return &StatusNotifierWatcher_StatusNotifierItemUnregisteredSignal{
			sender: signal.Sender,
			Path:   signal.Path,
			Body: &StatusNotifierWatcher_StatusNotifierItemUnregisteredSignalBody{
				V0: v0,
			},
		}, nil
	case InterfaceStatusNotifierWatcher + "." + "StatusNotifierHostRegistered":
		return &StatusNotifierWatcher_StatusNotifierHostRegisteredSignal{
			sender: signal.Sender,
			Path:   signal.Path,
			Body:   &StatusNotifierWatcher_StatusNotifierHostRegisteredSignalBody{},
		}, nil
	case InterfaceStatusNotifierWatcher + "." + "StatusNotifierHostUnregistered":
		return &StatusNotifierWatcher_StatusNotifierHostUnregisteredSignal{
			sender: signal.Sender,
			Path:   signal.Path,
			Body:   &StatusNotifierWatcher_StatusNotifierHostUnregisteredSignalBody{},
		}, nil
	default:
		return nil, ErrUnknownSignal
	}
}

// AddMatchSignal registers a match rule for the given signal,
// opts are appended to the automatically generated signal's rules.
func AddMatchSignal(conn *dbus.Conn, s Signal, opts ...dbus.MatchOption) error {
	return conn.AddMatchSignal(append([]dbus.MatchOption{
		dbus.WithMatchInterface(s.Interface()),
		dbus.WithMatchMember(s.Name()),
	}, opts...)...)
}

// RemoveMatchSignal unregisters the previously registered subscription.
func RemoveMatchSignal(conn *dbus.Conn, s Signal, opts ...dbus.MatchOption) error {
	return conn.RemoveMatchSignal(append([]dbus.MatchOption{
		dbus.WithMatchInterface(s.Interface()),
		dbus.WithMatchMember(s.Name()),
	}, opts...)...)
}

// Interface name constants.
const (
	InterfaceStatusNotifierWatcher = "org.kde.StatusNotifierWatcher"
)

// StatusNotifierWatcherer is org.kde.StatusNotifierWatcher interface.
type StatusNotifierWatcherer interface {
	// RegisterStatusNotifierItem is org.kde.StatusNotifierWatcher.RegisterStatusNotifierItem method.
	RegisterStatusNotifierItem(service string) (err *dbus.Error)
	// RegisterStatusNotifierHost is org.kde.StatusNotifierWatcher.RegisterStatusNotifierHost method.
	RegisterStatusNotifierHost(service string) (err *dbus.Error)
}

// ExportStatusNotifierWatcher exports the given object that implements org.kde.StatusNotifierWatcher on the bus.
func ExportStatusNotifierWatcher(conn *dbus.Conn, path dbus.ObjectPath, v StatusNotifierWatcherer) error {
	return conn.ExportSubtreeMethodTable(map[string]interface{}{
		"RegisterStatusNotifierItem": v.RegisterStatusNotifierItem,
		"RegisterStatusNotifierHost": v.RegisterStatusNotifierHost,
	}, path, InterfaceStatusNotifierWatcher)
}

// UnexportStatusNotifierWatcher unexports org.kde.StatusNotifierWatcher interface on the named path.
func UnexportStatusNotifierWatcher(conn *dbus.Conn, path dbus.ObjectPath) error {
	return conn.Export(nil, path, InterfaceStatusNotifierWatcher)
}

// UnimplementedStatusNotifierWatcher can be embedded to have forward compatible server implementations.
type UnimplementedStatusNotifierWat


MD": "מולדובה",
  "MC": "מונקו",
  "MN": "מונגוליה",
  "ME": "מונטנגרו",
  "MS": "מונטסראט",
  "MA": "מרוקו",
  "MZ": "מוזמביק",
  "MM": "מיאנמר",
  "NA": "נמיביה",
  "NR": "נאורו",
  "NP": "נפאל",
  "NL": "הולנד",
  "NC": "קלדוניה החדשה",
  "NZ": "ניו זילנד",
  "NI": "ניקרגואה",
  "NE": "ניז׳ר",
  "NG": "ניגריה",
  "NU": "ניואה",
  "NF": "נורפוק",
  "KP": "צפון קוריאה",
  "MP": "איי מריאנה הצפוניים",
  "NO": "נורווגיה",
  "OM": "עומאן",
  "PK": "פקיסטן",
  "PW": "פלאו",
  "PS": "הרשות הפלסטינית",
  "PA": "פנמה",
  "PG": "פפואה גינאה החדשה",
  "PY": "פרגוואי",
  "PE": "פרו",
  "PH": "הפיליפינים",
  "PL": "פולין",
  "PT": "פורטוגל",
  "PR": "פוארטו ריקו",
  "QA": "קטר",
  "RE": "ראוניון",
  "RO": "רומניה",
  "RU": "רוסיה",
  "RW": "רואנדה",
  "BL": "סן ברתלמי",
  "SH": "סנט הלנה, אסנשן וטריסטן דה קונה",
  "KN": "סנט קיטס ונוויס",
  "LC": "סנט לוסיה",
  "MF": "סן מרטן",
  "PM": "סן-פייר ומיקלון",
  "VC": "סנט וינסנט והגרנדינים",
  "WS": "סמואה",
  "SM": "סן מרינו",
  "ST": "סאו טומה ופרינסיפה",
  "SA": "ערב הסעודית",
  "SN": "סנגל",
  "RS": "סרביה",
  "SC": "סיישל",
  "SL": "סיירה לאון",
  "SG": "סינגפור",
  "SX": "סנט מארטן",
  "SK": "סלובקיה",
  "SI": "סלובניה",
  "SB": "איי שלמה",
  "SO": "סומליה",
  "ZA": "דרום אפריקה",
  "GS": "איי ג'ורג'יה הדרומית ואיי סנדוויץ' הדרומיים",


}

  #ephemera .comment {
    position: relative;
    left: 57px;
  }

  #boarding-pass {
    top: 117px;
    left: 57px;
  }

  #receipt {
    top: 215px;
    left: -286px;
  }

  #bag-tag {
    top: 421px;
    left: 292px;
  }
}
/*! tailwindcss v4.1.10 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){.custom-fields-component *,.custom-fields-component ::backdrop,.custom-fields-component :after,.custom-fields-component :before{--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-tracking:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-divide-y-reverse:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-ease:initial;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-x-reverse:0;--tw-content:"";--tw-outline-style:solid;--tw-space-x-reverse:0}}}@layer theme{.custom-fields-component :host,.custom-fields-component :root{--font-mono:var(--mono-font-family),ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-sky-400:oklch(74.6% .16 232.661);--color-gray-200:var(--gray-200);--color-gray-300:var(--gray-300);--color-gray-400:var(--gray-400);--color-gray-500:var(--gray-500);--color-gray-600:var(--gray-600);--color-gray-700:var(--gray-700);--color-gray-950:var(--gray-950);--color-black:#000;--color-white:#fff;--spacing:.25rem;--breakpoint-sm:40rem;--breakpoint-md:48rem;--breakpoint-lg:64rem;--breakpoint-xl:80rem;--breakpoint-2xl:96rem;--container-3xs:16rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:


f backOffPolicyFunc != nil {
		boFunc = backOffPolicyFunc
	} else {
		boFunc = backoff.NewDefaultBackoff
	}
	r := &dlqRouter{
		client:            client,
		policy:            policy,
		topicName:         topicName,
		subscriptionName:  subscriptionName,
		consumerName:      consumerName,
		backOffPolicyFunc: boFunc,
		log:               logger,
	}

	if policy != nil {
		if policy.MaxDeliveries <= 0 {
			return nil, newError(InvalidConfiguration, "DLQPolicy.MaxDeliveries needs to be > 0")
		}

		if policy.DeadLetterTopic == "" {
			return nil, newError(InvalidConfiguration, "DLQPolicy.Topic needs to be set to a valid topic name")
		}

		r.messageCh = make(chan ConsumerMessage)
		r.closeCh = make(chan interface{}, 1)
		r.log = logger.SubLogger(log.Fields{"dlq-topic": policy.DeadLetterTopic})
		go r.run()
	}
	return r, nil
}

func (r *dlqRouter) shouldSendToDlq(cm *ConsumerMessage) bool {
	if r.policy == nil {
		return false
	}

	msg := cm.Message.(*message)
	r.log.WithField("count", msg.redeliveryCount).
		WithField("max", r.policy.MaxDeliveries).
		WithField("msgId", msg.msgID).
		Debug("Should route to DLQ?")

	// We use >= here because we're comparing the number of re-deliveries with
	// the number of deliveries. So:
	//  * the user specifies that wants to process a message up to 10 times.
	//  * the first time, the redeliveryCount == 0, then 1 and so on
	//  * when we receive the message and redeliveryCount == 10, it means
	//    that the application has already got (and Nack())  the message 10
	//    times, so this time we should just go to DLQ.

	return msg.redeliveryCount >= r.policy.MaxDeliveries
}

func (r *dlqRouter) Chan() chan ConsumerMessage {
	return r.messageCh
}

func (r *dlqRouter) run() {
	for {
		select {
		case cm := <-r.messageCh:
			r.log.WithField("msgID", cm.ID()).Debug("Got message for DLQ")
			producer := r.getProducer(cm.Consumer.(*consumer).options.Schema)
			msg := cm.Message.(*message)
			msgID := msg.ID()
			producer.SendAsync(context.Background(), &ProducerMessage{
				Payload:             msg.Payload(),
				Key:                 msg.Key(),
				OrderingKey:         msg.OrderingKey(),
				Properties:          msg.Properties(),
				EventTime:           msg.EventTime(),
				ReplicationClusters: msg.replicationClusters,
			}, func(_ MessageID, _ *ProducerMessage, err error) {
				if err == nil {
					r.log.WithField("msgID", msgID).Debug("Succeed to send message to DLQ")
					// The Producer ack might be coming from the connection go-routine that
					// is also used by the consumer. In that case we would get a dead-lock
					// if we'd try to ack.
					go cm.Consumer.AckID(msgID)
				} else {
					r.log.WithError(err).WithField("msgID", msgID).Debug("Failed to send message to DLQ")
					go cm.Consumer.Nack(cm)
				}
			})

		case <-r.closeCh:
			if r.producer != nil {
				r.producer.Close()
			}
			r.log.Debug("Closed DLQ router")
			return
		}
	}
}

func (r *dlqRouter) close() {
	// Attempt to write on the close channel, without blocking
	select {
	case r.closeCh <- nil:
	default:
	}
}

func (r *dlqRouter) getProducer(schema Schema) Producer {
	if r.producer != nil {
		// Producer was already initialized
		return r.producer
	}

	// Retry to create producer indefinitely
	bo := r.backOff


    bne ddEnd
dd1:
    and #0x3f       ; if A=32..95 then strip bits 6 and 7
    bpl ddEnd       ; <- you could also do .byte 0x0c here
ddRev:
    eor #0x80       ; flip bit 7 (reverse on when off and vice versa)
ddEnd:

    rts
zendproc

; Sets (ptr), y to the location of the cursor.
zproc calculate_cursor_address
    ldy cursorx
    lda cursory
    ; fall through
zendproc
; Sets ptr to the address of screen line A.
zproc calculate_line_address
    ; x*40 = x*8 + x*32.

    ; We have 25 lines. As 25*8 will fit in a byte, we can do this easily.

    asl a               ; a = y*2
    asl a               ; a = y*4
    asl a               ; a = y*8
    sta ptr+0           ; store y*8

    ; Anything more than this needs to be 16-bit arithmetic.

    asl a               ; = y*16
    rol ptr+1

    asl a               ; = y*13
    rol ptr+1

    ; Add.

    clc
    adc ptr+0
    sta ptr+0
    zif cs
        inc ptr+1
    zendif

#if defined PET8032 || defined PET8096
    ; The 8032 and 8096 have 80-column screens, so to get x80 from x40 we do
    ; another x2.

    asl ptr+0
    rol ptr+1
#endif

    ; Or in the video address.

    lda ptr+1
    and #0b00000111
    ora #>VIDEO
    sta ptr+1

    rts
zendproc

; --- Disk handling ---------------------------------------------------------

; (Most of this is implemented in ieee488.S.)

.macro set1 port, bit
    lda \port
    ora #\bit
    sta \port
.endm

.macro set0 port, bit
    lda \port
    and #(~(\bit)) & 0xff
    sta \port
.endm

zproc ieee_computer_atn
    IO_ON
    set0 VIA_PB, VIA_PB_ATN_OUT
    IO_OFF
    rts
zendproc

zproc ieee_computer_idle
zproc ieee_computer_talking
    IO_ON
    set1 VIA_PB, VIA_PB_ATN_OUT
    IO_OFF
    rts
zendproc

zproc ieee_computer_listening
    IO_ON
    set1 VIA_PB, VIA_PB_ATN_OUT
    IO_OFF
    rts
zendproc

zproc ieee_puteoib
    pha
    IO_ON
    lda #0x34               ; assert EOI
    sta PIA1_CA
    IO_OFF
    pla

    bne ieee_putb           ; always taken
zendproc

zproc ieee_putb
    ; Deassert our own NRFD and NDAC and wait for NRFD=0 (i.e. ready for data)

    pha
    IO_ON
    set1 VIA_PB, VIA_PB_NRFD_OUT
    set1 PIA2_CA, PIA2_CA_NDAC_OUT
    zrepeat
        lda VIA_PB
        and #VIA_PB_NRFD_IN
    zuntil ne
    pla


### prediction *function(val, d):bool*
Datum内部存储的是format之后的值，所以需要prediction函数来比对存储的值和原始数据是否一致。不设置，会使用此默认值:
```
(val, d) => val === format(d)
```

通常用在 value 为对象时，值相同却不是同一个对象等情况。

### disabled *function(d):bool*
判断数据项是否禁用。如果返回 true，add 和 remove 函数会忽略此数据。

### value *array | string*
初始值，可以为 Array 或 String。

## 函数

### getValue *function():array|string*
获取当前值。根据separator的设置，返回array或者string。

### setValue *function(array|string)*
设置值。新的值会替代当前值。

### add *function(array|object)*
添加数据。值为 format 前的原始数据，单条或者一组数据。

### remove *function(array|object)*
移除数据。值为 format 前的原始数据，单条或者一组数据。

### clear *function*
清空数据。# 更新日志

### 1.12.13
- 修复 Input.Number 在失焦时触发的 onChange 会变成 string 类型的问题(< 1.12.13)
- 修复 Table 样式权重问题 (1.8.8 - 1.12.12)
- 修复 Table 内 sorter 对象引用一直更新导致重复渲染的问题 (< 1.12.13)
- 修复 Popover 受控时无法加载的问题
- 修复 cascader filter 时动态变化数据后选择会报错的问题(< 1.12.13)
- 修复 Table 调整列的顺序会导致排序错误的问题(< 1.12.13)
- 修复 Select 下拉框弹出位置计算偏差导致菜单弹出错误的问题 (< 1.12.13)
- 优化 Select 某些场景下的性能 (< 1.12.13)

### 1.12.12
- 修复 Form.Field 校验时会存在未捕获的错误问题(1.12.10 - 1.12.11)

### 1.12.11
- 修复 List 组件设置 colNum 后最后一列的边框样式问题(< 1.12.11)

### 1.12.10
- 修复 FieldSet 校验抛出的 error 对象格式错误的问题(< 1.12.10)

### 1.12.9
- 修复 Input Textarea 在某些场景下会导致输入时光标移动的问题(< 1.12.9)

### 1.12.8
- 修复主题指定容器功能可能导致全局主题引入失败的问题(1.12.6 - 1.12.7)

### 1.12.7
- 兼容历史版本 Cascader value 传入空字符串的场景

### 1.12.6
- 修复 DropDown 设置 trigger 为 "hover" 禁用以后还能打开的问题 (< 1.12.6)
- 修复 DatePicker 设置时区后可能导致选中的日期早一天的问题 (< 1.12.6)
- 修复 Table 开启 sticky 属性后，在 loading 状态下导致 sticky 失效的问题(< 1.12.6)
- 优化 DatePicker 的 formatResult 函数用法, 新增参数 offsetDate 时区偏


e_copy(
        rto: RTo,
        cto: Dynamic,
        buf: ArrayStorage<T, RFROM, CFROM>,
    ) -> VecStorage<T, RTo, Dynamic> {
        #[cfg(feature = "no_unsound_assume_init")]
        let mut res: VecStorage<T, RTo, Dynamic> = unimplemented!();
        #[cfg(not(feature = "no_unsound_assume_init"))]
        let mut res =
            <Self as Allocator<T, RTo, Dynamic>>::allocate_uninitialized(rto, cto).assume_init();

        let (rfrom, cfrom) = buf.shape();

        let len_from = rfrom.value() * cfrom.value();
        let len_to = rto.value() * cto.value();
        ptr::copy_nonoverlapping(buf.ptr(), res.ptr_mut(), cmp::min(len_from, len_to));

        res
    }
}

// All conversion from a dynamic buffer to a dynamic buffer.
#[cfg(any(feature = "std", feature = "alloc"))]
impl<T: Scalar, CFrom: Dim, CTo: Dim> Reallocator<T, Dynamic, CFrom, Dynamic, CTo>
    for DefaultAllocator
{
    #[inline]
    unsafe fn reallocate_copy(
        rto: Dynamic,
        cto: CTo,
        buf: VecStorage<T, Dynamic, CFrom>,
    ) -> VecStorage<T, Dynamic, CTo> {
        let new_buf = buf.resize(rto.value() * cto.value());
        VecStorage::new(rto, cto, new_buf)
    }
}

#[cfg(any(feature = "std", feature = "alloc"))]
impl<T: Scalar, CFrom: Dim, RTo: DimName> Reallocator<T, Dynamic, CFrom, RTo, Dynamic>
    for DefaultAllocator
{
    #[inline]
    unsafe fn reallocate_copy(
        rto: RTo,
        cto: Dynamic,
        buf: VecStorage<T, Dynamic, CFrom>,
    ) -> VecStorage<T, RTo, Dynamic> {
        let new_buf = buf.resize(rto.value() * cto.value());
        VecStorage::new(rto, cto, new_buf)
    }
}

#[cfg(any(feature = "std", feature = "alloc"))]
impl<T: Scalar, RFrom: DimName, CTo: Dim> Reallocator<T, RFrom, Dynamic, Dynamic, CTo>
    for DefaultAllocator
{
    #[inline]
    unsafe fn reallocate_copy(
        rto: Dynamic,
        cto: CTo,
        buf: VecStorage<T, RFrom, Dynamic>,
    ) -> VecStorage<T, Dynamic, CTo> {
        let new_buf = buf.resize(rto.value() * cto.value());
        VecStorage::new(rto, cto, new_buf)
    }
}

#[cfg(any(feature = "std", feature = "alloc"))]
impl<T: Scalar, RFrom: DimName, RTo: DimName> Reallocator<T, RFrom, Dynamic, RTo, Dynamic>
    for DefaultAllocator
{
    #[inline]
    unsafe fn reallocate_copy(
        rto: RTo,
        cto: Dynamic,
        buf: VecStorage<T, RFrom, Dynamic>,
    ) -> VecStorage<T, RTo, Dynamic> {
        let new_buf = buf.resize(rto.value() * cto.value());
        VecStorage::new(rto, cto, new_buf)
    }
}
<reponame>hammsvietro/blazer
pub mod parser;
pub mod string;
mod test {
    use super::*;

    #[test]
    fn example() {
        let orbits = "COM)B
        B)C
        C)D
        D)E
        E)F
        B)G
        G)H
        D)I
        E)J
        J)K


 const val NUM_CLASSES = 2
private const val TRAIN_TEST_SPLIT_RATIO = 0.7

/**
 * This example demonstrates the transfer learning concept on MobileNet model:
 * - Model configuration, model weights and labels are obtained from [TFModelHub].
 * - Weights are loaded from .h5 file, configuration is loaded from .json file.
 * - All layers, excluding the last [Dense], are added to the new Neural Network, its weights are frozen.
 * - New Dense layers are added and initialized via defined initializers.
 * - Model is re-trained on [dogsCatsSmallDatasetPath] dataset.
 * - Special preprocessing (used in MobileNet during training on ImageNet dataset) is applied to each image before prediction via [call] stage.
 *
 * We use the preprocessing DSL to describe the dataset generation pipeline.
 * We demonstrate the workflow on the subset of Kaggle Cats vs Dogs binary classification dataset.
 */
fun mobilenetWithAdditionalTraining() {
    val modelHub = TFModelHub(cacheDirectory = File("cache/pretrainedModels"))
    val modelType = TFModels.CV.MobileNet()
    val model = modelHub.loadModel(modelType)

    val hdfFile = modelHub.loadWeights(modelType)

    model.use {
        it.compile(
            optimizer = Adam(),
            loss = Losses.MAE,
            metric = Metrics.ACCURACY
        )

        it.logSummary()
    }

    val layers = model.layers.toMutableList()
    layers.forEach(Layer::freeze)

    val lastLayer = layers.last()
    for (outboundLayer in lastLayer.inboundLayers)
        outboundLayer.outboundLayers.remove(lastLayer)

    layers.removeLast()

    var x = Dense(
        name = "top_dense",
        kernelInitializer = GlorotUniform(),
        biasInitializer = GlorotUniform(),
        outputSize = 200,
        activation = Activations.Relu
    )(layers.last())

    x = Dense(
        name = "pred",
        kernelInitializer = GlorotUniform(),
        biasInitializer = GlorotUniform(),
        outputSize = NUM_CLASSES,
        activation = Activations.Linear
    )(x)

    val model2 = Functional.fromOutput(x)

    val dogsCatsImages = dogsCatsSmallDatasetPath()
    val dataset = OnHeapDataset.create(
        File(dogsCatsImages),
        FromFolders(mapping = mapOf("cat" to 0, "dog" to 1)),
        modelType.createPreprocessing(model2)
    ).shuffle()
    val (train, test) = dataset.split(TRAIN_TEST_SPLIT_RATIO)

    model2.use {
        it.compile(
            optimizer = Adam(),
            loss = Losses.SOFT_MAX_CROSS_ENTROPY_WITH_LOGITS,
            metric = Metrics.ACCURACY
        )

        it.logSummary()

        it.loadWeightsForFrozenLayers(hdfFile)
        val accuracyBeforeTraining = it.evaluate(dataset = test, batchSize = TEST_BATCH_SIZE).metrics[Metrics.ACCURACY]
        println("Accuracy before training $accuracyBeforeTraining")

        it.fit(
            dataset = train,
            batchSize = TRAINING_BATCH_SIZE,
            epochs = EPOCHS
        )

        val accuracyAfterTraining = it.evaluate(dataset = test, batchSize = TEST_BATCH_SIZE).metrics[Metrics.ACCURACY]

        println("Accuracy after training $accuracyAfterTraining")
    }
}

/** */
fun main(): Unit = mobilenetWithAdditionalTraining()
/*
 * Copyright 2020-2022 JetBrains s.r.o. and Kotlin Deep Learning project contributors. All Rights Reserved.
 * Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file.
 */

package examples.transferlearning.modelhub.vgg19

import org.jetbrains.


attr("id") in anims)) {
				anims[row.attr("id")] = {timeout: null, pos: null};
			}
			var anim = anims[row.attr("id")];

			if(anim.timeout !== null) {
				anim.timeout.enabled = false;
			}

			var newAnimPos = (UI.scoreboard.rowHeight + UI.scoreboard.rowVSpacing) * elem.pos + UI.scoreboard.rowSelectorOffset + UI.scoreboard.vPadding;
			var newAnimOpacity = elem.pos >= 0 ? 1 : 0;
			if(anim.pos === null) {
				anim.pos = newAnimPos;
				anim.opacity = newAnimOpacity;
				row.css("top", anim.pos + "px");
				row.css("opacity", anim.opacity);
			} else if(anim.pos != newAnimPos) {
				var oldAnimPos = anim.pos;
				var oldAnimOpacity = anim.opacity;
				var startTime = new Date().getTime();
				var duration = 1500;
				var animFunc = function(t) {
					var t = (t - startTime) / duration;
					var done = t > 1;
					if(done) t = 1;

					t = movementCurve(t);
					anim.pos = (1 - t) * oldAnimPos + t * newAnimPos;
					row.css("top", anim.pos + "px");
					anim.opacity = (1 - t) * oldAnimOpacity + t * newAnimOpacity;
					row.css("opacity", anim.opacity);

					if(!done) anim.timeout = animate(animFunc);
				}
				anim.timeout = animate(animFunc);
			}
		}

		if(prevElem !== null) {
			for(var i = 0; i < problemCount; ++i) {
				(function() {
					if(
						elem.submissionCounts[i] != prevElem.submissionCounts[i] ||
						elem.scores[i] != prevElem.scores[i]
					) {
						hilightCell(row, ".score" + i);
					}
				})();
			}
		}
	});

	var logOrder = function(a, b) {
		if(a.contest != b.contest) {
			return b.contest - a.contest;
		}
		if(a.time != b.time) {
			return b.time - a.time;
		}
		if(a.type != b.type) {
			if(a.type < b.type) return -1;
			return 1;
		}
		if(a.type != "submission") {
			return 0;
		}
		if(a.contestant != b.contestant) {
			if(a.contestant < b.contestant) return -1;
			return 1;
		}
		if(a.prob != b.prob) {
			return a.prob - b.prob;
		}
		var x = a.score;
		var y = b.score;
		if(x === null) x = -1;
		if(y === null) y = -1;
		return x - y;
	};
	newLogEntries.sort(logOrder);
	tmp = newLogEntries;
	newLogEntries = [];
	for(var i = 0; i < tmp.length; ++i) {
		if(i == 0 || logOrder(tmp[i - 1], tmp[i]) != 0) {
			newLogEntries.push(tmp[i]);
		}
	}

	if(newLogEntries.length > logLines) {
		newLogEntries = newLogEntries.slice(0, logLines);
	}

	var idxA = 0;
	var idxB = 0;
	var first = true;
	var inserts = [];
	while(idxA < logEntries.length || idxB < newLogEntries.length) {
		(function() {
			var entryA = idxA < logEntries.length ? logEntries[idxA] : null;
			var entryB = idxB < newLogEntries.length ? newLogEntries[idxB] : null;
			if(entryA !== null && entryB !== null && logOrder(entryA, entryB) == 0) {
				++id


new Int16Array(c(2*e),0,e);break;case 5123:r=new Uint16Array(c(2*e),0,e);break;case 5124:r=new Int32Array(c(4*e),0,e);break;case 5125:r=new Uint32Array(c(4*e),0,e);break;case 5126:r=new Float32Array(c(4*e),0,e);break;default:return null}return r.length!==e?r.subarray(0,e):r},freeType:function(t){u(t.buffer)}},W={shape:function(t){for(var e=[];t.length;t=t[0])e.push(t.length);return e},flatten:function(t,e,r,n){var i=1;if(e.length)for(var a=0;a<e.length;++a)i*=e[a];else i=0;switch(r=n||Y.allocType(r,i),e.length){case 0:break;case 1:for(n=e[0],e=0;e<n;++e)r[e]=t[e];break;case 2:for(n=e[0],e=e[1],a=i=0;a<n;++a)for(var o=t[a],s=0;s<e;++s)r[i++]=o[s];break;case 3:f(t,e[0],e[1],e[2],r,0);break;default:h(t,e,0,r,0)}return r}},X={"[object Int8Array]":5120,"[object Int16Array]":5122,"[object Int32Array]":5124,"[object Uint8Array]":5121,"[object Uint8ClampedArray]":5121,"[object Uint16Array]":5123,"[object Uint32Array]":5125,"[object Float32Array]":5126,"[object Float64Array]":5121,"[object ArrayBuffer]":5121},Z={int8:5120,int16:5122,int32:5124,uint8:5121,uint16:5123,uint32:5125,float:5126,float32:5126},J={dynamic:35048,stream:35040,static:35044},K=W.flatten,Q=W.shape,$=[];$[5120]=1,$[5122]=2,$[5124]=4,$[5121]=1,$[5123]=2,$[5125]=4,$[5126]=4;var tt={points:0,point:0,lines:1,line:1,triangles:4,triangle:4,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6},et=new Float32Array(1),rt=new Uint32Array(et.buffer),nt=[9984,9986,9985,9987],it=[0,6409,6410,6407,6408],at={};at[6409]=at[6406]=at[6402]=1,at[34041]=at[6410]=2,at[6407]=at[35904]=3,at[6408]=at[35906]=4;var ot=Object.keys(X).concat(["[object HTMLCanvasElement]","[object CanvasRenderingContext2D]","[object HTMLImageElement]","[object HTMLVideoElement]"]),st=[];st[5121]=1,st[5126]=4,st[36193]=2,st[5123]=2,st[5125]=4;var lt=[];lt[32854]=2,lt[32855]=2,lt[36194]=2,lt[34041]=4,lt[33776]=.5,lt[33777]=.5,lt[33778]=1,lt[33779]=1,lt[35986]=.5,lt[35987]=1,lt[34798]=1,lt[35840]=.5,lt[35841]=.25,lt[35842]=.5,lt[35843]=.25,lt[36196]=.5;var ct=[];ct[32854]=2,ct[32855]=2,ct[36194]=2,ct[33189]=2,ct[36168]=1,ct[34041]=4,ct[35907]=4,ct[34836]=16,ct[34842]=8,ct[34843]=6;var ut=[];ut[6408]=4;var ft=[];


典的UUID，所以我着重介绍UUID1。

下面是UUID版本1的位域划分：

```c
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          time_low                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       time_mid                |         time_hi_and_version   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |clk_seq_hi_res |  clk_seq_low  |         node (0-1)            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                         node (2-5)                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

 typedef struct {
    unsigned32  time_low;
    unsigned16  time_mid;
    unsigned16  time_hi_and_version;
    unsigned8   clock_seq_hi_and_reserved;
    unsigned8   clock_seq_low;
    byte        node[6];
} uuid_t;
```

但位域划分是按照C结构体的表示方便来划分的，从逻辑上UUID1包括五个部分：

* 时间戳 :`time_low(32)`,` time_mid(16)`,`time_high(12)`，共60bit。
* UUID版本:`version(4)`
* UUID类型: `variant(2)`
* 时钟序列:`clock_seq(14)`
* 节点: `node(48)`，UUID1中为MAC地址。

这五个部分实际占用的位域如下图所示：

```
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                          time_low                             |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |       time_mid                |  ver  |      time_high        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |var|       clock_seq           |         node (0-1)            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-


            assertFalse(build(FastMath.nextAfter(d, Double.NEGATIVE_INFINITY), imaginary).isMathematicalInteger());
        }

        double minNoFractional = 0x1l << 52;
        assertEquals(expectedForInteger, build(minNoFractional, imaginary).isMathematicalInteger());
        assertFalse(build(minNoFractional - 0.5, imaginary).isMathematicalInteger());
        assertEquals(expectedForInteger, build(minNoFractional + 0.5, imaginary).isMathematicalInteger());

    }

    /**
     * Test standard values
     */
    @Test
    void testGetArgument() {
        FieldComplex<Binary64> z = build(1, 0);
        assertEquals(0.0, z.getArgument().getReal(), 1.0e-12);

        z = build(1, 1);
        assertEquals(FastMath.PI/4, z.getArgument().getReal(), 1.0e-12);

        z = build(0, 1);
        assertEquals(FastMath.PI/2, z.getArgument().getReal(), 1.0e-12);

        z = build(-1, 1);
        assertEquals(3 * FastMath.PI/4, z.getArgument().getReal(), 1.0e-12);

        z = build(-1, 0);
        assertEquals(FastMath.PI, z.getArgument().getReal(), 1.0e-12);

        z = build(-1, -1);
        assertEquals(-3 * FastMath.PI/4, z.getArgument().getReal(), 1.0e-12);

        z = build(0, -1);
        assertEquals(-FastMath.PI/2, z.getArgument().getReal(), 1.0e-12);

        z = build(1, -1);
        assertEquals(-FastMath.PI/4, z.getArgument().getReal(), 1.0e-12);

    }

    /**
     * Verify atan2-style handling of infinite parts
     */
    @Test
    void testGetArgumentInf() {
        assertEquals(FastMath.PI/4, infInf.getArgument().getReal(), 1.0e-12);
        assertEquals(FastMath.PI/2, oneInf.getArgument().getReal(), 1.0e-12);
        assertEquals(0.0, infOne.getArgument().getReal(), 1.0e-12);
        assertEquals(FastMath.PI/2, zeroInf.getArgument().getReal(), 1.0e-12);
        assertEquals(0.0, infZero.getArgument().getReal(), 1.0e-12);
        assertEquals(FastMath.PI, negInfOne.getArgument().getReal(), 1.0e-12);
        assertEquals(-3.0*FastMath.PI/4, negInfNegInf.getArgument().getReal(), 1.0e-12);
        assertEquals(-FastMath.PI/2, oneNegInf.getArgument().getReal(), 1.0e-12);
    }

    /**
     * Verify that either part NaN results in NaN
     */
    @Test
    void testGetArgumentNaN() {
        assertTrue(Double.isNaN(nanZero.getArgument().getReal()));
        assertTrue(Double.isNaN(zeroNaN.getArgument().getReal()));
        assertTrue(Double.isNaN(FieldComplex.getNaN(Binary64Field.getInstance()).getArgument().getReal()));
    }

    @Test
    void testValueOf() {
        assertEquals(2.0, FieldComplex.valueOf(new Binary64(2.0)).getRealPart().getReal(), 1.0e-15);
        assertEquals(0.0, FieldComplex.valueOf(new Binary64(2.0)).getImaginaryPart().getReal(), 1.0e-15);
        assertTrue(FieldComplex.valueOf(new Binary64(Double.NaN)).isNaN());
        assertTrue(FieldComplex.valueOf(new Binary64(Double.POSITIVE_INFINITY)).isInfinite());
        assertEquals( 2.0, FieldComplex.valueOf(new Binary64(2.0), new Binary64(-1.0)).getRealPart().getReal(),