 {
            if (mapRADDAM_HE[Dref][57][kkk] > 0.) {
              normchannelP += mapRADDAM_HE[Dref][57][kkk];
              pcounter++;
            }
          }  //for
          if (pcounter != 0)
            normchannelP /= pcounter;
        }
        //      cout<<"norm_channel(Dref,16) averaged over PHI: normchannelM = " << normchannelM <<   "                        normchannelP = " << normchannelP <<endl;
        //////////////////---------------------------------------
        //////////////////--------each run  normalization on channel Dref,16
        //////////////////---------------------------------------
        for (int iii = 1; iii < DepthMax; iii++) {
          for (int jjj = 1; jjj <= 82; jjj++) {
            for (int kkk = 1; kkk <= 72; kkk++) {
              if (mapRADDAM_HE[iii][jjj][kkk] > 0. && normchannelM != 0 && jjj < 42 && kdirection == 0) {
                mapRADDAM_HE[iii][jjj][kkk] /= normchannelM;
              }
              if (mapRADDAM_HE[iii][jjj][kkk] > 0. && normchannelP != 0 && jjj > 41 && kdirection == 1) {
                mapRADDAM_HE[iii][jjj][kkk] /= normchannelP;
              }
            }  //for
          }    //for
        }      //for

      }  // variant2

      //////////////////---------------------------------------
      //////////////////---------------------------------------
      //////////////////---------------------------------------
      //                                               then, avereaging over phi, but first sum over phi before!!! any dividing:
      //////////////////---------------------------------------
      for (int iii = 1; iii < DepthMax; iii++) {
        for (int jjj = 1; jjj <= 82; jjj++) {
          for (int kkk = 1; kkk <= 72; kkk++) {
            if (mapRADDAM_HE[iii][jjj][kkk] > 0) {
              //	    if(mapRADDAM_HE[iii][jjj][kkk]< 0.031)  cout<<"*****   depth = " << iii <<" k1 = " << k1 <<" eta = " << jjj <<" phi = " << kkk <<" mapRADDAM_ijk = " <<     mapRADDAM_HE[iii][jjj][kkk] <<endl;
              // control histoes to reject bad channels using Rijk:
              rwithphi->Fill(mapRADDAM_HE[iii][jjj][kkk]);

              // use only good(rwithphi) Rijk channels:
              if ((mapRADDAM_HE[iii][jjj][kkk] > CutrwithphiMin && mapRADDAM_HE[iii][jjj][kkk] < CutrwithphiMax &&
                   variant != 2) ||
                  (mapRADDAM_HE[iii][jjj][kkk] > CutrwithphiMinVar2 &&
                   mapRADDAM_HE[iii][jjj][kkk] < CutrwithphiMaxVar2 && variant == 2)) {
                // control only! histoes to reject bad channels using RRijk (rrwithphiM & rrwithphiP) :
                Double_t RRrrRr = 0.;
                if (variant != 2) {
                  if (jjj < 42 && kdirection == 0) {
                    if (mapRADDAM_HE[Dref][26][kkk] != 0) {
                      RRrrRr = mapRADDAM_HE[iii][jjj][kkk] / mapRADDAM_HE[Dref][26][kkk];
                      rrwithphiM->Fill(RRrrRr);
                    }
                  } else if (jjj > 41 && kdirection == 1) {
                    if (mapRADDAM_HE[Dref][57][kkk] != 0) {
                      RRrrRr = mapRADDAM_HE[iii][jjj][kkk] / mapRADDAM_HE[Dref][57][kkk];
                      rrwit


item.index];
					}
				}

				return title;
			},
			afterTitle: helpers$1.noop,

			// Args are: (tooltipItems, data)
			beforeBody: helpers$1.noop,

			// Args are: (tooltipItem, data)
			beforeLabel: helpers$1.noop,
			label: function(tooltipItem, data) {
				var label = data.datasets[tooltipItem.datasetIndex].label || '';

				if (label) {
					label += ': ';
				}
				if (!helpers$1.isNullOrUndef(tooltipItem.value)) {
					label += tooltipItem.value;
				} else {
					label += tooltipItem.yLabel;
				}
				return label;
			},
			labelColor: function(tooltipItem, chart) {
				var meta = chart.getDatasetMeta(tooltipItem.datasetIndex);
				var activeElement = meta.data[tooltipItem.index];
				var view = activeElement._view;
				return {
					borderColor: view.borderColor,
					backgroundColor: view.backgroundColor
				};
			},
			labelTextColor: function() {
				return this._options.bodyFontColor;
			},
			afterLabel: helpers$1.noop,

			// Args are: (tooltipItems, data)
			afterBody: helpers$1.noop,

			// Args are: (tooltipItems, data)
			beforeFooter: helpers$1.noop,
			footer: helpers$1.noop,
			afterFooter: helpers$1.noop
		}
	}
});

var positioners = {
	/**
	 * Average mode places the tooltip at the average position of the elements shown
	 * @function Chart.Tooltip.positioners.average
	 * @param elements {ChartElement[]} the elements being displayed in the tooltip
	 * @returns {object} tooltip position
	 */
	average: function(elements) {
		if (!elements.length) {
			return false;
		}

		var i, len;
		var x = 0;
		var y = 0;
		var count = 0;

		for (i = 0, len = elements.length; i < len; ++i) {
			var el = elements[i];
			if (el && el.hasValue()) {
				var pos = el.tooltipPosition();
				x += pos.x;
				y += pos.y;
				++count;
			}
		}

		return {
			x: x / count,
			y: y / count
		};
	},

	/**
	 * Gets the tooltip position nearest of the item nearest to the event position
	 * @function Chart.Tooltip.positioners.nearest
	 * @param elements {Chart.Element[]} the tooltip elements
	 * @param eventPosition {object} the position of the event in canvas coordinates
	 * @returns {object} the tooltip position
	 */
	nearest: function(elements, eventPosition) {
		var x = eventPosition.x;
		var y = eventPosition.y;
		var minDistance = Number.POSITIVE_INFINITY;
		var i, len, nearestElement;

		for (i = 0, len = elements.length; i < len; ++i) {
			var el = elements[i];
			if (el && el.hasValue()) {
				var center = el.getCenterPoint();
				var d = helpers$1.distanceBetweenPoints(eventPosition, center);

				if (d < minDistance) {
					minDistance = d;
					nearestElement = el;
				}
			}
		}

		if (nearestElement) {
			var tp = nearestElement.tooltipPosition();
			x = tp.x;
			y = tp.y;
		}

		return {
			x: x,
			y: y
		};
	}
};

// Helper to push or concat based on if the 2nd parameter is an array or not
function pushOrConcat(base, toPush) {
	if (toPush) {
		if (helpers$1.isArray(toPush)) {
			// base = base.concat(toPush);
			Array.prototype.push.apply(base, toPush);
		} else {
			base.push(toPush);
		}
	}

	return base;
}

/**
 * Returns array of str


g.INFLATE)}function u(t){if(!(this instanceof u))return new u(t);p.call(this,t,g.GZIP)}function l(t){if(!(this instanceof l))return new l(t);p.call(this,t,g.GUNZIP)}function c(t){if(!(this instanceof c))return new c(t);p.call(this,t,g.DEFLATERAW)}function f(t){if(!(this instanceof f))return new f(t);p.call(this,t,g.INFLATERAW)}function h(t){if(!(this instanceof h))return new h(t);p.call(this,t,g.UNZIP)}function p(n,r){if(this._opts=n=n||{},this._chunkSize=n.chunkSize||e.Z_DEFAULT_CHUNK,d.call(this,n),n.flush&&n.flush!==g.Z_NO_FLUSH&&n.flush!==g.Z_PARTIAL_FLUSH&&n.flush!==g.Z_SYNC_FLUSH&&n.flush!==g.Z_FULL_FLUSH&&n.flush!==g.Z_FINISH&&n.flush!==g.Z_BLOCK)throw new Error("Invalid flush flag: "+n.flush);if(this._flushFlag=n.flush||g.Z_NO_FLUSH,n.chunkSize&&(n.chunkSize<e.Z_MIN_CHUNK||n.chunkSize>e.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+n.chunkSize);if(n.windowBits&&(n.windowBits<e.Z_MIN_WINDOWBITS||n.windowBits>e.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+n.windowBits);if(n.level&&(n.level<e.Z_MIN_LEVEL||n.level>e.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+n.level);if(n.memLevel&&(n.memLevel<e.Z_MIN_MEMLEVEL||n.memLevel>e.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+n.memLevel);if(n.strategy&&n.strategy!=e.Z_FILTERED&&n.strategy!=e.Z_HUFFMAN_ONLY&&n.strategy!=e.Z_RLE&&n.strategy!=e.Z_FIXED&&n.strategy!=e.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+n.strategy);if(n.dictionary&&!t.isBuffer(n.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._binding=new g.Zlib(r);var i=this;this._hadError=!1,this._binding.onerror=function(t,n){i._binding=null,i._hadError=!0;var r=new Error(t);r.errno=n,r.code=e.codes[n],i.emit("error",r)};var o=e.Z_DEFAULT_COMPRESSION;"number"==typeof n.level&&(o=n.level);var a=e.Z_DEFAULT_STRATEGY;"number"==typeof n.strategy&&(a=n.strategy),this._binding.init(n.windowBits||e.Z_DEFAULT_WINDOWBITS,o,n.memLevel||e.Z_DEFAULT_MEMLEVEL,a,n.dictionary),this._buffer=new t(this._chunkSize),this._offset=0,this._closed=!1,this._level=o,this._strategy=a,this.once("end",this.close)}var d=n(54),g=n(60),y=n(72),v=n(75).ok;g.Z_MIN_WINDOWBITS=8,g.Z_MAX_WINDOWBITS=15,g.Z_DEFAULT_WINDOWBITS=15,g.Z_M


;
                    }
                    thread::sleep(config.tick_rate);
                })
            },
        }
    }

    pub(crate) fn next(&self) -> Result<Event<Key>, mpsc::RecvError> {
        self.rx.recv()
    }
}
/*! Declarative approach to adapting input data in one format to output data in another.

Example:

```js
adapt from: neut_deg  to: enut_rad
```

We introduce the coordinate type designations *eastish, northish, upish, timish*,
and their geometrical inverses *westish, southish, downish, reversed-timeish*,
with mostly evident meaning: A coordinate is *eastish* if you would typically draw
it along an abscissa, *northish* if you would typically draw it along an ordinate,
*upish* if you would need to draw it out of the paper, and "timeish"
if it represents ordinary, forward evolving time. *Westish, southish, downish*, and
*reversed-timeish* are the axis-reverted versions of the former four.

These 8 spatio-temporal directional designations have convenient short forms,
`e, n, u, t` and `w, s, d, r`, respectively.

Also, we introduce the 3 common angular representations "degrees, gradians, radians",
conveniently abbrevieated as "deg", "gon" and "rad".

The Rust Geodesy internal format of a four dimensional coordinate tuple is e, n, u, t,
and the internal unit of measure for anglular coordinates is radians. In `adapt`, terms,
this is described as `enut_rad`.

`adapt` covers the same ground as the `PROJ` operator `axisswap`, but using a somewhat
different approach: You never tell `adapt` what you want it to do - you only tell it
what you want to go `from`, and what you want to come `to` (and in most cases actually
only one of those). Then `adapt` figures out how to fulfill the order.

The example above specifies that an input coordinate tuple with coordinate order
**latitude, longitude, height, time**, with latitude and longitude in degrees, should be
converted to an output coordinate in radians and with latitude and longitude swapped.
That output format is identical to the default internal format, so it can actually
be left out, and the order be written as:

```gys
adapt from: neut_deg
```

Typically, `adapt` is used in both ends of a pipeline, to match data between the
RG internal representation and the requirements of the embedding system:

```gys
adapt from: neut_deg | cart ... | helmert ... | cart inv ... | adapt to: neut_deg
```

Note that `adapt to: ...` and `adapt inv from: ...` are equivalent. The latter
form is useful when using RG's predefined symbolic definitions, as in:

```gys
geo | cart ... | helmert ... | cart inv ... | geo inv
```

!*/

use super::OperatorArgs;
use super::OperatorCore;
use crate::operator_construction::*;
use crate::Context;
use crate::CoordinateTuple;
use crate::GeodesyError;

pub struct Adapt {
    args: OperatorArgs,
    inverted: bool,
    post: [usize; 4],
    mult: [f64; 4],
    noop: bool,
}

#[derive(Debug, Default, Clone)]
struct CoordinateOrderDescriptor {
    post: [usize; 4],
    mult: [f64; 4],
    noop: bool,
}

#[allow(clippy::float_cmp)]
fn descriptor(desc: &str) -> Option<CoordinateOrderDescriptor> {
    let mut post = [0_usize, 1, 2, 3];
    let mut mult = [1_f64, 1., 1., 1.];
    if desc == "pass" {
        return Some(CoordinateOrderDescriptor {
            post,


);
            match res {
                Ok(res) => res.into(),
                Err(err) => err.as_response_error().error_response(),
            }
        };

        let inner_http_res = inner_http_res
            .map_body(|head, body| log_res("VAU Inner Response", head, body, request_tag));

        let inner_res = log_err!(
            encode(decoded.request_id, inner_http_res).await,
            "Error while encoding VAU payload: {:?}"
        )?;

        let body = log_err!(
            this.encrypter.encrypt(&decoded.response_key, inner_res),
            "Error while encrypting VAU payload: {:?}"
        )?;

        let res = HttpResponse::Ok()
            .content_type(ContentType::octet_stream().try_into()?)
            .header("Userpseudonym", np)
            .body(body);
        let res = ServiceResponse::new(outer_http_req, res);

        Ok(res)
    }

    async fn handle_vau_cert_request(self, req: ServiceRequest) -> Result<S::Response, ActixError> {
        if req.head().method != Method::GET {
            return Ok(method_not_allowed(req));
        }

        let (req, _payload) = req.into_parts();
        let pki_store = req
            .app_data::<Data<PkiStore>>()
            .expect("Shared data 'PkiStore' is missing!");
        let cert = pki_store
            .enc_cert()
            .to_der()
            .map_err(VauError::OpenSslError)?;

        let res = HttpResponse::Ok()
            .content_type(ContentType::octet_stream().try_into()?)
            .body(cert);
        let res = ServiceResponse::new(req, res);

        Ok(res)
    }

    async fn handle_vau_ocsp_request(self, req: ServiceRequest) -> Result<S::Response, ActixError> {
        if req.head().method != Method::GET {
            return Ok(method_not_allowed(req));
        }

        let (req, _payload) = req.into_parts();
        let pki_store = req
            .app_data::<Data<PkiStore>>()
            .expect("Shared data 'PkiStore' is missing!");

        let ocsp_vau = pki_store.ocsp_vau();
        let res = match &*ocsp_vau {
            Some(ocsp_vau) => {
                let body = ocsp_vau.to_der().map_err(VauError::OpenSslError)?;

                HttpResponse::Ok()
                    .content_type(ContentType::octet_stream().try_into()?)
                    .body(body)
            }
            None => HttpResponse::NotFound().finish(),
        };

        drop(ocsp_vau);

        let res = ServiceResponse::new(req, res);

        Ok(res)
    }

    #[cfg(feature = "vau-compat")]
    async fn handle_normal_request(self, req: ServiceRequest) -> Result<S::Response, ActixError> {
        let access_token = extract_access_token(&req, None);

        match access_token {
            Ok(()) => (),
            Err(err) => {
                let uri = req.head().uri.path();

                if !URI_WHITELIST.contains(&uri) {
                    log_err!(only_err, &err, "Error while extracting ACCESS_TOKEN: {:?}");

                    return Err(RequestError::AccessTokenError(err)
                        .with_type_from(&req)
                        .into());
                }
            }
        }

        self.0.borrow_mut().service.c


using Aiursoft.ArrayDb.Benchmark.Abstractions;
using Aiursoft.ArrayDb.Benchmark.Extensions;
using Aiursoft.ArrayDb.Benchmark.Models;

namespace Aiursoft.ArrayDb.Benchmark.TestCases;

public class Add1KItems1KTimesTest : ITestCase
{
    public string TestCaseName => "Add 1K items 1K times";

    public async Task<TestResult> RunAsync(TestTarget target)
    {
        var dataToAdd = TestEntityFactory.CreateSome(Program.OneKilo);
        var serialRunTime = await TimeExtensions.RunTest(target, t =>
        {


this._context=a,this.utils=new f(a)};g.prototype={isReplacing:!0,run:function(a){return this._visitor.visit(a)},visitRule:function(a,b){if(!a.blocksVisibility()&&!a.variable)return a},visitMixinDefinition:function(a,b){a.frames=[]},visitExtend:function(a,b){},visitComment:function(a,b){if(!a.blocksVisibility()&&!a.isSilent(this._context))return a},visitMedia:function(a,b){var c=a.rules[0].rules;return a.accept(this._visitor),b.visitDeeper=!1,this.utils.resolveVisibility(a,c)},visitImport:function(a,b){if(!a.blocksVisibility())return a},visitDirective:function(a,b){return a.rules&&a.rules.length?this.visitDirectiveWithBody(a,b):this.visitDirectiveWithoutBody(a,b)},visitDirectiveWithBody:function(a,b){function c(a){var b=a.rules;return 1===b.length&&(!b[0].paths||0===b[0].paths.length)}function d(a){var b=a.rules;return c(a)?b[0].rules:b}var e=d(a);return a.accept(this._visitor),b.visitDeeper=!1,this.utils.isEmpty(a)||this._mergeRules(a.rules[0].rules),this.utils.resolveVisibility(a,e)},visitDirectiveWithoutBody:function(a,b){if(!a.blocksVisibility()){if("@charset"===a.name){if(this.charset){if(a.debugInfo){var c=new d.Comment("/* "+a.toCSS(this._context).replace(/\n/g,"")+" */\n");return c.debugInfo=a.debugInfo,this._visitor.visit(c)}return}this.charset=!0}return a}},checkValidNodes:function(a,b){if(a)for(var c=0;c<a.length;c++){var e=a[c];if(b&&e instanceof d.Rule&&!e.variable)throw{message:"Properties must be inside selector blocks. They cannot be in the root",index:e.index,filename:e.currentFileInfo&&e.currentFileInfo.filename};if(e instanceof d.Call)throw{message:"Function '"+e.name+"' is undefined",index:e.index,filename:e.currentFileInfo&&e.currentFileInfo.filename};if(e.type&&!e.allowRoot)throw{message:e.type+" node returned by a function is not valid here",index:e.index,filename:e.currentFileInfo&&e.currentFileInfo.filename}}},visitRuleset:function(a,b){var c,d=[];if(this.checkValidNodes(a.rules,a.firstRoot),a.root)a.accept(this._visitor),b.visitDeeper=!1;else{this._compileRulesetPaths(a);for(var e=a.rules,f=e?e.length:0,g=0;g<f;)c=e[g],c&&c.rules?(d.push(this._visitor.visit(c)),e.splice(g,1),f--):g++;f>0?a.accept(this._visitor):a.rules=null,b.visitDeeper=!1}return a.rules&&(this._mergeRules(a.rules),this._removeDuplicateRules(a.rules)),this.utils.isVisibleRuleset(a)&&(a.ensureVisibility(),d.


# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.

from typing import Optional

from .access_token_provider_base import AccessTokenProviderBase

class AnonymousTokenProvider(AccessTokenProviderBase):
    """
    A class that provides an anonymous token for authentication.
    This is used when no authentication is required.
    """

    async def get_access_token(
        self, resource_url: str, scopes: list[str], force_refresh: bool = False
    ) -> str:
        return ""

    async def acquire_token_on_behalf_of(
        self, scopes: list[str], user_assertion: str
    ) -> str:
        return ""

    async def get_agentic_application_token(
        self, agent_app_instance_id: str
    ) -> Optional[str]:
        return ""

    async def get_agentic_instance_token(
        self, agent_app_instance_id: str
    ) -> tuple[str, str]:
        return "", ""

    async def get_agentic_user_token(
        self, agent_app_instance_id: str, upn: str, scopes: list[str]
    ) -> Optional[str]:
        return ""


ance .ace_gutter-layer,
.ace-ambiance .ace_text-layer {
  background-image: url("../ambiance-1.png");
}

.ace-ambiance .ace_indent-guide {
  background: url("../ambiance-2.png") right repeat-y;
}

.ace-ambiance .ace_indent-guide-active {
  background: url("../ambiance-3.png") right repeat-y;
}
/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: EE3AD170-2B7F-4DE1-B724-C75F13FE0085) */

.ace-xcode .ace_gutter {
  background: #e8e8e8;
  color: #333
}

.ace-xcode .ace_print-margin {
  width: 1px;
  background: #e8e8e8
}

.ace-xcode {
  background-color: #FFFFFF;
  color: #000000
}

.ace-xcode .ace_cursor {
  color: #000000
}

.ace-xcode .ace_marker-layer .ace_selection {
  background: #B5D5FF
}

.ace-xcode.ace_multiselect .ace_selection.ace_start {
  box-shadow: 0 0 3px 0px #FFFFFF;
}

.ace-xcode .ace_marker-layer .ace_step {
  background: rgb(198, 219, 174)
}

.ace-xcode .ace_marker-layer .ace_bracket {
  margin: -1px 0 0 -1px;
  border: 1px solid #BFBFBF
}

.ace-xcode .ace_marker-layer .ace_active-line {
  background: rgba(0, 0, 0, 0.071)
}

.ace-xcode .ace_gutter-active-line {
  background-color: rgba(0, 0, 0, 0.071)
}

.ace-xcode .ace_marker-layer .ace_selected-word {
  border: 1px solid #B5D5FF
}

.ace-xcode .ace_constant.ace_language,
.ace-xcode .ace_keyword,
.ace-xcode .ace_meta,
.ace-xcode .ace_variable.ace_language {
  color: #C800A4
}

.ace-xcode .ace_invisible {
  color: #BFBFBF
}

.ace-xcode .ace_constant.ace_character,
.ace-xcode .ace_constant.ace_other {
  color: #275A5E
}

.ace-xcode .ace_constant.ace_numeric {
  color: #3A00DC
}

.ace-xcode .ace_entity.ace_other.ace_attribute-name,
.ace-xcode .ace_support.ace_constant,
.ace-xcode .ace_support.ace_function {
  color: #450084
}

.ace-xcode .ace_fold {
  background-color: #C800A4;
  border-color: #000000
}

.ace-xcode .ace_entity.ace_name.ace_tag,
.ace-xcode .ace_support.ace_class,
.ace-xcode .ace_support.ace_type {
  color: #790EAD
}

.ace-xcode .ace_storage {
  color: #C900A4
}

.ace-xcode .ace_string {
  color: #DF0002
}

.ace-xcode .ace_comment {
  color: #008E00
}

.ace-xcode .ace_indent-guide {
  background: url("../xcode-1.png") right repeat-y
}

.ace-xcode .ace_indent-guide-active {
  background: url("../xcode-2.png") right repeat-y;
}
.ace-chaos .ace_gutter {
  background: #


lse,
                    area: ['30%', '25%'],
                    offset: ['30%', '32%'],
					content: miniPage2.getHrefContent('page/cluster/namespace/add.html')
                });
            }
        });

        table2.on('tool(namespaceTableFilter)', function (obj) {
			if (obj.event === 'namespace-delete') {
                doDelete($, clusterId, obj.data.namespaceName);
            }
			return false;
        });
    });

	//删除
	function doDelete($, clusterId, namespaceName) {
		var msg = "同时会删除" + namespaceName + "下的所有资源，确定删除吗？";
		layer.confirm(msg, {icon: 0, title: '警告提示'}, function (index) {
			layer.close(index);
			$.ajax({
				url: '/cluster/namespace/delete',
				type: 'POST',
				dataType: "json",
				contentType: 'application/json;charset=UTF-8',
				data: JSON.stringify({"clusterId": clusterId, "namespaceName": namespaceName}),
				success: function(data){
					if(data.code != "000000"){
						layer.msg(data.message, {icon: 5, shift: 6});
						return false;
					}

					layer.msg("删除成功", {
						icon: 1,
						time: 700,
						shade: 0.01,
						shadeClose: false}, function(){
						layui.table.reload('namespaceTableId');
					});
				},
				error: function(data){
					layer.msg(data.message, {icon: 5, shift: 6});
				}
			});
		});
	}
</script>

			节点名称

				<input type="text" name="nodeName" lay-verify="required" lay-reqtext="节点名称不能为空" placeholder="请输入节点名称" autocomplete="off" class="layui-input">

		<input type="hidden" name="clusterId" id="clusterId">

				<button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>

<!DOCTYPE html>

	<title></title>
	<meta name="


-open):not(.dz-collapse-close) > .dz-collapse-title {
	cursor: pointer;
}
.dz-collapse:focus:not(.dz-collapse-open):not(.dz-collapse-close):not(.dz-collapse[open]) > .dz-collapse-title {
	cursor: unset;
}
.dz-collapse-title {
	position: relative;
}
:where(.dz-collapse > input[type="checkbox"]),
:where(.dz-collapse > input[type="radio"]) {
	z-index: 1;
}
.dz-collapse-title,
:where(.dz-collapse > input[type="checkbox"]),
:where(.dz-collapse > input[type="radio"]) {
	width: 100%;
	padding: 1rem;
	padding-right: 3rem;
	min-height: 3.75rem;
	transition: background-color 0.2s ease-out;
}
.dz-collapse[open] > :where(.dz-collapse-content),
.dz-collapse-open > :where(.dz-collapse-content),
.dz-collapse:focus:not(.dz-collapse-close) > :where(.dz-collapse-content),
.dz-collapse:not(.dz-collapse-close) > :where(input[type="checkbox"]:checked ~ .dz-collapse-content),
.dz-collapse:not(.dz-collapse-close) > :where(input[type="radio"]:checked ~ .dz-collapse-content) {
	padding-bottom: 1rem;
	transition: padding 0.2s ease-out,
    background-color 0.2s ease-out;
}
.dz-collapse[open].dz-collapse-arrow > .dz-collapse-title:after,
.dz-collapse-open.dz-collapse-arrow > .dz-collapse-title:after,
.dz-collapse-arrow:focus:not(.dz-collapse-close) > .dz-collapse-title:after,
.dz-collapse-arrow:not(.dz-collapse-close) > input[type="checkbox"]:checked ~ .dz-collapse-title:after,
.dz-collapse-arrow:not(.dz-collapse-close) > input[type="radio"]:checked ~ .dz-collapse-title:after {
	--tw-translate-y: -50%;
	--tw-rotate: 225deg;
	transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
[dir="rtl"] .dz-collapse[open].dz-collapse-arrow > .dz-collapse-title:after,
[dir="rtl"] .dz-collapse-open.dz-collapse-arrow > .dz-collapse-title:after,
[dir="rtl"] .dz-collapse-arrow:focus:not(.dz-collapse-close) .dz-collapse-title:after,
[dir="rtl"]
  .dz-collapse-arrow:not(.dz-collapse-close)
  input[type="checkbox"]:checked
  ~ .dz-collapse-title:after {
	--tw-rotate: 135deg;
}
.dz-collapse[open].dz-collapse-plus > .dz-collapse-title:after,
.dz-collapse-open.dz-collapse-plus > .dz-collapse-title:after,
.dz-collapse-plus:focus:not(.dz-collapse-close) > .dz-collapse-title:after,
.dz-collapse-plus:not(.dz-collapse-close) > input[type="checkbox"]:checked ~ .dz-collapse-title:after,
.dz-collapse-plus:not(.dz-collapse-close) > input[type="radio"]:checked ~ .dz-collapse-title:after {
	content: "−";
}
.dz-dropdo


output `dimensions` field, and
         * inherit the upstream dimensions definition. It can reduce the burden of handling
         * dimensions in transformers.
         *
         * See also [DIMENSION_INHERIT_RULE] in `sourceManager.ts`.
         */

        if (firstUpSource && resultIndex === 0 // If transformer returns `dimensions`, it means that the transformer has different
        // dimensions definitions. We do not inherit anything from upstream.
        && !result.dimensions) {
          var startIndex = firstUpSource.startIndex; // We copy the header of upstream to the result becuase:
          // (1) The returned data always does not contain header line and can not be used
          // as dimension-detection. In this case we can not use "detected dimensions" of
          // upstream directly, because it might be detected based on different `seriesLayoutBy`.
          // (2) We should support that the series read the upstream source in `seriesLayoutBy: 'row'`.
          // So the original detected header should be add to the result, otherwise they can not be read.

          if (startIndex) {
            result.data = firstUpSource.data.slice(0, startIndex).concat(result.data);
          }

          resultMetaRawOption = {
            seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,
            sourceHeader: startIndex,
            dimensions: firstUpSource.metaRawOption.dimensions
          };
        } else {
          resultMetaRawOption = {
            seriesLayoutBy: SERIES_LAYOUT_BY_COLUMN,
            sourceHeader: 0,
            dimensions: result.dimensions
          };
        }

        return createSource(result.data, resultMetaRawOption, null);
      });
    }

    function isSupportedSourceFormat(sourceFormat) {
      return sourceFormat === SOURCE_FORMAT_ARRAY_ROWS || sourceFormat === SOURCE_FORMAT_OBJECT_ROWS;
    }

    var UNDEFINED = 'undefined';
    /* global Float64Array, Int32Array, Uint32Array, Uint16Array */
    // Caution: MUST not use `new CtorUint32Array(arr, 0, len)`, because the Ctor of array is
    // different from the Ctor of typed array.

    var CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;
    var CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;
    var CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;
    var CtorFloat64Array = typeof Float64Array === UNDEFINED ? Array : Float64Array;
    /**
     * Multi dimensional data store
     */

    var dataCtors = {
      'float': CtorFloat64Array,
      'int': CtorInt32Array,
      // Ordinal data type can be string or int
      'ordinal': Array,
      'number': Array,
      'time': CtorFloat64Array
    };
    var defaultDimValueGetters;

    function getIndicesCtor(rawCount) {
      // The possible max value in this._indicies is always this._rawCount despite of filtering.
      return rawCount > 65535 ? CtorUint32Array : CtorUint16Array;
    }

    function getInitialExtent() {
      return [Infinity, -Infinity];
    }

    function cloneChunk(originalChunk) {
      var Ctor = originalChunk.constructor; // Only shallow clone is enough when Array.

      return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk);
    }

    function prepareStore(store, dimIdx, dimType, end, append) {
      var DataCtor = dataCtors[dimType || 'float'];

      if (append) {
        var oldStore = store[dimIdx];
        var oldLen = oldStore && oldStore.length;

        if (!(oldLen === end)) {
          var newStore = new DataCtor(end); // The cost of the copy is probably inconsiderable
          // within the initial chunkSize.

          for (var j = 0; j < oldLen; j++) {
            newStore[j] = oldStore[j];
          }

          store[dimIdx] =


/* 00940 80AEB550 460A303E */  c.le.s  $f6, $f10
/* 00944 80AEB554 00000000 */  nop
/* 00948 80AEB558 4502000D */  bc1fl   .L80AEB590
/* 0094C 80AEB55C 8FBF0014 */  lw      $ra, 0x0014($sp)
/* 00950 80AEB560 84461456 */  lh      $a2, 0x1456($v0)           ## 80161456
/* 00954 80AEB564 AFA40018 */  sw      $a0, 0x0018($sp)
/* 00958 80AEB568 00003825 */  or      $a3, $zero, $zero          ## $a3 = 00000000
/* 0095C 80AEB56C 24C601F4 */  addiu   $a2, $a2, 0x01F4           ## $a2 = 000001F4
/* 00960 80AEB570 00063400 */  sll     $a2, $a2, 16
/* 00964 80AEB574 0C2BAD2A */  jal     func_80AEB4A8
/* 00968 80AEB578 00063403 */  sra     $a2, $a2, 16
/* 0096C 80AEB57C 8FA40018 */  lw      $a0, 0x0018($sp)
/* 00970 80AEB580 44804000 */  mtc1    $zero, $f8                 ## $f8 = 0.00
/* 00974 80AEB584 00000000 */  nop
/* 00978 80AEB588 E4880270 */  swc1    $f8, 0x0270($a0)           ## 00000270
/* 0097C 80AEB58C 8FBF0014 */  lw      $ra, 0x0014($sp)
.L80AEB590:
/* 00980 80AEB590 27BD0018 */  addiu   $sp, $sp, 0x0018           ## $sp = 00000000
/* 00984 80AEB594 03E00008 */  jr      $ra
/* 00988 80AEB598 00000000 */  nop


btn_box_mask .play_btn img:hover {
  opacity: 1;
}
.container .banner_box .home_btn_box .home_btn_box_mask .play_btn p {
  width: 280px;
  margin-left: 25px;
  color: #dbd2d2;
  font-size: 13px;
  line-height: 19px;
}
.container .bannerg_box {
  background: url('../../images/bgaaa.jpg') no-repeat center;
  background-size: cover;
}
.container .bannerg_box .home_btn_box_g {
  width: 1120px;
  margin: auto;
  margin-top: 243px;
  color: #fff;
  text-align: left;
}
.container .bannerg_box .home_btn_box_g .til {
  font-size: 36px;
}
.container .bannerg_box .home_btn_box_g .line {
  width: 50px;
  height: 4px;
  background: #ffffff;
  float: left;
  margin-top: 38px;
}
.container .bannerg_box .home_btn_box_g .dh {
  font-size: 36px;
  margin-top: 80px;
}
.container .bannerg_box .home_btn_box_g .date {
  margin-top: 46px;
  font-size: 30px;
}
.container .bannern_box {
  background: url('../../images/banner-web.png') no-repeat center;
  background-size: cover;
}
.container .bannern_box .home_btn_box_g {
  padding-left: 30px;
  width: 1200px;
  margin: auto;
  margin-top: 256px;
  color: #fff;
}
.container .bannern_box .home_btn_box_g .til {
  font-size: 50px;
  font-family: Arial-Black;
  font-weight: 900;
}
.container .bannern_box .home_btn_box_g .til span {
  font-size: 30px;
  font-family: PingFangSC-Regular;
  font-weight: normal;
}
.container .bannern_box .home_btn_box_g .text {
  height: 50px;
  font-size: 35px;
  line-height: 50px;
  margin-top: 10px;
}
.container .bannern_box .home_btn_box_g .line {
  width: 50px;
  height: 4px;
  background: #ffffff;
  float: left;
  margin-top: 34px;
}
@media screen and (max-width: 1400px) {
  .container .banner_box {
    width: 100%;
    height: 560px;
    margin: auto;
    background: url('https://jdi.cocosbcx.net/image/cocosbcx/banner24.jpg') no-repeat center;
    background-size: cover;
    overflow: hidden;
    transition: transform 0.5s;
    -webkit-transition: transform 0.5s;
    -moz-transition: transform 0.5s;
    -o-transition: transform 0.5s;
  }
  .container .banner_box .home_btn_box {
    width: 862px;
    margin: auto;
    margin-top: 225px;
  }
  .container .bannerg_box {
    background: url('../../images/bgaaa.jpg') no-repeat center;
    background-size: cover;
  }
  .container .bannerg_box .home_btn_box_g {
    width: 1120px;
    margin: auto;
    margin-top: 263px;
    color: #fff;
    text-align: left;
    zoom: .75;


ert.","IntroductionText":"CodeJudge er designet til at forbedre oplevelsen af at lære, hvordan man programmerer. Efter et program er kodet og testet, kan CodeJudge benyttes til hurtigt at få verificeret om programmet er korrekt er eller ej. Man behøver blot at uploade ens program til CodeJudge, derefter vil nogle tests blive kørt automatisk på det, og resultatet af disse tests vil blive vist indenfor få sekunder. Man vil derfor hurtigt få at vide om ens program er korrekt, og hvis det ikke er, vil CodeJudge give god feedback fra de(n) fejlende test(s) til at hjælpe en med at finde fejlen.","InQueueText":"Løsningen venter på, at systemet begynder at evaluere programmet. Afhængigt af belastningen på systemet, burde dette kun tage få sekunder.","SystemErrorText":"En ukendt system fejl opstod. Vi undersøger sagen hurtigst muligt - prøv evt. at uploade igen.","ExerciseErrorText":"Der er et opsætningsproblem med opgaven. Kontakt den opgaveansvarlige.","Groups":"Grupper","ProcessingText":"Løsningen bliver først kompileret, og hvis den kompileres succesfuldt, bliver den testet på testdataen.","HowToSubmitText2":"Til hver submission kan en kommentar tilknyttes, som så vil blive vist i listen af submissions. Kommentaren er kun til en selv for at kunne holde styr på sine submissions, for eksempel kunne en kommentar være \\"løsning med ArrayList\\" e.lign.","HowToSubmitText1":"For at indsende en løsning, på opgave-siden vælg da først hvilket sprog løsningen er kodet i (hvis flere sprog er tilgængelige). Dernæst kan kildekoden enten direkte kopieres ind i tekstfeltet under, eller filen med kildekoden kan uploades. Hvis løsningen består af flere filer, skal disse filer enten uploades en af gangen eller som en zip-fil. Hvis  løsningen har en bestemt mappestruktur skal denne mappestruktur uploades som en zip-fil. Til sidst tryk da på \'indsend\'-knappen.","TestFailedText":"Løsningen fejlede på én eller flere af testene.","SubmittedText":"Løsningen klarede alle synlige tests, men opgaven har stadig nogle usynlige tests, for hvilke resultatet er ukendt.","Submissions":"Submissions","TestTimeLimitText":"Programmet blev stoppet fordi det kørte for længe (om programmet virkede korrekt er ikke til at afgøre, da det blev stoppet før tid). Dette kan f.eks. skyldes at koden aldrig terminerer (uendelige løkker), eller at koden er for langsom til at udføre sin opgave.","ExercisesText1":"En opgave på CodeJudge svarer til en programmeringsopgave fra dit kursus. Når en løsning til opgaven er programmeret, kan den blive indsendt til CodeJudge for automatisk at blive testet (kaldet en submission).","ExercisesText3":"Til en opgave kan der være vedhæftet relevante filer (som header filer, skabeloner osv.), som kan blive downloadet. Den første test og det tilsvarende forventede output kan også blive vist, før man indsender sin første løsning. Efter en opgave er blevet løst, kan en vejledende løsning blive vist (hvis en er blevet lagt op).","ExercisesText2":"Opaverne under \'Opgaver\'-fanen er tiltænkt som træningsop


/*
    ChibiOS - Copyright (C) 2006,2007,2008,2009,2010,2011,2012,2013,2014,
              2015,2016,2017,2018,2019,2020,2021 Giovanni Di Sirio.

    This file is part of ChibiOS.

    ChibiOS is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation version 3 of the License.

    ChibiOS is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

/**
 * @file    e200/compilers/GHS/chcoreasm.S
 * @brief   Power Architecture port low level code.
 *
 * @addtogroup PPC_GHS_CORE
 * @{
 */

/*===========================================================================*/
/* Module constants.                                                         */
/*===========================================================================*/

#if !defined(FALSE) || defined(__DOXYGEN__)
#define FALSE                               0
#endif

#if !defined(TRUE) || defined(__DOXYGEN__)
#define TRUE                                1
#endif

/*===========================================================================*/
/* Code section.


ion.IsOpen == false)
        {
            _connection = _connectionFactory.CreateConnection();
        }

        if (Channel == null || Channel.IsOpen == false)
        {
            Channel = _connection.CreateModel();
            Channel.QueueDeclare(queue: QueueName, durable: false, exclusive: false, autoDelete: false);
        }
    }

    public void Dispose()
    {
        try
        {
            Channel?.Close();
            Channel?.Dispose();
            Channel = null;

            _connection?.Close();
            _connection?.Dispose();
            _connection = null;
        }
        catch (Exception ex)
        {
            _logger.LogCritical(ex, "Cannot dispose RabbitMQ channel or connection");
        }
    }
}


一个房间
  Original   = 6, // 用户切换了座位
}

export interface GameJoinMeta extends GameMeta, GameSyncMeta {
  kind: JoinKinds;
}

// 当玩家出牌后, 返回此结果给出牌的玩家, 并广播给其它在座的玩家
// 如果游戏结束, 则id, seat, endAt均为空, 并向所有人(包括大厅内的人)广播游戏结束信息
export interface GamePlay {
  id: number; // 当前出牌序号
  seat: Seats; // 应该出牌的座位
  action: PlayAction; // 上一手出牌的结果
  expires: number; // 截止时间
}

// 房间内游戏结束信息
export interface GameOver {
  times: number; // 倍数
  timesHistory: TimesAction[]; // 倍数历史
  remainCards: NMap<PokerCard[]>; // 没有打出的卡牌
  seats: NMap<UserMeta>; // 结算后的用户信息, 主要是积分变化
}

export interface GameFight {
  id?: number; // 序号
  seat?: Seats; // 该抢的人
  action?: FightAction; // 上一个抢地主的人抢的倍数
  banker?: FightResult; // 抢地主结束时给出结果
  play?: GamePlay; // 抢地主结束时下一手出牌情况
  expires?: number; // 截止时间
}

// 游戏开始时房间内返回数据
export interface GameStart {
  cards?: PokerCard[]; // 本人的手牌
  fight?: GameFight; // 抢地主的信息
}
import { Transport } from './transport';
import { Peer } from './peer';

type Primitive = string | number | boolean | undefined | null;
type AnyFunc = (...args: any[]) => any;
type AnyExposedFunc = (...args: (Primitive | AnyExposedFunc)[]) => Primitive | AnyExposedFunc;
type ExposedFunction<
  T extends AnyFunc = AnyFunc,
  TArgs = Parameters<T>,
  TReturn = ReturnType<T>
> = TArgs extends (Primitive | AnyExposedFunc)[]
  ? TReturn extends Primitive | AnyExposedFunc
    ? T
    : never
  : never;
type LocalApi = {
  [methodName: string]: ExposedFunction;
};
type RemoteApi = {
  [methodName: string]: ExposedFunction;
};

class Builder<TLocalApi extends LocalApi> {
  private localApi?: TLocalApi;

  connect<TRemoteApi extends RemoteApi>(transport: Transport) {
    return new Peer<TRemoteApi, TLocalApi>(transport, this.localApi);
  }

  static fromLocalApi<TLocalApi extends LocalApi>(localApi: TLocalApi) {
    const builder = new Builder<TLocalApi>();

    builder.localApi = localApi;

    return builder;
  }
}

export function connect<TRemoteApi extends RemoteApi>(transport: Transport) {
  return new Peer<TRemoteApi>(transport);
}

export function expose(localApi: LocalApi) {
  return Builder.fromLocalApi(localApi);
}
import {DEFAULT_CANVAS_BKG_COLOUR, NOOP} from './constants';
import eventLoop from './eventLoop';
import {DrawFrequency} from './interfaces/IDrawable';
import IPoint from './interfaces/IPoint';
import IPositionable from './interfaces/IPositionable';

let htmlCanvas: HTMLCanvasElement;
let canvas2DContext: CanvasRenderingContext2D;
let backgroundColour: string = DEFAULT_CANVAS_BKG_COLOUR;

const setCanvasSize = (): void => {
    htmlCanvas.width = window.innerWidth;
    htmlCanvas.height = window.innerHeight;
};

const lazilyCreateCanvas = (): void => {
    if (!htmlCanvas) {
        htmlCanvas = document.createElement('canvas') a


TRUN /.:/' + shellcode))
	s.close()

except:
	print "Error connecting to server"
	sys.exit()
```

Run this 3.py and don't forget to ```chmod +x 3.py``` before ```./3.py```

![](https://i.imgur.com/CX8PZZN.png)

### Finding Bad Characters

==move notes over from notion==# 请求、获取OTA更新包及利用其内容的一系列方法
## 注意：本教程默认您使用的是Debian系的Linux发行版(比如Ubuntu\Debian)
## OTA全包(文件名前缀为"full",且利用7zip打开有.br文件的压缩包)
### 请求方法

#### root后的方法
打开爱玩机工具箱APP，点到导航，往下滑找到"系统相关",点进去，下滑找到"SetEdit-安卓设置项修改"并进入，在上方选择“PROP”一栏，然后搜索找到 `ro.build.display.id`。这个值很有意思，它决定了你设置app和系统升级app显示的系统版本号

然后你就可以打开系统升级app，点"版本更新记录"，找到最底部的那个版本号（比如T10第一个被记载的版本号是IFLY_V1.02.6），那就把这个版本号填到刚刚那个 `ro.build.display.id`里面并保存，然后将系统升级的进程从后台杀死再打开，然后你便发现系统升级的"当前版本"的值也变掉了

#### 没有Root的方法

等更易于使用的脚本出来（

### 获取方法

#### root后获取方式

将得到的zip包从/cache/ota中adb pull到电脑上（要装adb root模块

or

使用一些第三方文件管理器将zip包从/cache/ota复制到本地存储，然后你自由发挥（

#### 没有Root的解决方法

等脚本，或者你有水平就自己构建一个.需要拿到两种不同机型(如T10\X2Pro 与 X3Pro\T20\T20Pro，建议是T10\X2pro与X3Pro)的最新版本的IFLYOTA.apk 原因是这个用了两种不一样的OTA包Request方式

### 利用方法

#### 从完整OTA包得到数个系统分区镜像
* 去安装[DNA3工具箱](https://github.com/ColdWindScholar/D.N.A3)，把你OTA包(.zip格式文件)直接复制到DNA3的run.py所在目录下。运行DNA3，选解压，就能看到你的全量包了，选择你全量包对应的选项，它便会自行开始进行镜像的转换，你只需选择开启静默它便会自行合成镜像。
至于得到的镜像，如果你是安卓9机型，你就不需要考虑super分区之类的；反之，如果你是安卓11，12机型，我强烈建议你先自行合成一个super分区镜像，这样是为了砖以后刷进去救砖。合成的super的具体大小需要你自己通过高通9008模式或者瑞芯微loader模式读取分区表得。总之你可以**通过修改vendor,system**来进行root、当然，如果你是安卓11，12机型，你可以直接修补boot镜像并刷


PHORE = 5,
    COMMAND_BUFFER = 6,
    FENCE = 7,
    DEVICE_MEMORY = 8,
    BUFFER = 9,
    IMAGE = 10,
    EVENT = 11,
    QUERY_POOL = 12,
    BUFFER_VIEW = 13,
    IMAGE_VIEW = 14,
    SHADER_MODULE = 15,
    PIPELINE_CACHE = 16,
    PIPELINE_LAYOUT = 17,
    RENDER_PASS = 18,
    PIPELINE = 19,
    DESCRIPTOR_SET_LAYOUT = 20,
    SAMPLER = 21,
    DESCRIPTOR_POOL = 22,
    DESCRIPTOR_SET = 23,
    FRAMEBUFFER = 24,
    COMMAND_POOL = 25,

    // feature: VK_KHR_surface
    #[cfg(feature = "VK_KHR_surface")]
    SURFACE_KHR = 1000000000,

    // feature: VK_KHR_swapchain
    #[cfg(feature = "VK_KHR_swapchain")]
    SWAPCHAIN_KHR = 1000001000,

    // feature: VK_KHR_display
    #[cfg(feature = "VK_KHR_display")]
    DISPLAY_KHR = 1000002000,
    #[cfg(feature = "VK_KHR_display")]
    DISPLAY_MODE_KHR = 1000002001,

    // feature: VK_EXT_debug_report
    #[cfg(feature = "VK_EXT_debug_report")]
    DEBUG_REPORT_CALLBACK_EXT = 1000011000,

    // feature: VK_KHR_descriptor_update_template
    #[cfg(feature = "VK_KHR_descriptor_update_template")]
    DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000,

    // feature: VK_NVX_device_generated_commands
    #[cfg(feature = "VK_NVX_device_generated_commands")]
    OBJECT_TABLE_NVX = 1000086000,
    #[cfg(feature = "VK_NVX_device_generated_commands")]
    INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001,

    // feature: VK_KHR_sampler_ycbcr_conversion
    #[cfg(feature = "VK_KHR_sampler_ycbcr_conversion")]
    SAMPLER_YCBCR_CONVERSION_KHR = 1000156000,

    // feature: VK_EXT_validation_cache
    #[cfg(feature = "VK_EXT_validation_cache")]
    VALIDATION_CACHE_EXT = 1000160000
  }
}

define_bitmask! {

  /// Bitmask specifying capabilities of queues in a queue family
  pub enum VkQueueFlagBits {
    GRAPHICS_BIT = 1<<0,
    COMPUTE_BIT = 1<<1,
    TRANSFER_BIT = 1<<2,
    SPARSE_BINDING_BIT = 1<<3
  }
}

define_bitmask! {

  /// Bitmask specifying properties for a memory type
  pub enum VkMemoryPropertyFlagBits {
    DEVICE_LOCAL_BIT = 1<<0,
    HOST_VISIBLE_BIT = 1<<1,
    HOST_COHERENT_BIT = 1<<2,
    HOST_CACHED_BIT = 1<<3,
    LAZILY_ALLOCATED_BIT = 1<<4
  }
}

define_bitmask! {

  /// Bitmask specifying attribute flags for a heap
  pub enum VkMemoryHeapFlagBits {
    DEVICE_LOCAL_BIT = 1<<0,

    // feature: VK_KHX_device_group_creation
    #[cfg(feature = "VK_KHX_device_group_creation")]
    MULTI_INSTANCE_BIT_KHX = 1<<1
  }
}

define_bitmask! {

  /// Bitmask specifying memory access types that will participate in a memory
  /// dependency
  pub enum VkAccessFlagBits {
    INDIRECT_COMMAND_READ_BIT = 1<<0,
    INDEX_READ_BIT = 1<<1,
    VERTEX_ATTR


e current item is a boundary -- if so always include the
        // point, regardless of stride
        bool isBoundary = (prevNumWaves != curNumWaves) || (nextNumWaves != curNumWaves);

        if (i % stride == 0 || isBoundary)
        {
            chart.AddData(jqPlotChartData((float)nUsedSGPRs, (float)curNumWaves));
        }

        prevNumWaves = curNumWaves;
    }
}

void GenerateWGLimitedWFTable(CLCUInfoBase* cuDevice, jqPlotChart& chart, const OccupancyUtils::OccupancyParams& params)
{
    cuDevice->SetCUParam(CU_PARAMS_LDS_USED, params.m_nUsedLDS);
    cuDevice->SetCUParam(CU_PARAMS_VECTOR_GPRS_USED, params.m_nUsedVGPRS);

    if (params.m_gen >= GDT_HW_GENERATION_SOUTHERNISLAND && params.m_gen < GDT_HW_GENERATION_LAST)
    {
        cuDevice->SetCUParam(CU_PARAMS_SCALAR_GPRS_USED, params.m_nUsedSGPRS);
    }

    for (unsigned int i = 1; i <= params.m_nMaxWGSize; ++i)
    {
        size_t activeWave;
        cuDevice->ComputeNumActiveWaves(i, activeWave);
        chart.AddData(jqPlotChartData((float)i, (float)activeWave));
    }
}

void GenerateLDSLimitedWFTable(CLCUInfoBase* cuDevice, jqPlotChart& chart, const OccupancyUtils::OccupancyParams& params)
{
    cuDevice->SetCUParam(CU_PARAMS_VECTOR_GPRS_USED, params.m_nUsedVGPRS);
    unsigned int stride = 1024;

    if (params.m_gen >= GDT_HW_GENERATION_SOUTHERNISLAND && params.m_gen < GDT_HW_GENERATION_LAST)
    {
        cuDevice->SetCUParam(CU_PARAMS_SCALAR_GPRS_USED, params.m_nUsedSGPRS);
    }

    for (unsigned int i = 0; i <= params.m_nMaxLDS; i += stride)
    {
        cuDevice->SetCUParam(CU_PARAMS_LDS_USED, i);
        size_t activeWave;
        cuDevice->ComputeNumActiveWaves(params.m_nWorkgroupSize, activeWave);
        chart.AddData(jqPlotChartData(((float)i / BYTE_2_KBYTE_CONVERSION), (float)activeWave));
    }
}

void CreateInfoTable(const OccupancyUtils::OccupancyParams& params, ostream& os, const string& strLimitingFactor)
{
    string strDeviceName = params.m_strDeviceName;
    size_t numCU = params.m_nNbrComputeUnits;
    size_t maxWavePerCU = params.m_nMaxWavesPerCU;
    size_t waveSize = params.m_nWavefrontSize;

    string strKernelName = params.m_strKernelName;
    size_t usedLDS = params.m_nUsedLDS;
    size_t flattenedGroupWorkSize = params.m_nWorkgroupSize;
    size_t flattenedGlobalWorkSize = params.m_nGlobalWorkSize;
    size_t numWavePerGroup = params.m_nWavesPerWG;

    size_t maxLDS = params.m_nMaxLDS;
    size_t maxGroupWorkSize = params.m_nMaxWGSize;
    size_t maxGlobalWorkSize = params.m_nMaxGlobalWorkSize;
    size_t maxWavePerGroup = params.m_nMaxWavesPerWG;

    size_t numWaveLimitedByLDS = params.m_nLDSLimitedWaveCount;
    size_t numWaveLimitedByWGS = params.m_nWGLimitedWaveCount;

    os << "
" << endl;
    os << "Variable		Value		Device Limit	" << endl;
    os << "
Device Info
" << endl;
    os <<


lot.axisY.getCoord(data[i].y, plotarea, plot));

				if (i==0){
					cmd.push("m");
					cmd.push(x+","+y);
				}else{
					cmd.push("l");
					cmd.push(x+","+y);
				}

				//	add the circle.
				var c = document.createElement("v:oval");
				c.setAttribute("strokeweight", "1px");
				c.setAttribute("strokecolor", data[i].series.color);
				c.setAttribute("fillcolor", data[i].series.color);
				var str=document.createElement("v:stroke");
				str.setAttribute("opacity","0.8");
				c.appendChild(str);
				str=document.createElement("v:fill");
				str.setAttribute("opacity","0.6");
				c.appendChild(str);
				var s=c.style;
				s.position="absolute";
				s.top=(y-r)+"px";
				s.left=(x-r)+"px";
				s.width=(r*2)+"px";
				s.height=(r*2)+"px";
				group.appendChild(c);
				if(applyTo){ applyTo(c, data[i].src); }
			}
			cmd.push("l");
			cmd.push(x + "," + Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
			cmd.push("l");
			cmd.push(Math.round(plot.axisX.getCoord(data[0].x, plotarea, plot)) + "," +  Math.round(plot.axisY.getCoord(plot.axisX.origin, plotarea, plot)));
			path.setAttribute("path", cmd.join(" ")+" x e");
			group.appendChild(path);
			return group;	//	HTMLDivElement
		},
		CurvedArea: function(
			/* array */data,
			/* dojo.charting.PlotArea */plotarea,
			/* dojo.charting.Plot */plot,
			/* function? */applyTo
		){
			//	summary
			//	Plots the series as an area with a tension for softening.
			//	Bindings: x/y
			var tension = 3;
			var area = plotarea.getArea();
			var group = dojo.charting.Plotters._group(plotarea);

			var path=document.createElement("v:shape");
			path.setAttribute("strokeweight", "1px");
			path.setAttribute("strokecolor", data[0].series.color);
			path.setAttribute("fillcolor", data[0].series.color);
			path.setAttribute("coordsize", (area.right-area.left) + "," + (area.bottom-area.top));
			path.style.position="absolute";
			path.style.top="0px";
			path.style.left="0px";
			path.style.width=area.right-area.left+"px";
			path.style.height=area.bottom-area.top+"px";
			var stroke=document.createElement("v:stroke");
			stroke.setAttribute("opacity", "0.8");
			path.appendChild(stroke);
			var fill=document.createElement("v:fill");
			fill.setAttribute("opacity", "0.4");
			path.appendChild(fill);

			var cmd = [];
			var r=3;
			for(var i=0; i<data.length; i++){
				var x = Math.round(plot.axisX.getCoord(data[i].x, plotarea, plot));
				var y = Math.round(plot.axisY.getCoord(data[i].y, plotarea, plot));

				if (i==0){
					cmd.push("m");
					cmd.push(x+","+y);
				}else{
					var lastx = Math.round(plot.axisX.getCoord(data[i-1].x, plotarea, plot));
					var lasty = Math.round(plot.axisY.getCoord(data[i-1].y, plotarea, plot));


: string, value: any) {
    this.values[key] = value;
  }
  setValues(values: any) {
    this.values = values;
  }
  setReportTypes(reportTypes: ReportTypes) {
    this.reportTypes = reportTypes || [];
  }
  setMacros(macros: any[]) {
    this.macros = macros || [];
  }
  setPreMacros(macros: any[]) {
    this.preMacros = macros || [];
  }
}
import eventAttr from '../attributes/event';
import bindAttr from '../attributes/binding';
import { Element } from '../parsers/html/element';
import { Segments } from '../parsers/script/segments';

export default function nameDirective(node: Element, group: string, segmts: Segments) {
  const type = node.getAttribute('type');
  if (/checkbox|radio/.test(type) && node.tagName === 'input') {
    const { varName } = node;
    let bindExp = '', eventExp = '';
    segmts.addImport('trebor/tools', '_$attr');
    if (type === 'checkbox') {
      this.tools = tools;
      segmts.globalTools.push('_$bindGroup', '_$attr', varName);
      eventExp = `_$bindGroup($el, ${group})`;
      bindExp = `!!~${group}.indexOf(_$attr(${varName}))`;
    } else {
      segmts.globalTools.push('_$attr', varName);
      eventExp = `${group} = $el.checked ? _$attr($el) : ${group}`;
      bindExp = `${group} === _$attr(${varName})`;
    }
    bindAttr(node, 'checked', bindExp, segmts);
    eventAttr(node, 'change', eventExp, segmts);
  }
}

const tools = `function _$bindGroup(input, selection) {
  const _value = _$attr(input);
  const index = selection.indexOf(_value);
  if (input.checked && !~index) {
    selection.push(_value);
  } else {
    selection.splice(index, 1);
  }
}`;

let animals: string[] = ['koal', 'pand', 'zebr'];

for(let i: number = 0; i<animals.length; i++)
{
  animals[i] += 'a';
}

console.log(animals);import {Injectable} from '@angular/core';
import {HttpClient} from "@angular/common/http";
import {Observable, of} from "rxjs";
import {map, tap} from "rxjs/operators";
import {ResponseInterface} from "./ResponseInterface";

export function mapHttpData(response: ResponseInterface): ProductInterface[] {
  return ((response as Array<any>).map((item, index) => {
    item.id = index;
    return (item as ProductInterface);
  }));
}

export interface ProductInterface {
  price?: number;
  thumb_link?: string;
  large_link?: string;
  name?: string;
  id?: number;
  description?: string;
}

let productListResponse: ProductInterface[] | null = null;

@Injectable({
  providedIn: 'root'
})
export class ProductService {

  constructor(private http: HttpClient) {

  }

  private updateProductListCache = (response: ResponseInterface) => {
    if (!productListResponse) {
      productListResponse = (response as Array<any>).map((item, index) => {
        item.id = index;
        return (item as ProductInterface);
      });
    }
  };

  getProducts(force = false): Observable<ProductInterface[] | undefined> {
    if (productListResponse && !force) {
      return of((productListResponse as ProductInterface[]));
    }
    // Clears cache for updating with new data
    productListResponse = null;
    return this.http.get('assets/database.json')
        .pipe(
            tap(this.update


"] ?? $request.headers?.["content-type"])?.split(";")?.[0];
$.log(`⚠ FORMAT: ${FORMAT}`, "");
!(async () => {
	const { Settings, Caches, Configs } = setENV("Cloudflare", "1dot1dot1dot1", Database$1);
	$.log(`⚠ Settings.Switch: ${Settings?.Switch}`, "");
	switch (Settings.Switch) {
		case true:
		default:
			const WireGuard = getStorage("WireGuard", "VPN", Database$1);
			/*
			const KIND = RegExp(`/reg/${Settings.Verify.RegistrationId}$`, "i").test($request.url) ? "RegistrationId"
				: /reg/i.test($request.url) ? "Registration"
					: undefined
			*/
			const KIND = `/${PATHs[1]}/${PATHs[2]}` === `/reg/${Settings.Verify.RegistrationId}` ? "RegistrationId"
				: `/${PATHs[1]}` === `/reg` ? "Registration"
					: undefined;
			$.log(`🚧 KIND: ${KIND}`, "");
			$Storage.setItem(`@Cloudflare.1dot1dot1dot1.Caches`, $request);
			// 创建空数据
			let body = {};
			// 方法判断
			switch (METHOD) {
				case "POST":
				case "PUT":
				case "PATCH":
				case "DELETE":
					// 格式判断
					switch (FORMAT) {
						case undefined: // 视为无body
							break;
						case "application/x-www-form-urlencoded":
						case "text/plain":
						default:
							//$.log(`🚧 body: ${JSON.stringify(body)}`, "");
							break;
						case "application/x-mpegURL":
						case "application/x-mpegurl":
						case "application/vnd.apple.mpegurl":
						case "audio/mpegurl":
							//body = M3U8.parse($response.body);
							//$.log(`🚧 body: ${JSON.stringify(body)}`, "");
							//$response.body = M3U8.stringify(body);
							break;
						case "text/xml":
						case "text/html":
						case "text/plist":
						case "application/xml":
						case "application/plist":
						case "application/x-plist":
							//body = XML.parse($response.body);
							//$.log(`🚧 body: ${JSON.stringify(body)}`, "");
							//$response.body = XML.stringify(body);
							break;
						case "text/vtt":
						case "application/vtt":
							//body = VTT.parse($response.body);
							//$.log(`🚧 body: ${JSON.stringify(body)}`, "");
							//$response.body = VTT.stringify(body);
							break;
						case "text/json":
						case "application/json":
							body = JSON.parse($request.body ?? "{}");
							switch (KIND) {
								case "Registration": // 是注册链接
									break;
								case "RegistrationId": // 是指定注册链接
									if ($request.method === "PUT") { // 是PUT方法
										body.key = WireGuard.Settings.PublicKey;
										$.msg($.name, "重置密钥", `发送请求数据，请求中的客户端公钥已替换为:\n${WireGuard.Settings.PublicKey}\n等待回复数据`);
										//$.log($.name, "重置密钥", "发送请求数据，请求中的客户端公钥已替换为:", WireGuard.Settings.PublicKey, "等待回复数据", "");
									}
									break;
							}							$request.body = JSON.stringify(body);
							break;
						case "application/protobuf":
						case "application/x-protobuf":
						case "application


uiListEntry
    {
        private final String labelText;
        private final int labelWidth;

        public CategoryEntry(String p_i45028_2_)
        {
            this.labelText = I18n.format(p_i45028_2_, new Object[0]);
            this.labelWidth = GuiKeyBindingList.this.mc.fontRendererObj.getStringWidth(this.labelText);
        }

        public void drawEntry(int slotIndex, int x, int y, int listWidth, int slotHeight, int mouseX, int mouseY, boolean isSelected)
        {
            GuiKeyBindingList.this.mc.fontRendererObj.drawString(this.labelText, GuiKeyBindingList.this.mc.currentScreen.width / 2 - this.labelWidth / 2, y + slotHeight - GuiKeyBindingList.this.mc.fontRendererObj.FONT_HEIGHT - 1, 16777215);
        }

        public boolean mousePressed(int slotIndex, int p_148278_2_, int p_148278_3_, int p_148278_4_, int p_148278_5_, int p_148278_6_)
        {
            return false;
        }

        public void mouseReleased(int slotIndex, int x, int y, int mouseEvent, int relativeX, int relativeY)
        {
        }

        public void setSelected(int p_178011_1_, int p_178011_2_, int p_178011_3_)
        {
        }
    }

    public class KeyEntry implements GuiListExtended.IGuiListEntry
    {
        private final KeyBinding keybinding;
        private final String keyDesc;
        private final GuiButton btnChangeKeyBinding;
        private final GuiButton btnReset;

        private KeyEntry(KeyBinding p_i45029_2_)
        {
            this.keybinding = p_i45029_2_;
            this.keyDesc = I18n.format(p_i45029_2_.getKeyDescription(), new Object[0]);
            this.btnChangeKeyBinding = new GuiButton(0, 0, 0, 75, 20, I18n.format(p_i45029_2_.getKeyDescription(), new Object[0]));
            this.btnReset = new GuiButton(0, 0, 0, 50, 20, I18n.format("controls.reset", new Object[0]));
        }

        public void drawEntry(int slotIndex, int x, int y, int listWidth, int slotHeight, int mouseX, int mouseY, boolean isSelected)
        {
            boolean flag = GuiKeyBindingList.this.field_148191_k.buttonId == this.keybinding;
            GuiKeyBindingList.this.mc.fontRendererObj.drawString(this.keyDesc, x + 90 - GuiKeyBindingList.this.maxListLabelWidth, y + slotHeight / 2 - GuiKeyBindingList.this.mc.fontRendererObj.FONT_HEIGHT / 2, 16777215);
            this.btnReset.xPosition = x + 190;
            this.btnReset.yPosition = y;
            this.btnReset.enabled = this.keybinding.getKeyCode() != this.keybinding.getKeyCodeDefault();
            this.btnReset.drawButton(GuiKeyBindingList.this.mc, mouseX, mouseY);
            this.btnChangeKeyBinding.xPosition = x + 105;
            this.btnChangeKeyBinding.yPosition = y;
            this.btnChangeKeyBinding.displayString = GameSettings.getKeyDisplayString(this.keybinding.getKeyCode());
            boolean flag1 = false;

            if (this.keybinding.getKeyCode() != 0)
            {
                for (KeyBinding keybinding : GuiKeyBindingList.this.mc.gameSettings.keyBindings)
                {
                    if (keybinding != this.keybinding && keybinding.getKeyCode() == this.keybinding.getKeyCode())
                    {
                        flag1 = true;
                        break;
                    }
                }
            }


== "boolean") then
								form = "Boolean"
								value = util.tobool(nut.config.get(k))
							else
								form = "Generic"
								value = nut.config.get(k) or value
							end
						end

						-- VectorColor currently only exists for DProperties.
						if (form == "Generic" and type(value) == "table" and value.r and value.g and value.b) then
							-- Convert the color to a vector.
							value = Vector(value.r / 255, value.g / 255, value.b / 255)
							form = "VectorColor"
						end

						local delay = 1

						if (form == "Boolean") then
							delay = 0
						end

						-- Add a new row for the config to the properties.
						local row = properties:CreateRow(category, k)
						row:Setup(form, v.data and v.data.data or {})
						row:S


allow(unused_parens)]

fn region_identity(x: &usize) -> &usize { x }

fn apply<T, F>(t: T, f: F) -> T where F: FnOnce(T) -> T { f(t) }

fn parameterized(x: &usize) -> usize {
    let z = apply(x, ({|y|
        region_identity(y)
    }));
    *z
}

pub fn main() {
    let x = 3;
    assert_eq!(parameterized(&x), 3);
}
use std::ops::{Deref, DerefMut};

use serde::{Deserialize, Serialize, Serializer};
use serde::ser::SerializeStruct;

use {Component, Entity, Index, Join, Storage, UnprotectedStorage};
use storage::MaskedStorage;

/// The error type returned
/// by [`Storage::merge`].
///
/// [`Storage::merge`]: struct.Storage.html#method.merge
#[derive(Debug)]
pub enum MergeError {
    /// Returned if there is no
    /// entity matching the specified offset.
    NoEntity(Index),
}

/// Structure of packed components with offsets of which entities they belong to.
/// Offsets define which entities the components correspond to, based on a list of entities
/// the packed data is sent in with.
///
/// If the list of entities is all entities in the world, then the offsets in the
/// packed data are the indices of the entities.
#[derive(Debug, Serialize, Deserialize)]
pub struct PackedData<T> {
    /// List of components.
    pub components: Vec<T>,
    /// Offsets used to get entities which correspond to the components.
    pub offsets: Vec<Index>,
}

impl<T> PackedData<T> {
    /// Modifies the data to match an entity list's length for merging.
    pub fn pair_truncate<'a>(&mut self, entities: &'a [Entity]) {
        self.truncate(entities.len());
    }
    /// Truncates the length of components and offsets.
    pub fn truncate(&mut self, length: usize) {
        self.components.truncate(length);
        self.offsets.truncate(length);
    }
}

impl<'e, T, D> Serialize for Storage<'e, T, D>
where
    T: Component + Serialize,
    D: Deref<Target = MaskedStorage<T>>,
{
    fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
        use hibitset::BitSetLike;

        // Serializes the storage in a format of PackedData<T>
        let (bitset, storage) = self.open();
        // Serialize a struct that has 2 fields
        let mut structure = serializer.serialize_struct("PackedData", 2)?;
        let mut components: Vec<&T> = Vec::new();
        let mut offsets: Vec<u32> = Vec::new();
        for index in bitset.iter() {
            offsets.push(index);
            let component = unsafe { storage.get(index) };
            components.push(component);
        }

        structure.serialize_field("offsets", &offsets)?;
        structure.serialize_field("components", &components)?;
        structure.end()
    }
}

impl<'e, T, D> Storage<'e, T, D>
where
    T


&&
          !currentMember!.isInstanceMember &&
          currentMember is! Constructor &&
          currentClass != null &&
          currentClass!.typeParameters.isNotEmpty) {
        expectedTypeParameters = (expectedTypeParameters.toSet()
              ..removeAll(currentClass!.typeParameters))
            .toList();
      }

      VariableIndexer2? varIndexer =
          getVariableIndexerForTesting() as VariableIndexer2?;
      Map<String, DartType> expectedVariablesMap = {};
      for (VariableDeclaration variable in varIndexer?.declsOrder ?? const []) {
        String? name = variable.name;
        if (name != null && name != "" && !variable.isSynthesized) {
          if (variable.isHoisted && !setVariables.contains(variable)) {
            // A hoisted variable that isn't set (yet) --- pretend it isn't
            // there.
          } else if (variable.isWildcard) {
            // A wildcard variable doesn't really exist so we'll ignore it,
            // see https://github.com/dart-lang/sdk/issues/60841.
          } else {
            expectedVariablesMap[name] = variable.type;
          }
        }
      }

      total++;
      if (nodesAtPoint.length == 0) {
        String msg = "Didn't find any scope for "
            "${currentLibrary!.fileUri} $currentUri and $offset";
        errors.add(msg);
        print(msg);
      } else if (nodesAtPoint.length == 1) {
        exact++;
        if (!compareScopes(expectedTypeParameters, expectedVariablesMap,
            nodesAtPoint.single, offset,
            doPrint: true)) {
          errors.add("Found 1 scope, but it didn't match for "
              "${currentLibrary!.fileUri} $currentUri and $offset");
        }
      } else {
        // Does one that agree exist?
        bool foundMatch = false;
        bool allMatch = true;
        for (DartScope2 compareMe in nodesAtPoint) {
          if (compareScopes(
              expectedTypeParameters, expectedVariablesMap, compareMe, offset,
              doPrint: false)) {
            foundMatch = true;
          } else {
            allMatch = false;
          }
        }
        if (!foundMatch) {
          String msg =
              "Found ${nodesAtPoint.length} scopes, but didn't one matching "
              "${currentLibrary!.fileUri} $currentUri and $offset";
          print(msg);
          errors.add(msg);
        }
        if (allMatch) {
          moreButAgree++;
        }

        List<DartScope2> filteredScopes = DartScopeBuilder2.filterAllForTesting(
            nodesAtPoint, currentLibrary!, offset);

        if (filteredScopes.length == 1) {
          countExactlyOneAfterFilter++;
          return;
        } else {
          if (filteredScopes.isEmpty) throw "Now empty :/";
          countMoreThanOneAfterFilter++;
          {
            String key = filteredScopes
                .map((e) => e.node.runtimeType.toString())
                .join("|");
            afterFilterCounts[key] = (afterFilterCounts[key] ?? 0) + 1;
            WrappedBool wrappedBoolForDebugging = new WrappedBool();

            {
              for (int i = 0; i < filteredScopes.length; i++) {
                DartScope2 scope = filteredScopes[i];
                TreeNode node = scope.node;
                if (node is Member) {
                  print("$i ${scope.node.runtimeType} name = ${node.name}");
                }
              }
            }

            {
              TreeNode node = filteredScopes[0].node;
              if (node is Procedure) {
                if (node.function.body != null) node = node.function.body!;
              } else if (node is FunctionNode) {


# stackish.py
#
# Stackish is a data representation syntax, similar to JSON or YAML.  For more info on
# stackish, see http://www.savingtheinternetwithhate.com/stackish.html
#
# Copyright 2008, Paul McGuire
#

"""
NUMBER A simple integer type that's just any series of digits.
FLOAT A simple floating point type.
STRING A string is double quotes with anything inside that's not a " or
    newline character. You can include \n and \" to include these
    characters.
MARK Marks a point in the stack that demarcates the boundary for a nested
    group.
WORD Marks the root node of a group, with the other end being the nearest
    MARK.
GROUP Acts as the root node of an anonymous group.
ATTRIBUTE Assigns an attribute name to the previously processed node.
    This means that just about anything can be an attribute, unlike in XML.
BLOB A BLOB is unique to Stackish and allows you to record any content
    (even binary content) inside the structure. This is done by pre-
    sizing the data with the NUMBER similar to Dan Bernstein's netstrings
    setup.
SPACE White space is basically ignored. This is interesting because since
    Stackish is serialized consistently this means you can use \n as the
    separation character and perform reasonable diffs on two structures.
"""

from pyparsing import Suppress,Word,nums,alphas,alphanums,Combine,oneOf,\
        Optional,QuotedString,Forward,Group,ZeroOrMore,srange

MARK,UNMARK,AT,COLON,QUOTE = map(Suppress,"[]@:'")

NUMBER = Word(nums)
NUMBER.setParseAction(lambda t:int(t[0]))
FLOAT = Combine(oneOf("+ -") + Word(nums) + "." + Optional(Word(nums)))
FLOAT.setParseAction(lambda t:float(t[0]))
STRING = QuotedString('"', multiline=True)
WORD = Word(alphas,alphanums+"_:")
ATTRIBUTE = Combine(AT + WORD)

strBody = Forward()
def setBodyLength(tokens):
    strBody << Word(srange(r'[\0x00-\0xffff]'), exact=int(tokens[0]))
    return ""
BLOB = Combine(QUOTE + Word(nums).setParseAction(setBodyLength) +
                                COLON + strBody + QUOTE)

item = Forward()
def assignUsing(s):
    def assignPA(tokens):
        if s in tokens:
            tokens[tokens[s]] = tokens[0]
            del tokens[s]
    return assignPA
GROUP = (MARK +
         Group( ZeroOrMore(
                    (item +
                     Optional(ATTRIBUTE)("attr")
                    ).setParseAction(assignUsing("attr"))
                )
               ) +
         ( WORD("name") | UNMARK )
        ).setParseAction(assignUsing("name"))
item << (NUMBER | FLOAT | STRING | BLOB | GROUP )

tests = """\
[ '10:1234567890' @name 25 @age +0.45 @percentage person:zed
[ [ "hello" 1 child root
[ "child" [ 200 '4:like' "I" "hello" things root
[ [ "data" [ 2 1 ] @numbers child root
[ [ 1 2 3 ] @test 4 5 6 root
""".splitlines()

for test in tests:
    if test:
        print(test)
        print(item.parseString(test).dump())
        print()


="colLast" scope="col">说明

cn.felord.payment.wechat.v3.model.batchtransfer

cn.felord.payment.wechat.v3.model.batchtransfer中CreateBatchTransferParams.TransferDetailListItem的使用

类型参数类型为CreateBatchTransferParams.TransferDetailListItem的cn.felord.payment.wechat.v3.model.batchtransfer中的字段

限定符和类型
字段和说明

private List<CreateBatchTransferParams.TransferDetailListItem>
CreateBatchTransferParams.transferDetailList

发起批量转账的明细列表，最多三千笔

跳过导航链接

概览

程序包

<a href="../../../../../../../.


,set_akun_ralan.Utang_KSO_Tindakan_Ralan,set_akun_ralan.Beban_Jasa_Sarana_Tindakan_Ralan,"+
                "set_akun_ralan.Utang_Jasa_Sarana_Tindakan_Ralan,set_akun_ralan.Beban_Jasa_Menejemen_Tindakan_Ralan,set_akun_ralan.Utang_Jasa_Menejemen_Tindakan_Ralan,"+
                "set_akun_ralan.HPP_BHP_Tindakan_Ralan,set_akun_ralan.Persediaan_BHP_Tindakan_Ralan from set_akun_ralan");
            try {
                rsrekening=psrekening.executeQuery();
                while(rsrekening.next()){
                    Suspen_Piutang_Tindakan_Ralan=rsrekening.getString("Suspen_Piutang_Tindakan_Ralan");
                    Tindakan_Ralan=rsrekening.getString("Tindakan_Ralan");
                    Beban_Jasa_Medik_Dokter_Tindakan_Ralan=rsrekening.getString("Beban_Jasa_Medik_Dokter_Tindakan_Ralan");
                    Utang_Jasa_Medik_Dokter_Tindakan_Ralan=rsrekening.getString("Utang_Jasa_Medik_Dokter_Tindakan_Ralan");
                    Beban_Jasa_Medik_Paramedis_Tindakan_Ralan=rsrekening.getString("Beban_Jasa_Medik_Paramedis_Tindakan_Ralan");
                    Utang_Jasa_Medik_Paramedis_Tindakan_Ralan=rsrekening.getString("Utang_Jasa_Medik_Paramedis_Tindakan_Ralan");
                    Beban_KSO_Tindakan_Ralan=rsrekening.getString("Beban_KSO_Tindakan_Ralan");
                    Utang_KSO_Tindakan_Ralan=rsrekening.getString("Utang_KSO_Tindakan_Ralan");
                    Beban_Jasa_Sarana_Tindakan_Ralan=rsrekening.getString("Beban_Jasa_Sarana_Tindakan_Ralan");
                    Utang_Jasa_Sarana_Tindakan_Ralan=rsrekening.getString("Utang_Jasa_Sarana_Tindakan_Ralan");
                    Beban_Jasa_Menejemen_Tindakan_Ralan=rsrekening.getString("Beban_Jasa_Menejemen_Tindakan_Ralan");
                    Utang_Jasa_Menejemen_Tindakan_Ralan=rsrekening.getString("Utang_Jasa_Menejemen_Tindakan_Ralan");
                    HPP_BHP_Tindakan_Ralan=rsrekening.getString("HPP_BHP_Tindakan_Ralan");
                    Persediaan_BHP_Tindakan_Ralan=rsrekening.getString("Persediaan_BHP_Tindakan_Ralan");
                }
            } catch (Exception e) {
                System.out.println("Notif Rekening : "+e);
            } finally{
                if(rsrekening!=null){
                    rsrekening.close();
                }
                if(psrekening!=null){
                    psrekening.close();
                }
            }
        } catch (Exception e) {
            System.out.println(e);
        }

        try {
            otorisasi=koneksiDB.USERPCARE()+":"+koneksiDB.PASSPCARE()+":095";
            URL=koneksiDB.URLAPIPCARE();
        } catch (Exception e) {
            System.out.println("E : "+e);
        }

        jam();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Co


cy.wait('@getComment').its('response.statusCode').should('be.oneOf', [200, 304])

    // Listen to POST to comments
    cy.intercept('POST', '**/comments').as('postComment')

    // we have code that posts a comment when
    // the button is clicked in scripts.js
    cy.get('.network-post').click()
    cy.wait('@postComment').should(({ request, response }) => {
      expect(request.body).to.include('email')
      expect(request.headers).to.have.property('content-type')
      expect(response && response.body).to.have.property('name', 'Using POST in cy.intercept()')
    })

    // Stub a response to PUT comments/ ****
    cy.intercept({
      method: 'PUT',
      url: '**/comments/*',
    }, {
      statusCode: 404,
      body: { error: message },
      headers: { 'access-control-allow-origin': '*' },
      delayMs: 500,
    }).as('putComment')

    // we have code that puts a comment when
    // the button is clicked in scripts.js
    cy.get('.network-put').click()

    cy.wait('@putComment')

    // our 404 statusCode logic in scripts.js executed
    cy.get('.network-put-comment').should('contain', message)
  })
})
/// <reference types="cypress" />
// remove no check once Cypress.sinon is typed
// https://github.com/cypress-io/cypress/issues/6720

context('Spies, Stubs, and Clock', () => {
  it('cy.spy() - wrap a method in a spy', () => {
    // https://on.cypress.io/spy
    cy.visit('https://example.cypress.io/commands/spies-stubs-clocks')

    const obj = {
      foo () {},
    }

    const spy = cy.spy(obj, 'foo').as('anyArgs')

    obj.foo()

    expect(spy).to.be.called
  })

  it('cy.spy() retries until assertions pass', () => {
    cy.visit('https://example.cypress.io/commands/spies-stubs-clocks')

    const obj = {
      /**
       * Prints the argument passed
       * @param x {any}
      */
      foo (x) {
        console.log('obj.foo called with', x)
      },
    }

    cy.spy(obj, 'foo').as('foo')

    setTimeout(() => {
      obj.foo('first')
    }, 500)

    setTimeout(() => {
      obj.foo('second')
    }, 2500)

    cy.get('@foo').should('have.been.calledTwice')
  })

  it('cy.stub() - create a stub and/or replace a function with stub', () => {
    // https://on.cypress.io/stub
    cy.visit('https://example.cypress.io/commands/spies-stubs-clocks')

    const obj = {
      /**
       * prints both arguments to the console
       * @param a {string}
       * @param b {string}
      */
      foo (a, b) {
        console.log('a', a, 'b', b)
      },
    }

    const stub = cy.stub(obj, 'foo').as('foo')

    obj.foo('foo', 'bar')

    expect(stub).to.be.called
  })

  it('cy.clock() - control time in the browser', () => {
    // https://on.cypress.io/clock

    // create the date in UTC so its always the same
    // no matter what local timezone the browser is running in
    const now = new Date(Date.UTC(2017, 2, 14)).getTime()

    cy.clock(now)
    cy.visit('https://example.cypress.io/commands/spies-stubs-clocks')
    cy.get('#clock-div').click()
      .should('have.text', '1489449


# Generated by Django 5.1.1 on 2024-09-29 11:38

from django.db import migrations, models

class Migration(migrations.Migration):

    dependencies = [
        ('ecommerce', '0003_alter_productimage_image_type_and_more'),
    ]

    operations = [
        migrations.CreateModel(
            name='Category',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=255, unique=True)),
                ('description', models.TextField(blank=True)),
            ],
        ),
    ]


.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 *
 */

#include "../../inc/MarlinConfig.h"

#if ENABLED(BABYSTEPPING)

#include "../gcode.h"
#include "../../feature/babystep.h"
#include "../../module/probe.h"
#include "../../module/temperature.h"
#include "../../module/planner.h"

#if ENABLED(BABYSTEP_ZPROBE_OFFSET)
  #include "../../core/serial.h"
#endif

#if ENABLED(MESH_BED_LEVELING)
  #include "../../feature/bedlevel/bedlevel.h"
#endif

#if ENABLED(BABYSTEP_ZPROBE_OFFSET)

  FORCE_INLINE void mod_probe_offset(const float &offs) {
    if (TERN1(BABYSTEP_HOTEND_Z_OFFSET, active_extruder == 0)) {
      probe.offset.z += offs;
      SERIAL_ECHO_START();
      SERIAL_ECHOLNPAIR(STR_PROBE_OFFSET " " STR_Z, probe.offset.z);
    }
    else {
      #if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
        hotend_offset[active_extruder].z -= offs;
        SERIAL_ECHO_START();
        SERIAL_ECHOLNPAIR(STR_PROBE_OFFSET STR_Z ": ", hotend_offset[active_extruder].z);
      #endif
    }
  }

#endif

/**
 * M290: Babystepping
 *
 * Send 'R' or no parameters for a report.
 *
 *  X<linear> - Distance to step X
 *  Y<linear> - Distance to step Y
 *  Z<linear> - Distance to step Z
 *  S<linear> - Distance to step Z (alias for Z)
 *
 * With BABYSTEP_ZPROBE_OFFSET:
 *  P0 - Don't adjust the Z probe offset
 */
void GcodeSuite::M290() {
  #if ENABLED(BABYSTEP_XY)
    LOOP_XYZ(a)
      if (parser.seenval(XYZ_CHAR(a)) || (a == Z_AXIS && parser.seenval('S'))) {
        const float offs = constrain(parser.value_axis_units((AxisEnum)a), -2, 2);
        babystep.add_mm((AxisEnum)a, offs);
        #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
          if (a == Z_AXIS && (!parser.seen('P') || parser.value_bool())) mod_probe_offset(offs);
        #endif
      }
  #else
    if (parser.seenval('Z') || parser.seenval('S')) {
      const float offs = constrain(parser.value_axis_units(Z_AXIS), -2, 2);
      babystep.add_mm(Z_AXIS, offs);
      #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
        if (!parser.seen('P') || parser.value_bool()) mod_probe_offset(offs);
      #endif
    }
  #endif

  if (!parser.seen("XYZ") || parser.seen('R')) {
    SERIAL_ECHO_START();

    #if ENABLED(BABYSTEP_ZPROBE_OFFSET)
      SERIAL_ECHOLNPAIR(STR_PROBE_OFFSET " " STR_Z, probe.offset.z);
    #endif

    #if ENABLED(BABYSTEP_HOTEND_Z_OFFSET)
    {
      SERIAL_ECHOLNPAIR_P(
        PSTR("Hotend "), int(active_extruder)
        #if ENABLED(BABYSTEP_XY)
          , PSTR("Offset X"), hotend_offset[active_extruder].x
          , SP_Y_STR, hotend_offset[active_extruder].y
          , SP_Z_STR
        #else
          , PSTR("Offset Z")
        #endif
        , hotend_offset[active_


ding nuscenes dataset...')
    nusc = NuScenes(version=opts.data_version, dataroot=opts.data_path, verbose=False)
    coco_2d_dict, non_key_nums = create_nuscenes_infos(nusc)
    # save
    save_path = os.path.join('./out/img_12Hz', 'nuscenes_infos_val_12Hz_mono3d.coco.json')
    mmcv.dump(coco_2d_dict, save_path)
    non_key_nums = np.array(non_key_nums)
    print("non_key_nums mean:{}, std:{}, min:{}, max:{}".format(np.mean(non_key_nums), np.std(non_key_nums), np.min(non_key_nums), np.max(non_key_nums)))


Part } from 'lit-html';
import { LitElement, html, property, TemplateResult } from 'lit-element';
import { directive } from 'lit-html/lib/directive';
import { getElementStyle } from '../utils';

export abstract class RootElement extends LitElement {
  @property({ type: String }) public theme = '';

  public constructor() {
    super();
    this.classList.add(this.tagName);
  }

  protected createRenderRoot(): RootElement {
    return this;
  }

  protected ifShowHtml(expresion: boolean, htmlTemplate: TemplateResult): TemplateResult {
    if (expresion) {
      return htmlTemplate;
    }
    return html``;
  }

  protected ifShowAttribute(expression: boolean, attr: string, attrValue: string): string {
    if (expression) {
      return `${attr}="${attrValue}"`;
    }
    return '';
  }

  protected fillParent(attachStyles?: string): void {
    if (this.parentElement) {
      this.parentElement.style.position = 'relative';
      const parentPaddingTop = getElementStyle(this.parentElement, 'padding-top');
      const parentPaddingLeft = getElementStyle(this.parentElement, 'padding-left');
      const parentBorderRadius = getElementStyle(this.parentElement, 'border-radius');
      const originStyle = this.getAttribute('style') ? this.getAttribute('style') + ';' : '';
      attachStyles = attachStyles ? attachStyles + ';' : '';
      const style = `position: absolute;
        display: flex;
        margin-left: -${parentPaddingLeft};
        margin-top: -${parentPaddingTop};
        align-items: center;
        justify-content: center;
        width: 100%;
        height: 100%;
        border-radius: ${parentBorderRadius};
      `;
      this.setAttribute('style', originStyle + style + attachStyles);
    }
  }

  protected ifAttr = directive((expression: boolean, attrValue: string) => (part: Part): void => {
    if (!expression && part instanceof AttributePart) {
      const name = part.committer.name;
      part.committer.element.removeAttribute(name);
    } else {
      part.setValue(attrValue);
    }
  });

  protected isOutsideEvent(evt: Event): boolean {
    let targetElement = evt.target;

    while (targetElement) {
      if (targetElement == this) {
        return false;
      }
      targetElement = (targetElement as HTMLElement).parentNode;
    }
    return true;
  }

  protected removeChildren(element: Element): void {
    while (element.firstChild) {
      element.removeChild(element.firstChild);
    }
  }

  protected formatTemplate(template: string | undefined | null, value: any): string {
    if (!template) {
      return '';
    }

    if (typeof value !== 'object') {
      return template.replace(/\{0\}/g, value);
    } else {
      let result = template;
      Object.keys(value).forEach((key: string) => {
        result = result!.replace(new RegExp(`{${key}}`, 'g'), value[key]);
      });
      return result;
    }
  }
}
/**
 * Created by Samuel Gratzl on 04.08.2014.
 */
import { IIterable } from './IIterable';
export declare class BaseUtils {
    /**
     * integrate b into a and override all duplicates
     * @param {Object} a
     * @param {Object} bs
     * @returns {Object} a with extended b
     */
    static mixin<T, U>(a: T, b: U, ...bs: any[]): T & U;
    /**
     * @deprecated use obj === undefined directly
     * @param obj
     * @return {boolean}
     */
    static isUndefined(obj: any): boolean;
    static mod(n: number, m: number): number;
    /**
     * binds the given function to the given context / this arg
     * @de


fun renameFile(oldPath: String, targetName: String): String {
    val ctx = appContext ?: throw IOException("not initialized")
    val dirUri = savedUri ?: throw IOException("directory not set")
    val srcUri = Uri.parse(oldPath)
    val dir =
        DocumentFile.fromTreeUri(ctx, Uri.parse(dirUri))
            ?: throw IOException("cannot open dir $dirUri")

    var finalName = targetName
    dir.findFile(finalName)?.let { existing ->
      if (lengthOfUri(ctx, existing.uri) == 0L) {
        existing.delete()
      } else {
        finalName = generateNewFilename(finalName)
      }
    }

    try {
      DocumentsContract.renameDocument(ctx.contentResolver, srcUri, finalName)?.also { newUri ->
        runCatching { ctx.contentResolver.delete(srcUri, null, null) }
        cleanupPartials(dir, targetName)
        return newUri.toString()
      }
    } catch (e: Exception) {
      TSLog.w(
          "renameFile", "renameDocument fallback triggered for $srcUri -> $finalName: ${e.message}")
    }

    val dest =
        dir.createFile("application/octet-stream", finalName)
            ?: throw IOException("createFile failed for $finalName")

    ctx.contentResolver.openInputStream(srcUri).use { inp ->
      ctx.contentResolver.openOutputStream(dest.uri, "w").use { out ->
        if (inp == null || out == null) {
          dest.delete()
          throw IOException("Unable to open output stream for URI: ${dest.uri}")
        }
        inp.copyTo(out)
      }
    }

    ctx.contentResolver.delete(srcUri, null, null)
    cleanupPartials(dir, targetName)
    return dest.uri.toString()
  }

  private fun lengthOfUri(ctx: Context, uri: Uri): Long =
      ctx.contentResolver.openAssetFileDescriptor(uri, "r").use { it?.length ?: -1 }
  // delete any stray “.partial” files for this base name
  private fun cleanupPartials(dir: DocumentFile, base: String) {
    for (child in dir.listFiles()) {
      val n = child.name ?: continue
      if (n.endsWith(".partial") && n.contains(base, ignoreCase = false)) {
        child.delete()
      }
    }
  }

  @Throws(IOException::class)
  override fun deleteFile(uri: String) {
    runBlocking { waitUntilTaildropDirReady() }
    val ctx = appContext ?: throw IOException("DeleteFile: not initialized")
    val uri = Uri.parse(uri)
    val doc =
        DocumentFile.fromSingleUri(ctx, uri)
            ?: throw IOException("DeleteFile: cannot resolve URI $uri")
    if (!doc.delete()) {
      throw IOException("DeleteFile: delete() returned false for $uri")
    }
  }

  @Throws(IOException::class)
  override fun getFileInfo(fileName: String): String {
    val context = appContext ?: throw IOException("app context not initialized")
    val dirUri = savedUri ?: throw IOException("SAF URI not initialized")
    val dir =
        DocumentFile.fromTreeUri(context, Uri.parse(dirUri))
            ?: throw IOException("could not resolve SAF root")
    val file =
        dir.findFile(fileName) ?: throw IOException("file \"$fileName\" not found in SAF directory")
    val name = file.name ?: throw IOException("file name missing for $fileName")
    val size = file.length()
    val modTime = file.lastModified()
    return """{"name":${JSONObject.quote(name)},"size":$size,"modTime":$modTime}"""
  }

  private fun jsonEscape(s: String): String {
    return JSONObject.quote(s)
  }

  fun generateNewFilename(filename: String): String {
    val dotIndex = filename.lastIndexOf('.')
    val baseName = if (dotIndex != -1) filename.


['opt_debug_desc'],
        type = 'toggle',
        get = function()
          return self.db.profile.debug
        end,
        set = function()
          self.db.profile.debug = not self.db.profile.debug
          ZGV:Print(
            'Debugging: ' .. (self.db.profile.debug and '|cff00ff88ON|r' or '|cffff0055OFF|r')
          )
        end,
        order = -10,
      },
    },
  }

  self.optionsdisplay = {
    type = 'group',
    name = L['opt_group_display'],
    desc = L['opt_group_display_desc'],
    handler = self,
    get = Getter_Simple,
    set = Setter_Simple,
    args = {
      desc = {
        order = 1,
        type = 'description',
        name = L['opt_group_display_desc'],
        order = 1,
      },
      hideincombat = {
        name = L['opt_hideincombat'],
        desc = L['opt_hideincombat_desc'],
        type = 'toggle',
        width = 'full',
        order = 2.5,
        get = Getter_Simple,
        set = Setter_Simple,
      },
      showmapbutton = {
        name = L['opt_mapbutton'],
        desc = L['opt_mapbutton_desc'],
        type = 'toggle',
        get = Getter_Simple,
        set = function(i, v)
          Setter_Simple(i, v)
          self:UpdateMapButton()
        end,
        width = 'full',
        order = 2.7,
      },
      guidesinhistory = {
        name = L['opt_guidesinhistory'],
        desc = L['opt_guidesinhistory_desc'],
        type = 'range',
        min = 3,
        max = 15,
        set = function(i, v)
          Setter_Simple(i, v)
          while #self.db.char.guides_history > v do
            tremove(self.db.char.guides_history)
          end
        end,
        step = 1,
        bigStep = 1,
        order = 2.8,
      },
      window = {
        name = L['opt_group_window'],
        type = 'group',
        inline = true,
        order = 3,
        args = {
          --[[
					collapsedmode = {
						name = L["opt_showallsteps"],
						desc = L["opt_showallsteps_desc"],
						type = 'toggle',
						get = function() return not self.db.profile['showallsteps'] end,
						set = function()
							self.db.profile['showallsteps'] = not self.db.profile['showallsteps']
							if self.db.profile['showallsteps'] then ZygorGuidesViewerFrame:SetHeight(self.db.profile.fullheight) end
							self:UpdateFrame(true)
							self:AlignFrame()
							self:UpdateLocking()
							self:ScrollToCurrentStep()
						      end,
						order=1,
					},
					showcountsteps = {
						name = L["opt_showcountsteps"],
						desc = L["opt_showcountsteps_desc"],
						type = 'range',
						get = function()  return self.db.profile.showcountsteps or 1  end,
						set = function(_,n)  self.db.profile.showcountsteps = n  self:UpdateFrame(true)  end,
						min = 1,
						max = 5,
						step = 1,
						bigStep = 1,
						order=2,
					},
					--]]
          showcountsteps = {
            name = L['opt_showcountsteps'],
            desc = L['opt_showcountsteps_desc'],
            type = 'select',
            values = {
              [0] = L['opt_showcountsteps_all'],
              '1',
              '2',
              '3',
              '4',
              '5',
            },
            get = function()
              return self.db.profile.showallst


 class VoiceNotAvailableScreen extends GuiScreen {

    private static final String WIKI_LINK = "https://plasmovoice.com/docs/server/installing";
    private static final int WIDTH = 248;
    private static final int HEIGHT = 50;

    private final BaseVoiceClient voiceClient;

    private Button button;
    private int x;
    private int y;

    private McTextComponent message;

    public VoiceNotAvailableScreen(@NotNull BaseVoiceClient voiceClient) {
        setNotAvailable();
        this.voiceClient = voiceClient;
        voiceClient.getEventBus().register(voiceClient, this);
    }

    @Override
    public boolean mouseClicked(double mouseX, double mouseY, int button) {
        String formattedMessage = RenderUtil.getFormattedString(message);
        String[] messageLines = formattedMessage.split("\n");

        if (messageLines.length == 3 && button == 0) {
            int lineWidth = RenderUtil.getStringWidth(messageLines[2]);
            int lineHeight = RenderUtil.getFontHeight();
            float x = (float) (getWidth() / 2 - lineWidth / 2);

            if (mouseX >= x && mouseX <= x + lineWidth &&
                    mouseY >= y + 10 + (lineHeight * 2) &&
                    mouseY <= y + 10 + (lineHeight * 3)) {
                openLink(WIKI_LINK);
            }
        }

        return super.mouseClicked(mouseX, mouseY, button);
    }

    @Override
    public void init() {
        this.x = (getWidth() - WIDTH) / 2;
        this.y = (getHeight() - HEIGHT) / 2;

        this.button = new Button(
                x + 10,
                0,
                WIDTH - 20,
                20,
                McTextComponent.translatable("message.plasmovoice.close"),
                (button) -> ScreenWrapper.openScreen(null),
                Button.NO_TOOLTIP
        );
        clearWidgets();
        addRenderWidget(button);
    }

    @Override
    public void removed() {
        voiceClient.getEventBus().unregister(voiceClient, this);
    }

    @Override
    public void render(@NotNull GuiRenderContext context, int mouseX, int mouseY, float delta) {
        // background is rendered by default and there is no way override this behavior without mixins
        //#if MC<12106
        screen.renderBackground(context);
        //#endif

        int messageLines = context.drawStringMultiLineCentered(
                message,
                getWidth(),
                y,
                0,
                Colors.WHITE
        );

        button.setY(y + (RenderUtil.getFontHeight() * messageLines) + 20);

        super.render(context, mouseX, mouseY, delta);
    }

    public void setNotAvailable() {
        this.message = McTextComponent.translatable("gui.plasmovoice.not_available");
    }

    public void setConnecting() {
        this.message = McTextComponent.translatable("gui.plasmovoice.connecting");
    }

    public void setCannotConnect() {
        this.message = McTextComponent.translatable("gui.plasmovoice.cannot_connect_to_udp", WIKI_LINK);
    }

    private void openLink(@NotNull String link) {
        MinecraftUtil.openUri(link);
    }

    @EventSubscribe
    public void onConnect(@NotNull UdpClientConnectedEvent event) {
        VoiceScreens.INSTANCE.openSettings(voiceClient);
    }

    @EventSubscribe
    public void onTimedOut(@NotNull UdpClientTimedOutEvent event) {
        if (event.isTimedOut()) {
            setConnecting();
        } else {
            VoiceScreens.INSTANCE.openNotAvailable(voiceClient);
        }
    }

    @EventSubscribe
    public void onClosed(@NotNull UdpClientClosed


);
    tuples_2.sort();
    tuples_2.as_bst_order();

    assert!(bucket.len() == 3000);
    assert!(bucket.get_collection(0).len() == 1000);
    assert!(bucket.get_collection(1).len() == 1000);
    assert!(bucket.get_collection(2).len() == 1000);
    assert!(tuples_1[0] == *bucket.get_collection(0).get_tuple(0));
    assert!(tuples_2[0] == *bucket.get_collection(1).get_tuple(0));
    assert!((&tuples_1[0] ^ &tuples_2[0]) == *bucket.get_collection(2).get_tuple(0));

    assert!(tuples_1[50] == *bucket.get_collection(0).get_tuple(50));
    assert!(tuples_2[50] == *bucket.get_collection(1).get_tuple(50));
    assert!((&tuples_1[50] ^ &tuples_2[50]) == *bucket.get_collection(2).get_tuple(50));

    assert!(tuples_1[120] == *bucket.get_collection(0).get_tuple(120));
    assert!(tuples_2[120] == *bucket.get_collection(1).get_tuple(120));
    assert!((&tuples_1[120] ^ &tuples_2[120]) == *bucket.get_collection(2).get_tuple(120));
}
<reponame>dalloriam/slang
use instructor::Opcode;

use nom::{character::complete::alpha1, combinator::map, sequence::delimited, IResult};

use crate::common::whitespace;

pub fn opcode(input: &str) -> IResult<&str, Opcode> {
    map(delimited(whitespace, alpha1, whitespace), |code| {
        Opcode::from(code)
    })(input)
}

#[cfg(test)]
mod tests {
    use super::{opcode, Opcode};

    #[test]
    fn test_opcode_load() {
        {
            // Test valid opcode.
            let (rest, op) = opcode("ld ").unwrap();
            assert_eq!(op, Opcode::LOAD);
            assert_eq!(rest, "");
        }

        {
            // Test invalid opcode.
            let (rest, op) = opcode("aold").unwrap();
            assert_eq!(op, Opcode::IGL);
            assert_eq!(rest, "");
        }
    }
}
<filename>src/sass/name.rs<gh_stars>0
use std::borrow::Cow;

/// A sass name, used to idenify functions, variables, mixins, etc.
///
/// A `-` and a `_` is considered equal in a name, both represented by a `_`.
#[derive(Clone, Debug, Ord, PartialOrd, Eq, PartialEq)]
pub struct Name {
    key: Cow<'static, str>,
}

impl Name {
    /// Key must not contain `-`.
    pub fn from_static(key: &'static str) -> Name {
        debug_assert!(!key.contains('-'));
        Name { key: key.into() }
    }

    pub fn split_module(&self) -> Option<(Name, Name)> {
        let mut parts = self.key.splitn(2, '.');
        if let (Some(module), Some(local)) = (parts.next(), parts.next()) {
            Some((
                Name {
                    key: module.to_string().into(),
                },
                Name {
                    key: local.to_string().into(),
                },
            ))
        } else {
            None
        }
    }
}

impl AsRef<str> for Name {
    fn as_ref(&


/* mpfr_setsign -- Produce a value with the magnitude of x and sign bit s

Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
Contributed by the AriC and Caramel projects, INRIA.

This file is part of the GNU MPFR Library.

The GNU MPFR Library is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 3 of the License, or (at your
option) any later version.

The GNU MPFR Library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
License for more details.

You should have received a copy of the GNU Lesser General Public License
along with the GNU MPFR Library; see the file COPYING.LESSER.  If not, see
http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */

#include "mpfr-impl.h"

#undef mpfr_setsign
int
mpfr_setsign (mpfr_ptr z, mpfr_srcptr x, int s, mpfr_rnd_t rnd_mode)
{
  return mpfr_set4 (z, x, rnd_mode, s ? -1 : 1);
}


          cube08_vertices.txt,
          the vertices.

          cube08.png,
          the PNG image of the point locations.

      Last revised on 12 June 2020.

    <title>
      asa103_test
    </title>

      asa103_test

      asa103_test,
      a FORTRAN90 code which
      calls asa103(), which
      evaluates the digamma or psi function.

      Licensing:

      The computer code and data files described and made available on this web page
      are distributed under
      the MIT license

      Related Data and Programs:

      asa103,
      a FORTRAN90 code which
      evaluates the digamma or psi function,
      by Jose Bernardo.
      This is a version of Applied Statistics Algorithm 103.

      Source Code:

          asa103_test.f90,
          a sample calling program.

          asa103_test.sh,
          runs all the tests.

          asa103_test.txt,
          the output file.

      Last revised on 28 January 2020.

  <TITLE>BCUnit - Managing Tests & Suites</TITLE>
  <LINK REL=StyleSheet HREF="BCUnit_doc.css" TYPE="text/css" TITLE="BCUnit Basic Style" />

BCUnit Progammers Guide

    Prev
    Home
    Next

4. Managing Tests & Suites

In order for a test to be run by BCUnit, it must be added to a test
collection (suite) which is registered