_match(cls,
                                   resource: "ResourceTypeBaseModel",
                                   field_name: str,
                                   expected_value: Any) -> "ResourceTypeBaseModel":
       """Validate that a field in a related resource matches the expected value."""
       if resource is None:
           return None

       actual_value = getattr(resource, field_name, None)
       if actual_value != expected_value:
           raise ValueError(
               f"Related resource {resource.__class__.__name__} has {field_name}='{actual_value}' "
               f"but expected '{expected_value}'"
           )
       return resource
   ```

These additions would make `ResourceTypeBaseModel` more powerful while keeping domain-specific logic in the respective models. The enhanced base model would provide helpful utilities for common relationship patterns and validation needs that your ontology models demonstrate.

Would you like me to implement these changes to the `ResourceTypeBaseModel` class?

---

_**User**_

please test and update my @examples and also all the documentation in the codebase to include those additions

---

_**Assistant**_

---

Let me find the ResourceTypeBaseModel class in the codebase to implement the enhancements:

---

<details>
            <summary>Grep search for "class ResourceTypeBaseModel" • **5** files</summary>

| File | Line | Match |
|------|------|-------|
| `vscode-remote://ssh-remote%2B51d73fd8-a177-4eca-bf17-d2ce07cf6a2e@51d73fd8-a177-4eca-bf17-d2ce07cf6a2e-00-2cvhc6pkvuru3.worf.replit.dev:22/home/runner/workspace/.specstory/history/2025-03-20_20-44-model-renaming-and-codebase-update.md` | L299 | `+ class ResourceTypeBaseModel(ResourceBaseModel, ResourceRelationshipMixin, table=False):` |
| `vscode-remote://ssh-remote%2B51d73fd8-a177-4eca-bf17-d2ce07cf6a2e@51d73fd8-a177-4eca-bf17-d2ce07cf6a2e-00-2cvhc6pkvuru3.worf.replit.dev:22/home/runner/workspace/.specstory/history/2025-03-20_20-44-model-renaming-and-codebase-update.md` | L320 | `+ class ResourceTypeBaseModel(ResourceBaseModel, ResourceRelationshipMixin, table=False):` |
| `vscode-remote://ssh-remote%2B51d73fd8-a177-4eca-bf17-d2ce07cf6a2e@51d73fd8-a177-4eca-bf17-d2ce07cf6a2e-00-2cvhc6pkvuru3.worf.replit.dev:22/home/runner/workspace/.specstory/history/2025-03-20_20-44-model-renaming-and-codebase-update.md` | L1943 | `⟪ 166 characters skipped ⟫gistro/core/resource_base.py` | L351 | `class ResourceTypeBaseModel(ResourceBaseModel, ResourceRelationshipMixin, table=False):` |` |
| `vscode-remote://ssh-remote%2B51d73fd8-a177-4eca-bf17-d2ce07cf6a2e@51d73fd8-a177-4eca


## Option 2: Master-Worker
```mermaid
graph TB
    M[Master] --> W1[Worker 1]
    M --> W2[Worker 2]
    M --> WN[Worker N]
    W1 & W2 & WN --> M
```

**Pros**: Simple coordination, easy work distribution
**Cons**: Master bottleneck, SPOF
**When to use**: Medium scale, trusted environment

#### Option 3: Peer-to-Peer
```mermaid
graph TB
    P1[Peer 1] <--> P2[Peer 2]
    P2 <--> P3[Peer 3]
    P3 <--> P1
```

**Pros**: No SPOF, natural failover
**Cons**: Complex coordination, network overhead
**When to use**: Highly distributed, unreliable nodes

#### Option 4: Stream-Based
```mermaid
graph LR
    U[URLs] --> K[Kafka]
    K --> C1[Crawler 1]
    K --> C2[Crawler 2]
    C1 & C2 --> K2[Kafka]
    K2 --> S[Storage]
```

**Pros**: Scalable, fault-tolerant, replay capability
**Cons**: Operational complexity, latency
**When to use**: Large scale, need replay/audit

### Performance Characteristics

**Crawling Performance:**
```text
Metric              Single    Distributed   Notes
Pages/second        100       10,000+       With 100 nodes
Bandwidth           100Mbps   10Gbps+       Aggregate
URL Frontier        1M        100B+         Distributed storage
Dedup Accuracy      100%      99.9%         Bloom filter
```

**Resource Usage:**
```text
Component         Memory    CPU      Storage
Worker            4GB       2 cores  100GB
Frontier Node     16GB      4 cores  1TB
Coordinator       8GB       2 cores  10GB
Storage Node      32GB      8 cores  10TB
```

### 🎓 Key Lessons

1. **Politeness is Paramount**: Respect robots.txt and crawl delays. Aggressive crawling leads to IP bans.

2. **Frontier Design is Critical**: The URL frontier becomes the bottleneck. Distributed, persistent design essential.

3. **Duplicate Detection at Scale is Hard**: Perfect deduplication is expensive. Probabilistic methods with occasional false positives acceptable.

4. **Trap Detection Saves Resources**: Spider traps and infinite spaces waste resources. Pattern detection crucial.

5. **Adaptive Crawling Wins**: Static priorities fail. ML-based scheduling improves freshness and coverage.

### 🔗 Related Concepts & Deep Dives

**Prerequisite Understanding:**
- [Law 3: Emergence](../../core-principles/laws/emergent-chaos.md) - Massive parallelism patterns
- [Law 6: Human-API](../../core-principles/laws/cognitive-load.md) - Crawler ethics and robots.txt
- [Queue Patterns](../pattern-library/scaling/queues-streaming.md) - Priority queue implementations
- [Bulkhead Pattern](../pattern-library/resilience/bulkhead.md) - Domain isolation strategies

**Advanced Topics:**
- JavaScript Crawling (Coming Soon) - Headless browser techniques
- Trap Detection (Coming Soon) - Identifying infinite spaces
- Distributed Deduplication (Coming Soon) - At-scale duplicate detection
- Adaptive Scheduling (Coming Soon) - ML-based crawl prioritization

**Related Case Studies:**
<!-- TODO: Add search engine case study -->
<!-- TODO: Add web archive case study -->
<!-- TODO: Add price monitor case study -->

**Implementation Patterns:**
- [Rate Limiting](../pattern-library/scaling/rate-limiting.md) - Respectful crawling rate control
- [URL Normalization](../pattern-library/scaling/url-normalization


if (StringUtils.isBlank(tenant)) {
            tenant = null;
        }
        if (isNotify && delayed < 0) {
            delayed = 0;
        }
        // localIp | dataid | group | tenant| requestIpAppName| ts | event | type | [delayed] |clientIp| isNotify | mode（http/grpc)
        LogUtil.TRACE_LOG.info("{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}|{}", InetUtils.getSelfIP(), dataId, group, tenant,
                requestIpAppName, ts, event, type, delayed, clientIp, isNotify, model);
    }
}
/*******************************************************************************
* Copyright (c) 2009 Luaj.org. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
******************************************************************************/
package org.luaj.vm2;

/**
 * Extension of {@link LuaFunction} which executes lua bytecode.
 *

 * A {@link LuaClosure} is a combination of a {@link Prototype}
 * and a {@link LuaValue} to use as an environment for execution.
 * Normally the {@link LuaValue} is a {@link Globals} in which case the environment
 * will contain standard lua libraries.
 *
 *

 * There are three main ways {@link LuaClosure} instances are created:
 *

 *
Construct an instance using {@link #LuaClosure(Prototype, LuaValue)}

 *
Construct it indirectly by loading a chunk via {@link Globals#load(java.io.Reader, String, LuaValue)}
 *
Execute the lua bytecode {@link Lua#OP_CLOSURE} as part of bytecode processing
 *

 *

 * To construct it directly, the {@link Prototype} is typically created via a compiler such as {@link LuaC}:
 *
 {@code
 * String script = "print( 'hello, world' )";
 * InputStream is = new ByteArrayInputStream(script.getBytes());
 * Prototype p = LuaC.instance.compile(is, "script");
 * LuaValue globals = JsePlatform.standardGlobals();
 * LuaClosure f = new LuaClosure(p, globals);
 * f.call();
 * }

 *

 * To construct it indirectly, the {@link Globals#load} method may be used:
 *
 {@code
 * Globals globals = JsePlatform.standardGlobals();
 * LuaFunction f = globals.load(new StringReader(script), "script");
 * LuaClosure c


.Name != assemblyName)
            {
                return;
            }

            var (isNamespace, isType) = allowedNamespaces.IsSymbolInTree(symbol);

            if (isNamespace)
            {
                foreach (var memeber in symbol.GetMembers().OfType<INamespaceSymbol>())
                {
                    memeber.Accept(this);
                }
            }

            if (isType)
            {
                foreach (var memeber in symbol.GetMembers().OfType<ITypeSymbol>())
                {
                    memeber.Accept(this);
                }
            }
        }

        public override void VisitNamedType(INamedTypeSymbol symbol)
        {
            if (filterByAssemblyName && symbol.ContainingAssembly != null && symbol.ContainingAssembly.Name != assemblyName)
            {
                return;
            }

            if (symbol.TypeKind == typeKind)
            {
                Result.Add(symbol);
            }

            foreach (INamedTypeSymbol childSymbol in symbol.GetTypeMembers())
            {
                base.Visit(childSymbol);
            }
        }
    }
}


2f9da21c] .el-menu .el-submenu__title>.sub-el-icon{font-size:14px;color:#999}.apply-main__menus[data-v-2f9da21c] .el-menu .el-sidebar_item+.el-sidebar_item{margin-top:16px}.apply-main__menus[data-v-2f9da21c] .el-menu .el-menu-item.is-active,.apply-main__menus[data-v-2f9da21c] .el-menu .el-menu-item:focus,.apply-main__menus[data-v-2f9da21c] .el-menu .el-menu-item:hover{outline:0;background-color:#623ceb}.apply-main__menus[data-v-2f9da21c] .el-menu .el-menu-item.is-active>span,.apply-main__menus[data-v-2f9da21c] .el-menu .el-menu-item:focus>span,.apply-main__menus[data-v-2f9da21c] .el-menu .el-menu-item:hover>span{font-weight:700;color:#fefefe}.apply-main__menus[data-v-2f9da21c] .el-menu .el-menu-item.is-active>.sub-el-icon,.apply-main__menus[data-v-2f9da21c] .el-menu .el-menu-item:focus>.sub-el-icon,.apply-main__menus[data-v-2f9da21c] .el-menu .el-menu-item:hover>.sub-el-icon{font-size:14px;color:#fefefe}.apply-main__menus[data-v-2f9da21c] .el-menu .el-sidebar_item .el-submenu__title .el-icon-arrow-down{display:none}.apply-main__menus[data-v-2f9da21c] .el-menu .el-sidebar_item .el-menu--inline{padding-top:8px}.apply-main__menus[data-v-2f9da21c] .el-menu .el-sidebar_item .el-menu--inline .el-menu-item>span{padding-left:21px}.apply-main__menus[data-v-2f9da21c] .el-menu .el-submenu__title:hover{background-color:#623ceb}.apply-main__menus[data-v-2f9da21c] .el-menu .el-submenu__title:hover>span{font-weight:700;color:#fefefe}.apply-main__menus[data-v-2f9da21c] .el-menu .el-submenu__title:hover>.sub-el-icon{font-size:14px;color:#fefefe}.apply-body[data-v-2f9da21c]{background-color:#222}.apply-body .apply-header[data-v-2f9da21c]{position:relative}.apply-body .apply-header__logo[data-v-2f9da21c]{width:36px;height:36px;margin-top:14px;margin-left:10px;background-color:inherit}.apply-body .apply-header__logo img[data-v-2f9da21c]{width:100%;height:100%}.apply-body .apply-header__menu[data-v-2f9da21c]{position:absolute;top:0;left:117px;min-width:500px;height:64px}.apply-body .apply-header__menu[data-v-2f9da21c] .el-menu{height:60px;background-color:#222;border:0}.apply-body .apply-header__menu[data-v-2f9da21c] .el-menu .el-menu-item,.apply-body .apply-header__menu[data-v-2f9da21c] .el-menu .el-submenu__title{font-weight:400;color:#999;height:64px}.apply-body .apply-


b/5),
10.2.1(28.u/5), 11.3(8.c/4),
11.5(31.m/5), 12.4(12.j/5),
12.5(16.k/5), 12.6(24.h/5),
13.1(29.x/5), 13.1.1(39.f/5),
13.3(86.s/5), 13.4(16.e/5),
13.5.1(32.f/5), 13.11(43.m/5),
13.11.3(9.e/4), 13.12.1(13.e/5),
13.13.1(39.e/5), 13.13.2(60.dd/4),
A.4.12(36.a/5), A.5.2(62.d/5),
A.5.5(3.a/5), A.5.6(25.b/5),
A.5.7(28.b/5), A.12.1(36.i/4),
A.15.1(3.a/5), A.16.2(3.a/5),
A.17.1(3.a/5), A.18(12.f/5),
A.18.2(264.q/5), A.18.3(164.o/5),
A.18.4(84.l/5), A.18.5(62.h/5),
A.18.6(


width: -webkit-calc( 100% - 2px );
	width: -moz-calc( 100% - 2px );
	width: calc( 100% - 2px );
	margin-top: 2px;

	/*
	border-radius: 4px;
	border-top: 1px solid #222;
	border-left: 1px solid #222;
	border-bottom: 1px solid #666;
	border-right: 1px solid #666;
	*/
}

.inspector .wgroup .wgroupheader {
	margin-top: 0;
	padding-left: 4px;
	cursor: pointer;
}

.inspector .wgroup .wgroupcontent {
	margin-left: 10px;
}

.inspector .wgroup .wgrouptoggle {
	display: inline-block;
	top: 0;
	left: 0;
	width: 8px;
	height: 8px;
	text-align: center;
	margin: 2px;
	margin-right: 4px;
	color: #999;
	line-height: 8px;
	font-size: 14px;
}

.inspector .wname {
	display: inline-block;
	-moz-box-sizing: border-box;
	-webkit-box-sizing: border-box;
	box-sizing: border-box;
	padding: 2px;
	padding-left: 4px;
	font-weight: normal;
	/* text-shadow: 0 1px 0 black; */
	vertical-align: top;
	user-select: none;
	-moz-user-select: none;
	-webkit-user-select: none;
	overflow: hidden;
	white-space:nowrap;
	width: 80px;
}

.inspector.one_line .wname
{
	width: auto;
}

.inspector .wname .filling {
	color: #666;
	margin-left: 5px;
}

.inspector .wcontent {
	display: inline-block;
	-moz-box-sizing: border-box;
	-webkit-box-sizing: border-box;
	box-sizing: border-box;
	padding: 2px;

	width: -webkit-calc( 100% - 80px );
	width: -moz-calc( 100% - 80px );
	width: calc( 100% - 80px );
}

.inspector.proportionalnamesize .wname {
	width: 30%;
}

.inspector.proportionalnamesize .wcontent {
	width: 70%;
}

.inspector .wcontent.full {
	width: 100%;
	padding-left: 5px;
}

.inspector .inputfield {
	display: inline-block;
	background-color: #222;
	border: 0;
	border-top: 1px solid #000;
	border-bottom: 1px solid #3f3f3f;
	border-radius: 3px;
}

.inspector .wcontent .inputfield input:focus, .inspector .wcontent .inputfield textarea:focus
{
	outline: none;
}

.inspector input::placeholder {
    color: #687177;
}

.inspector input::-webkit-input-placeholder {
    color: #687177;
}

.inspector input::-moz-input-placeholder {
    color: #687177;
}

.inspector .inputfield.disabled {
	background-color: #333;
}

.inspector .inputfield.disabled input, .inspector .inputfield.disabled textarea {
	color: #AAA;
}

.inspector .wcontent .inputfield.full {
	width: -moz-calc(100% - 4px);
	width: -webkit-calc(100% - 4px);
	width: calc(100% - 4px);
}

.inspector .wcontent .inputfield.textarea {
	display: block;
	margin: 0 4px 0 0;
	width: -moz-calc(100% - 4px);
	width: -webkit


 is not admin and don't have access to update
	// so don't error out, continue with printing a warning
	_, err = run.Clients.Kube.CoreV1().ConfigMaps(opts.TargetNamespace).Update(ctx, cm, metav1.UpdateOptions{})
	if err != nil {
		run.Clients.Log.Warnf("failed to update pipelines-as-code-info configmap: %v", err)
		return nil
	}
	return nil
}
package concurrency

import (
	"context"

	pacv1alpha1 "github.com/openshift-pipelines/pipelines-as-code/pkg/apis/pipelinesascode/v1alpha1"
	pacVersionedClient "github.com/openshift-pipelines/pipelines-as-code/pkg/generated/clientset/versioned"
	tektonv1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1"
	tektonVersionedClient "github.com/tektoncd/pipeline/pkg/client/clientset/versioned"
)

type TestQMI struct {
	QueuedPrs    []string
	RunningQueue []string
}

func (TestQMI) InitQueues(_ context.Context, _ tektonVersionedClient.Interface, _ pacVersionedClient.Interface) error {
	// TODO implement me
	panic("implement me")
}

func (TestQMI) RemoveRepository(_ *pacv1alpha1.Repository) {
}

func (t TestQMI) QueuedPipelineRuns(_ *pacv1alpha1.Repository) []string {
	return t.QueuedPrs
}

func (TestQMI) RunningPipelineRuns(_ *pacv1alpha1.Repository) []string {
	// TODO implement me
	panic("implement me")
}

func (t TestQMI) AddListToRunningQueue(_ *pacv1alpha1.Repository, _ []string) ([]string, error) {
	return t.RunningQueue, nil
}

func (TestQMI) AddToPendingQueue(_ *pacv1alpha1.Repository, _ []string) error {
	// TODO implement me
	panic("implement me")
}

func (t TestQMI) RemoveFromQueue(_, _ string) bool {
	return false
}

func (TestQMI) RemoveAndTakeItemFromQueue(_ *pacv1alpha1.Repository, _ *tektonv1.PipelineRun) string {
	// TODO implement me
	panic("implement me")
}
package tekton

import (
	"time"

	"github.com/jonboulle/clockwork"
	tektonv1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1"
	corev1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	knativeapi "knative.dev/pkg/apis"
	knativeduckv1 "knative.dev/pkg/apis/duck/v1"
	"sigs.k8s.io/yaml"
)

func MakePrTrStatus(ptaskname, displayName string, completionmn int) *tektonv1.PipelineRunTaskRunStatus {
	clock := clockwork.NewFakeClock()

	completionTime := &metav1.Time{}
	if completionmn > 0 {
		completionTime = &metav1.Time{Time: clock.Now().Add(time.Duration(completionmn+20) * time.Minute)}
	}

	conditionTrue := knativeduckv1.Status{
		Conditions: knativeduckv1.Conditions{
			{
				Status: corev1.ConditionTrue,
			},
		},
	}
	return &tektonv1.PipelineRunTaskRunStatus{
		PipelineTaskName: ptaskname,
		Status: &tektonv1.TaskRunStatus{
			TaskRunStatusFields: tektonv1.TaskRunStatusFields{
				StartTime:      &metav1.Time{Time: clock.Now().Add(time.Duration(completionmn+10) * time.Minute)},
				CompletionTime: completionTime,
				TaskSpec: &tektonv1.TaskSpec{
					DisplayName: displayNa


<<A);else{for(L=0;L<2;++L){I=(z=L<<A)+(L<<M)+(1-L<<S),P=z+(1-L<<M)+(L<<S);var z,O=d([l[z],l[I],l[P],l[z+(1<<M)+(1<<S)]]);L?E=O:C=O}C>E&&(w|=1<<A)}}}var D=7^w,R=-1;for(x=0;x<8;++x)x!==w&&x!==D&&(R<0||c[R][1]>c[x][1])&&(R=x);var F=-1;for(x=0;x<3;++x)(N=R^1<<x)!==w&&N!==D&&(F<0&&(F=N),(S=c[N])[0]<c[F][0]&&(F=N));var B=-1;for(x=0;x<3;++x){var N;(N=R^1<<x)!==w&&N!==D&&N!==F&&(B<0&&(B=N),(S=c[N])[0]>c[B][0]&&(B=N))}var j=m;j[0]=j[1]=j[2]=0,j[n.log2(F^R)]=R&F,j[n.log2(R^B)]=R&B;var U=7^B;U===w||U===D?(U=7^F,j[n.log2(B^U)]=U&B):j[n.log2(F^U)]=U&F;var V=g,q=w;for(A=0;A<3;++A)V[A]=q&1<<A?-1:1;return y};var n=r(8828),i=r(6760),a=r(5202),o=r(3250),s=new Array(16),l=new Array(8),c=new Array(8),u=new Array(3),h=[0,0,0];function f(t,e,r){for(var n=0;n<4;++n){t[n]=r[12+n];for(var i=0;i<3;++i)t[n]+=e[i]*r[4*i+n]}}!function(){for(var t=0;t<8;++t)l[t]=[1,1,1,1],c[t]=[1,1,1]}();var p=[[0,0,1,0,0],[0,0,-1,1,0],[0,-1,0,1,0],[0,1,0,1,0],[-1,0,0,1,0],[1,0,0,1,0]];function d(t){for(var e=0;e<p.length;++e)if((t=a.positive(t,p[e])).length<3)return 0;var r=t[0],n=r[0]/r[3],i=r[1]/r[3],o=0;for(e=1;e+1<t.length;++e){var s=t[e],l=t[e+1],c=s[0]/s[3]-n,u=s[1]/s[3]-i,h=l[0]/l[3]-n,f=l[1]/l[3]-i;o+=Math.abs(c*f-u*h)}return o}var m=[1,1,1],g=[0,0,0],y={cubeEdges:m,axis:g}},501:function(t,e,r){"use strict";t.exports=function(t,e,r){var o=[],s=[0,0,0],l=[0,0,0],c=[0,0,0],u=[0,0,0];o.push(0,0,1,0,1,1,0,0,-1,0,0,-1,0,1,1,0,1,-1);for(var h=0;h<3;++h){for(var f=o.length/3|0,d=0;d<r[h].length;++d){var m=+r[h][d].x;o.push(m,0,1,m,1,1,m,0,-1,m,0,-1,m,1,1,m,1,-1)}var g=


	addLowLevelRoomSpawnOptions(room: Room, options: RoomDefenseSpawnOption[]) {
		// In low level rooms, add defenses!
		if (room.controller.level >= 4) return;
		if ((room.controller.safeMode || 0) > 500) return;
		if (!room.memory.enemies || room.memory.enemies.safe) return;
		if (_.size(room.creepsByRole.brawler) >= 2) return;

		options.push({
			priority: 5,
			weight: 1,
			creepRole: 'brawler',
		});
	}

	/**
	 * Adds guardian spawn options for rampart defense.
	 *
	 * @param {Room} room
	 *   The room to add spawn options for.
	 * @param {Object[]} options
	 *   A list of spawn options to add to.
	 */
	addRampartDefenderSpawnOptions(room: Room, options: RoomDefenseSpawnOption[]) {
		if (room.controller.level < 4) return;
		if (!this.hasSignificantEnemies(room) && !this.isSafemodeRunningOut(room)) return;

		const responseType = this.getDefenseCreepSize(room);

		if (responseType === RESPONSE_NONE) return;

		// @todo Limit defense creeps to number of threats and ramparts to cover.
		if (_.size(room.creepsByRole.guardian) >= 5) return;

		options.push({
			priority: 5,
			weight: 1,
			responseType,
			creepRole: 'guardian',
		});
	}

	hasSignificantEnemies(room: Room) {
		return room.defense.getEnemyStrength() >= ENEMY_STRENGTH_NORMAL;
	}

	isSafemodeRunningOut(room: Room) {
		return room.controller.safeMode && room.controller.safeMode < 300;
	}

	/**
	 * Spawn extra builders to keep ramparts up when attacked.
	 *
	 * @param {Room} room
	 *   The room to add spawn options for.
	 * @param {Object[]} options
	 *   A list of spawn options to add to.
	 */
	addEmergencyRepairSpawnOptions(room: Room, options: RoomDefenseSpawnOption[]) {
		if (room.controller.level < 4) return;
		if (!room.memory.enemies || room.memory.enemies.safe) return;
		if (room.getEffectiveAvailableEnergy() < 10_000) return;

		// @todo Send energy to rooms under attack for assistance.

		const responseType = this.getDefenseCreepSize(room);

		if (responseType === RESPONSE_NONE) return;

		if (_.size(room.creepsByRole.builder) >= 5) return;

		options.push({
			priority: 4,
			weight: 1,
			responseType,
			creepRole: 'builder',
		});
	}

	getDefenseCreepSize(room: Room): number {
		const enemyStrength = room.defense.getEnemyStrength();

		if (enemyStrength >= ENEMY_STRENGTH_NORMAL) {
			// Spawn a mix of meelee and ranged defenders.
			const totalGuardians = _.size(room.creepsByRole.guardian);
			const rangedGuardians = _.size(_.filter(room.creepsByRole.guardian, (creep: GuardianCreep) => creep.getActiveBodyparts(RANGED_ATTACK) > 0));

			if (rangedGuardians < Math.floor(totalGuardians / 4)) return RESPONSE_RANGED_ATTACKER;

			return RESPONSE_ATTACKER;
		}

		// @todo Decide if boosts should be used as well.

		// If attacker too weak, don't spawn defense at all. Towers will handle it.
		return RESPONSE_NONE;
	}

	/**
	 * Gets the body of a creep to be spawned.
	 *
	 * @param {Room} room
	 *   The room to add spawn options for.
	 * @param {Object} option
	 *   The spawn option for which to generate the body.
	 *
	 * @return {string[]}
	 *   A list of body


ZW50b3NfbiRMb25nLGRhdG9zX2FsaW5lYW1pZW50b3NfbiRudW0sc2hhcGlyby50ZXN0KVxuXG5gYGAifQ== -->

# Shapiro-Wilk normality test for score
#by(datos_alineamientos_n$Score,datos_alineamientos_n$num,shapiro.test)

# Shapiro-Wilk normality test for long
#by(datos_alineamientos_n$Long,datos_alineamientos_n$num,shapiro.test)

Existen 10 grupos que tienen un p-valor inferior a 0.05, lo que
quiere decir que no cumplen con una distribución normal. En cambio hay 4
grupos que tienen un p-valor mayor a 0.05, es decir que estos estarían
cumpliendo con la distribución normal de los datos. Pero en general la
mayoría de los datos del tiempo no siguen con una distribución
normal.

# Shapiro-Wilk normality test for score
#by(datos_alineamientos_n$Score,datos_alineamientos_n$num,shapiro.test)

# Shapiro-Wilk normality test for long
#by(datos_alineamientos_n$Long,datos_alineamientos_n$num,shapiro.test)

Pruebas para Homogeneidad de varianza

Comprueba que las varianzas de la respuesta en cada grupo son
iguales. Por lo que, para esta prueba la hipótesis nula quiere decir que
los datos presentan homogeneidad de varianza entre los grupos. De esa
manera, si el p-valor es inferior a 0.05 no se cumple este supuesto.
Pero si en cambio el p-valor es mayor a 0.05 existe homogeneidad de
varianza.

<pre cl


txThreadFlagsClearDone()
: rtx_evr.h

EvrRtxThreadFlagsError()
: rtx_evr.h

EvrRtxThreadFlagsGet()
: rtx_evr.h

EvrRtxThreadFlagsSet()
: rtx_evr.h

EvrRtxThreadFlagsSetDone()
: rtx_evr.h

EvrRtxThreadFlagsWait()
: rtx_evr.h

EvrRtxThreadFlagsWaitCompleted()
: rtx_evr.h

EvrRtxThreadFlagsWaitNotCompleted()
: rtx_evr.h

EvrRtxThreadFlagsWaitPending()
: rtx_evr.h

EvrRtxThreadFlagsWaitTimeout()
: rtx_evr.h

EvrRtxThreadGetCount()
: rtx_evr.h

EvrRtxThreadGetId()
: rtx_evr.h

EvrRtxThreadGetName()
: rtx_evr.h

EvrRtxThreadGetPriority()
: <a class="el" href="group__rtx__evr__thread.html#gada73306deca99987


ns>Task to be awaited</returns>
        public virtual Task OnSoapEnvelopeRequestAsync(ISoapClient client, OnSoapEnvelopeRequestArguments arguments, CancellationToken ct)
        {
            return CachedTask;
        }

        /// <summary>
        /// Method invoked before sending the <see cref="HttpRequestMessage"/> to the server.
        /// Useful to log the request or change properties like HTTP headers.
        /// </summary>
        /// <param name="client">The client sending the request</param>
        /// <param name="arguments">The method arguments</param>
        /// <param name="ct">The cancellation token</param>
        /// <returns>Task to be awaited</returns>
        public virtual Task OnHttpRequestAsync(ISoapClient client, OnHttpRequestArguments arguments, CancellationToken ct)
        {
            return CachedTask;
        }

        /// <summary>
        /// Method invoked after receiving a <see cref="HttpResponseMessage"/> from the server.
        /// Useful to log the response or validate HTTP headers.
        /// </summary>
        /// <param name="client">The client sending the request</param>
        /// <param name="arguments">The method arguments</param>
        /// <param name="ct">The cancellation token</param>
        /// <returns>Task to be awaited</returns>
        public virtual Task OnHttpResponseAsync(ISoapClient client, OnHttpResponseArguments arguments, CancellationToken ct)
        {
            return CachedTask;
        }

        /// <summary>
        /// Method invoked after deserializing a <see cref="SoapEnvelope"/> from the server response.
        /// Useful to validate properties like <see cref="SoapHeader"/>.
        /// </summary>
        /// <param name="client">The client sending the request</param>
        /// <param name="arguments">The method arguments</param>
        /// <param name="ct">The cancellation token</param>
        /// <returns>Task to be awaited</returns>
        public virtual Task OnSoapEnvelopeResponseAsync(ISoapClient client, OnSoapEnvelopeResponseArguments arguments, CancellationToken ct)
        {
            return CachedTask;
        }

        #endregion
    }
}


TestPutSecretRecord(t *testing.T) {
	ctrl := gomock.NewController(t)
	defer ctrl.Finish()

	ddbClient := mock_client.NewMockClient(ctrl)

	ddbClient.EXPECT().PutItem(&dynamodb.PutItemInput{
		TableName: aws.String("ECS-Secrets-myapp-Secrets"),
		Item: map[string]*dynamodb.AttributeValue{
			"Name": {
				S: aws.String("foo-name"),
			},
			"Serial": {
				N: aws.String("1"),
			},
			"EncryptedData": {
				S: aws.String("foo-data"),
			},
			"EncryptedDataKey": {
				S: aws.String("foo-data-key"),
			},
			"Active": {
				BOOL: aws.Bool(true),
			},
		},
	}).Return(nil, nil)
	dao := NewDAO("myapp", ddbClient)
	secret := &SecretRecord{
		Name:             "foo-name",
		Serial:           1,
		EncryptedData:    "foo-data",
		EncryptedDataKey: "foo-data-key",
		Active:           true,
	}
	err := dao.PutSecretRecord(secret)
	if err != nil {
		t.Errorf("Error putting secret record: %v", err)
	}
}

func TestPutSecretRecordError(t *testing.T) {
	ctrl := gomock.NewController(t)
	defer ctrl.Finish()

	ddbClient := mock_client.NewMockClient(ctrl)

	ddbClient.EXPECT().PutItem(&dynamodb.PutItemInput{
		TableName: aws.String("ECS-Secrets-myapp-Secrets"),
		Item: map[string]*dynamodb.AttributeValue{
			"Name": {
				S: aws.String("foo-name"),
			},
			"Serial": {
				N: aws.String("1"),
			},
			"EncryptedData": {
				S: aws.String("foo-data"),
			},
			"EncryptedDataKey": {
				S: aws.String("foo-data-key"),
			},
			"Active": {
				BOOL: aws.Bool(true),
			},
		},
	}).Return(nil, fmt.Errorf("i have secrets of my own, you know?"))
	dao := NewDAO("myapp", ddbClient)
	secret := &SecretRecord{
		Name:             "foo-name",
		Serial:           1,
		EncryptedData:    "foo-data",
		EncryptedDataKey: "foo-data-key",
		Active:           true,
	}
	err := dao.PutSecretRecord(secret)
	if err == nil {
		t.Error("Expected error putting secret record")
	}
}

func TestRevokeSecretRecord(t *testing.T) {
	ctrl := gomock.NewController(t)
	defer ctrl.Finish()

	ddbClient := mock_client.NewMockClient(ctrl)

	ddbClient.EXPECT().UpdateItem(&dynamodb.UpdateItemInput{
		TableName: aws.String("ECS-Secrets-myapp-Secrets"),
		Key: map[string]*dynamodb.AttributeValue{
			"Name": {
				S: aws.String("foo"),
			},
			"Serial": {
				N: aws.String("1"),
			},
		},
		AttributeUpdates: map[string]*dynamodb.AttributeValueUpdate{
			"Active": &dynamodb.AttributeValueUpdate{
				Value: &dynamodb.AttributeValue{
					BOOL: aws.Bool(false),
				},
				Action: aws.String("PUT"),
			},
		},
	}).Return(nil, nil)
	dao := NewDAO("myapp", ddbClient)
	err := dao.RevokeSecretRecord("foo", 1)
	if err != nil {
		t.Errorf("Error revoking secret record: %v", err)
	}
}

func TestGetLatestVersion(t *


-out",
		target_common.get_target_directory(target_common.extract_base_target(target_name), target_name),
	})
	ensure_dir(out_dir)

	local library_base_name = library_info.name

	if forge.config and forge.config.test_mode then
		library_base_name = library_base_name .. "_test"
	end

	local output_name = "lib" .. library_base_name .. ".a"
	local output_path = forge.path.join({ out_dir, output_name })

	local sources
	if library_info.srcs then
		sources = common.resolve_sources(library_info.srcs, library_path)
	else
		sources = {}
		local patterns = { "**/*.cpp", "**/*.cxx", "**/*.cc", "**/*.C" }
		for _, pattern in ipairs(patterns) do
			local pattern_path = forge.path.join({ library_path, pattern })
			local files = forge.fs.glob(pattern_path)
			for _, file in ipairs(files) do
				table.insert(sources, file)
			end
		end
	end

	if #sources == 0 then
		forge.log.warn(("No C++ source files found for library '%s'"):format(library_info.name))
		return
	end

	local object_files = {}
	local compile_rules = {}

	for i, src in ipairs(sources) do
		local obj_name = forge.path.stem(forge.path.basename(src)) .. ".o"
		local obj_path = forge.path.join({ out_dir, obj_name })
		table.insert(object_files, obj_path)

		local compile_rule_name = ("%s-obj-%d-%s"):format(library_info.name, i, target_name)
		table.insert(compile_rules, compile_rule_name)

		local compile_args = {}
		for _, arg in ipairs(compiler_info.args) do
			table.insert(compile_args, arg)
		end

		table.insert(compile_args, "-c")
		table.insert(compile_args, to_absolute_path(src, library_path))
		table.insert(compile_args, "-o")
		table.insert(compile_args, obj_path)

		local build_con


Left            ,
    Right            XK_Right           ,

    PageUp           XK_Prior ,
    PageDown         XK_Next  ,

    Insert           XK_Insert          ,
    Delete           XK_Delete          ,

    SysRQ            XK_Sys_Req           ,
    LineFeed         XK_Linefeed        ,

    Kp0              XK_KP_0            ,
    Kp1              XK_KP_1            ,
    Kp2              XK_KP_2            ,
    Kp3              XK_KP_3            ,
    Kp4              XK_KP_4            ,
    Kp5              XK_KP_5            ,
    Kp6              XK_KP_6            ,
    Kp7              XK_KP_7            ,
    Kp8              XK_KP_8            ,
    Kp9              XK_KP_9            ,
    KpPlus           XK_KP_Add         ,
    KpMinus          XK_KP_Subtract        ,
    KpAsterisk       XK_KP_Multiply     ,
    KpSlash          XK_KP_Divide        ,
    KpDot            XK_KP_Decimal          ,
    KpEnter          XK_KP_Enter        ,
    KpEqual          XK_KP_Equal        ,
    KpComma          XK_KP_Separator        ,

    Mute             XF86XK_AudioMute            ,
    VolumeDown       XF86XK_AudioLowerVolume      ,
    VolumeUp         XF86XK_AudioRaiseVolume      ,
    Power            XF86XK_PowerOff           ,
    Pause            XK_Pause           ,

    ZenkakuHankaku   XK_Zenkaku_Hankaku  ,
    Katakana         XK_Katakana        ,
    Hiragana         XK_Hiragana        ,
    Henkan           XK_Henkan          ,
    KatakanaHiragana XK_Hiragana_Katakana,
    Muhenkan         XK_Muhenkan        ,

    Yen              XK_yen             ,

    {
        ignored:
        Hangul,
        Hanja,
        Junja,
        Final,
        Kanji,
        NextTrack, PrevTrack, PlayPause,
        Stop,
        BrowserBack,
        BrowserForward,
        BrowserRefresh,
        BrowserStop,
        BrowserSearch,
        BrowserFavorites,
        BrowserHome,
        LaunchMail,
        LaunchMediaSelect,
        LaunchApp1,
        LaunchApp2,
        Sleep,
        Menu,
        Snapshot,
        Select,
        Print,
        Execute,
        Help,
        Apps,
        Plus,
        Comma,
        Minus,
        Dot,
        F13,
        F14,
        F15,
        F16,
        F17,
        F18,
        F19,
        F20,
        F21,
        F22,
        F23,
        F24,
        ImeConvert,
        ImeNonConvert,
        ImeAccept,
        ImeModeChange,
    }
}
use std::error::Error;
use clap::{App, Arg, ArgMatches, SubCommand};
use crate::errors::{InvalidPuzzleError, UnsolvableError};
use crate::solver::board::Board;
use crate::solver::solve::solve;

pub fn register_command<'a> (app: App<'a, 'a>) -> App<'a, 'a> {
    app.subcommand(SubCommand::with_name("solve")
        .about("Solves a given puzzle")
        .arg(Arg::with_name("puzzles")
            .required(true)
            .multiple(true)
            .help("ASD"))
        .arg(Arg::with_name("unambiguous")
            .short("u")
            .long("unambiguous")
            .help("Test the puzzle for ambiguity"))
        .arg(Arg::with_name("pretty")
            .short("p")
            .long("pretty-print")
            .help("Displays the solved puzzles nicely")))
}

pub fn execute (matches: &ArgMatches) -> Result<(),Box<dyn Error>> {
    if let Some(matches) = matches.subcommand_matches("solve") {
        let ambiguity = matches.is_present("unambiguous");


 di polvere | scappare | soffio | vento',
    ),
    Emoji(
      '🦍',
      'animale | foresta | scimmia | selvatico',
    ),
    Emoji(
      '🐕',
      'abbaiare | animale | animale domestico | animali | cagnolino | cane | cucciolo',
    ),
    Emoji(
      '🐩',
      'animale | cane | pelo | razza | soffice',
    ),
    Emoji(
      '🐺',
      'animale | bosco | faccina | favola | fiaba | lupo mannaro | muso di lupo | selvatico',
    ),
    Emoji(
      '🦝',
      'animale | curiosità | curioso | furbizia | furbo | procione',
    ),
    Emoji(
      '🐈',
      'animale | cucciolo | domestico | gatta | gattina | gattino | miao | micino | micio',
    ),
    Emoji(
      '🐅',
      'animale | animali | felino | predatore | tigre',
    ),
    Emoji(
      '🐆',
      'animale | felino | leopardo | predatore | selvatico',
    ),
    Emoji(
      '🐴',
      'animale | campagna | cavallino | cowboy | dressage | equino | faccina | far west | fattoria | rampante',
    ),
    Emoji(
      '🐎',
      'animale | cavallo | cavallo da corsa | corsa | corse | fattoria | galoppo | polo | ranch | trotto',
    ),
    Emoji(
      '🦄',
      'faccina | unicorno',
    ),
    Emoji(
      '🦓',
      'animale | animali | bianco | bianconero | nero | strisce | zebra',
    ),
    Emoji(
      '🐂',
      'animale | animali | bovini | bovino | bue | domestico | fattoria | segno zodiacale del toro | toro',
    ),
    Emoji(
      '🐃',
      'animale | animali | animali selvatici | bufalo | bufalo d’acqua',
    ),
    Emoji(
      '🐄',
      'animale | animali | fattoria | latte | mucca | muu | vacca',
    ),
    Emoji(
      '🐖',
      'animale | animali | fattoria | maiale | scrofa',
    ),
    Emoji(
      '🐗',
      'animale | animali | bosco | cinghiale | faccina cinghiale | game of thones | maiale selvatico',
    ),
    Emoji(
      '🐏',
      'animale | animali | ariete | fattoria | montone | ovino | pecora | segno zodiacale dell’ariete',
    ),
    Emoji(
      '🐑',
      'animale | beeh | campagna | contare le pecore | fattoria | lana | montone | morbido | notte | pecorella | pecorone | soffice',
    ),
    Emoji(
      '🐐',
      'animale | animali | capra | capricorno | fattoria | latte | segno zodiacale del capricorno',
    ),
    Emoji(
      '🐪',
      'Africa | animale | animali | cammello | deserto | dromedario | gobba | gobbe | trasporto',
    ),
    Emoji(
      '🐫',
      'animale | animali | cammello | deserto |


$U$)NrrravelrrEreshaper8)rGrqrress    rO_get_arrayXint_lil_base._get_arrayXintF""399;cq50AB88a<;;syy))
rYc(URU4U5$)Nr)rGrqrs   rO_get_intXslice_lil_base._get_intXslice##SFC00rYcl[URURS56nURX5$)NrrBrr8r)rGrqrs   rO_get_sliceXslice_lil_base._get_sliceXslice.S[[A/0##C--rYc$URX5$)Nr)rGrqrs   rO_get_arrayXslice_lil_base._get_arrayXslice##C--rYcb[R"XRSS9nURX5$)Nrr,ndminr?rmr,_get_columnXarray)rGrqrs   rO_get_intXarray_lil_base._get_intXarray'hhs))15%%c//rYc[R"URURS56nUR	X5$)Nrr?arangerr8r)rGrqrs   rO_get_sliceXarray_lil_base._get_sliceXarray2iiTZZ]34%%c//rYcN[USS2S4U5upURX5$)Nr_get_arrayXarray)rGrqrs   rOr_lil_base._get_columnXarray)$S4[#6$$S..rYc
T[[R[X55up4UR	UR
URS9n[R"UR
SUR
SURURURURX45 U$)Nr+rrmapr?
atleast_2d_prepare_index_for_memoryviewrr8r,r
lil_fancy_getr:r;)rGrqrrMjrs      rOr_lil_base._get_arrayXarray}2=="?"IJ!!!''!<##DJJqM4::a=$(IItyy$'HHchh$%	*
rYc
URURS5up4n[X4U5n[U5nUR	[U5U4UR
S9n[R"URSURSURURURURUX4XW5 U$)[
Fast path for indexing in the case where column index is slice.

This gains performance improvement over brute force by more
efficient skipping of zeros, by accessing the elements
column-wise in order.

Parameters
----------
rows : sequence or range
    Rows indexed. If range, must be within valid bounds.
col_slice : slice
    Columns indexed

rr+r
rr8rBrjrr,rlil_get_row_rangesr:r;)	rGr:	col_slicej_startj_stopj_stride	col_rangenjrs	         rOr_lil_base._get_row_ranges %.$5$5djjm$D!'84
^!!3t9b/!D((A

1
)-DII),388)-)0(		H
rYc	[R"URSURSURURXU5 g)Nrrr
lil_insertr8r:r;)rGrqrrs    rO_set_intXint_lil_base._set_intXint5  A

1
tyy!%Ca	9rYc	[[R[XU55upEn[R
"URSURSURURXEU5 g)Nrr	rr?rrr
lil_fancy_setr8r:r;)rGrqrrrMrs      rO_set_arrayXarray_lil_base._set_arrayXarrayRbmm%B3Q%OPa##DJJqM4::a=$(IItyy$%!	-rYc[R"UR5URS9n[	X15up4URXU5 g)Nr+r?rtoarrayr,rr)rGrqrr_s     rO_set_arrayXarray_sparse!_lil_base._set_arrayXarray_sparse8JJqyy{$**5 (c*rYc[U[5(Ga


   argValues: [d],
      apiImpl: this,
    ));
  }

  TaskConstMeta
      get kCrateApiPseudoManualChronoTypeTwinRustAsyncDatetimeUtcTwinRustAsyncConstMeta =>
          const TaskConstMeta(
            debugName: "datetime_utc_twin_rust_async",
            argNames: ["d"],
          );

  @override
  DateTime crateApiPseudoManualChronoTypeTwinSyncDatetimeUtcTwinSync(
      {required DateTime d}) {
    return handler.executeSync(SyncTask(
      callFfi: () {
        final serializer = SseSerializer(generalizedFrbRustBinding);
        sse_encode_Chrono_Utc(d, serializer);
        return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 367)!;
      },
      codec: SseCodec(
        decodeSuccessData: sse_decode_Chrono_Utc,
        decodeErrorData: null,
      ),
      constMeta:
          kCrateApiPseudoManualChronoTypeTwinSyncDatetimeUtcTwinSyncConstMeta,
      argValues: [d],
      apiImpl: this,
    ));
  }

  TaskConstMeta
      get kCrateApiPseudoManualChronoTypeTwinSyncDatetimeUtcTwinSyncConstMeta =>
          const TaskConstMeta(
            debugName: "datetime_utc_twin_sync",
            argNames: ["d"],
          );

  @override
  Future<void> crateApiDartOpaqueDropStaticDartOpaqueTwinNormal(
      {required int id}) {
    return handler.executeNormal(NormalTask(
      callFfi: (port_) {
        final serializer = SseSerializer(generalizedFrbRustBinding);
        sse_encode_i_32(id, serializer);
        pdeCallFfi(generalizedFrbRustBinding, serializer,
            funcId: 368, port: port_);
      },
      codec: SseCodec(
        decodeSuccessData: sse_decode_unit,
        decodeErrorData: null,
      ),
      constMeta: kCrateApiDartOpaqueDropStaticDartOpaqueTwinNormalConstMeta,
      argValues: [id],
      apiImpl: this,
    ));
  }

  TaskConstMeta
      get kCrateApiDartOpaqueDropStaticDartOpaqueTwinNormalConstMeta =>
          const TaskConstMeta(
            debugName: "drop_static_dart_opaque_twin_normal",
            argNames: ["id"],
          );

  @override
  Future<void>
      crateApiPseudoManualDartOpaqueTwinRustAsyncDropStaticDartOpaqueTwinRustAsync(
          {required int id}) {
    return handler.executeNormal(NormalTask(
      callFfi: (port_) {
        final serializer = SseSerializer(generalizedFrbRustBinding);
        sse_encode_i_32(id, serializer);
        pdeCallFfi(generalizedFrbRustBinding, serializer,
            funcId: 369, port: port_);
      },
      codec: SseCodec(
        decodeSuccessData: sse_decode_unit,
        decodeErrorData: null,
      ),
      constMeta:
          kCrateApiPseudoManualDartOpaqueTwinRustAsyncDropStaticDartOpaqueTwinRustAsyncConstMeta,
      argValues: [id],
      apiImpl: this,
    ));
  }

  TaskConstMeta
      get kCrateApiPseudoManualDartOpaqueTwinRustAsyncDropStaticDartOpaqueTwinRustAsyncConstMeta =>
          const TaskConstMeta(
            debugName: "drop_static_dart_opaque_twin_rust_async",
            argNames: ["id"],
          );

  @override
  void crateApiPseudoManualDartOpaqueTwinSyncDropStaticDartOpaqueTwinSync(
      {required int id}) {
    return handler.executeSync


loc+1][kloc] + dual[0][ipart]*field_buffer[iloc+1][jloc+1][kloc] )  );

                    }
                }
            }

            Bpart[2][ipart] = interp_res;

        }

    }
} // END Interpolator3D2OrderV

void Interpolator3D2OrderV::fieldsAndCurrents( ElectroMagn * __restrict__ EMfields,
                                               Particles &particles,
                                               SmileiMPI * __restrict__ smpi,
                                               int * __restrict__ istart,
                                               int * __restrict__ ,
                                               int ithread,
                                               LocalFields * __restrict__ JLoc,
                                               double * __restrict__ RhoLoc )
{
    // iend not used for now
    // probes are interpolated one by one for now

    int ipart = *istart;
    int nparts( particles.numberOfParticles() );

    double * __restrict__ Epart[3], * __restrict__ Bpart[3];
    for( unsigned int k=0; k<3; k++ ) {
        Epart[k]= &( smpi->dynamics_Epart[ithread][k*nparts] );
        Bpart[k]= &( smpi->dynamics_Bpart[ithread][k*nparts] );
    }

    int idxO[3];
    double idx[3];
    //Primal indices are the same for all particles
    idx[0]  = round( particles.position( 0, *istart ) * d_inv_[0] );
    idxO[0] = ( int )idx[0] - i_domain_begin ;
    idx[1]  = round( particles.position( 1, *istart ) * d_inv_[1] );
    idxO[1] = ( int )idx[1] - j_domain_begin ;
    idx[2]  = round( particles.position( 2, *istart ) * d_inv_[2] );
    idxO[2] = ( int )idx[2] - k_domain_begin ;

    Field3D * __restrict__ Ex3D = static_cast<Field3D *>( EMfields->Ex_ );
    Field3D * __restrict__ Ey3D = static_cast<Field3D *>( EMfields->Ey_ );
    Field3D * __restrict__ Ez3D = static_cast<Field3D *>( EMfields->Ez_ );
    Field3D * __restrict__ Bx3D = static_cast<Field3D *>( EMfields->Bx_ );
    Field3D * __restrict__ By3D = static_cast<Field3D *>( EMfields->By_ );
    Field3D * __restrict__ Bz3D = static_cast<Field3D *>( EMfields->Bz_ );
    Field3D * __restrict__ Jx3D = static_cast<Field3D *>( EMfields->Jx_ );
    Field3D * __restrict__ Jy3D = static_cast<Field3D *>( EMfields->Jy_ );
    Field3D * __restrict__ Jz3D = static_cast<Field3D *>( EMfields->Jz_ );
    Field3D * __restrict__ rho3D = static_cast<Field3D *>( EMfields->rho_ );

    double coeff[3][2][3];
    int dual[3]; // Size ndim. Boolean indicating if the part has a dual indice equal to the primal one (dual=0, delta_primal < 0) or if it is +1 (dual=1, delta_primal>=0).

    double delta2,


.Op != OpS390XFlagEQ || !(c&s390x.Equal == 0) {
			break
		}
		v.copyOf(x)
		return true
	}
	// match: (LOCGR {c} x _ (FlagLT))
	// cond: c&s390x.Less == 0
	// result: x
	for {
		c := auxToS390xCCMask(v.Aux)
		x := v_0
		if v_2.Op != OpS390XFlagLT || !(c&s390x.Less == 0) {
			break
		}
		v.copyOf(x)
		return true
	}
	// match: (LOCGR {c} x _ (FlagGT))
	// cond: c&s390x.Greater == 0
	// result: x
	for {
		c := auxToS390xCCMask(v.Aux)
		x := v_0
		if v_2.Op != OpS390XFlagGT || !(c&s390x.Greater == 0) {
			break
		}
		v.copyOf(x)
		return true
	}
	// match: (LOCGR {c} x _ (FlagOV))
	// cond: c&s390x.Unordered == 0
	// result: x
	for {
		c := auxToS390xCCMask(v.Aux)
		x := v_0
		if v_2.Op != OpS390XFlagOV || !(c&s390x.Unordered == 0) {
			break
		}
		v.copyOf(x)
		return true
	}
	return false
}
func rewriteValueS390X_OpS390XLTDBR(v *Value) bool {
	v_0 := v.Args[0]
	b := v.Block
	// match: (LTDBR (Select0 x:(FADD _ _)))
	// cond: b == x.Block
	// result: (Select1 x)
	for {
		if v_0.Op != OpSelect0 {
			break
		}
		x := v_0.Args[0]
		if x.Op != OpS390XFADD || !(b == x.Block) {
			break
		}
		v.reset(OpSelect1)
		v.AddArg(x)
		return true
	}
	// match: (LTDBR (Select0 x:(FSUB _ _)))
	// cond: b == x.Block
	// result: (Select1 x)
	for {
		if v_0.Op != OpSelect0 {
			break
		}
		x := v_0.Args[0]
		if x.Op != OpS390XFSUB || !(b == x.Block) {
			break
		}
		v.reset(OpSelect1)
		v.AddArg(x)
		return true
	}
	return false
}
func rewriteValueS390X_OpS390XLTEBR(v *Value) bool {
	v_0 := v.Args[0]
	b := v.Block
	// match: (LTEBR (Select0 x:(FADDS _ _)))
	// cond: b == x.Block
	// result: (Select1 x)
	for {
		if v_0.Op != OpSelect0 {
			break
		}
		x := v_0.Args[0]
		if x.Op != OpS390XFADDS || !(b == x.Block) {
			break
		}
		v.reset(OpSelect1)
		v.AddArg(x)
		return true
	}
	// match: (LTEBR (Select0 x:(FSUBS _ _)))
	// cond: b == x.Block
	// result: (Select1 x)
	for {
		if v_0.Op != OpSelect0 {
			break
		}
		x := v_0.Args[0]
		if x.Op != OpS390XFSUBS || !(b == x.Block) {
			break
		}
		v.reset(OpSelect1)
		v.AddArg(x)


或目录>
```

查看文件的所有者和组：
```
ls -l <文件或目录>
```

## 用户和组管理

### 用户管理
查看当前用户信息：
- 显示当前执行命令的用户的名字
```
whoami
```
- 显示当前用户的用户ID（UID）、组ID（GID）以及用户和组的名称
```
id
```
- 显示当前登录系统的用户列表，包括用户名称、终端、登录时间等信息
```
who
```
- 显示系统中所有用户的活动，包括哪些用户已登录以及他们在做什么
```
w
```
- 显示当前登录系统的用户列表
```
users
```
- 显示用户的登录历史记录，包括登录和注销时间
```
last
```
- 显示用户的失败登录尝试记录
```
lastb
```
- 显示系统中所有用户的最后登录时间
```
lastlog
```
- ps命令结合特定的选项，可以查看当前运行的进程，包括它们的所有者
```
ps aux
```

添加新用户：
```
sudo useradd <username>
```

设置用户主目录：
```
sudo useradd -m <username>
```

设置用户Shell：
```
sudo useradd -s <shell-path> <username>
```

修改用户信息：
```
sudo usermod <options> <username>
```

更改用户主目录：
```
sudo usermod -d <new-home-dir> <username>
```

更改用户组：
```
sudo usermod -g <groupname> <username>
```

### 更改用户密码：
```
sudo passwd <username>
```

解锁用户账户，允许用户更改密码（例如，由于多次输入错误密码）
```
sudo passwd -u <username>
```

立刻强制用户下次登录时更改密码：
```
sudo passwd -e <username>
```

### 组管理：
- 创建新组
```
sudo groupadd <groupname>
```
- 删除组
```
sudo groupdel <groupname>
```
- 将用户添加到组
```
sudo usermod -aG <groupname> <username>
```
- 从组中移除用户
```
sudo gpasswd -d <username> <groupname>
```
- 列出用户所属的所有组
```
groups <username>
```
- 查看组的详细信息
```
getent group <groupname>
```
- 修改组的属性
```
sudo groupmod <options> <groupname>
```
- 更改组的GID
```
sudo groupmod -g <new-gid> <groupname>
```

## Linux系统中常用的查看系统日志的命令

在Linux系统中，查看系统日志的命令有很多，不同的命令适用于不同的场景。以下是一些在多个Linux操作系统中常用的查看系统日志的命令：
1.


d		q10, q11
	vld1.8		{q10-q11}, [ip]!
	\dround		q12, q13
	vld1.8		{q12-q13}, [ip]!
	\dround		q10, q11
	blo		0f			@ AES-128: 10 rounds
	vld1.8		{q10-q11}, [ip]!
	\dround		q12, q13
	beq		1f			@ AES-192: 12 rounds
	vld1.8		{q12-q13}, [ip]
	\dround		q10, q11
0:	\fround		q12, q13, q14
	bx		lr

1:	\fround		q10, q11, q14
	bx		lr
	.endm

	/*
	 * Internal, non-AAPCS compliant functions that implement the core AES
	 * transforms. These should preserve all registers except q0 - q2 and ip
	 * Arguments:
	 *   q0        : first in/output block
	 *   q1        : second in/output block (_3x version only)
	 *   q2        : third in/output block (_3x version only)
	 *   q8        : first round key
	 *   q9        : secound round key
	 *   q14       : final round key
	 *   r2        : address of round key array
	 *   r3        : number of rounds
	 */
	.align		6
aes_encrypt:
	add		ip, r2, #32		@ 3rd round key
.Laes_encrypt_tweak:
	do_block	enc_dround, enc_fround
ENDPROC(aes_encrypt)

	.align		6
aes_decrypt:
	add		ip, r2, #32		@ 3rd round key
	do_block	dec_dround, dec_fround
ENDPROC(aes_decrypt)

	.align		6
aes_encrypt_3x:
	add		ip, r2, #32		@ 3rd round key
	do_block	enc_dround_3x, enc_fround_3x
ENDPROC(aes_encrypt_3x)

	.align		6
aes_decrypt_3x:
	add		ip, r2, #32		@ 3rd round key
	do_block	dec_dround_3x, dec_fround_3x
ENDPROC(aes_decrypt_3x)

	.macro		prepare_key, rk, rounds
	add		ip, \rk, \rounds, lsl #4
	vld1.8		{q8-q9}, [\rk]		@ load first 2 round keys
	vld1.8		{q14}, [ip]		@ load last round key
	.endm

	/*
	 * aes_ecb_encrypt(u8 out[], u8 const in[], u8 const rk[], int rounds,
	 *		   int blocks)
	 * aes_ecb_decrypt(u8 out[], u8 const in[], u8 const rk[], int rounds,
	 *		   int blocks)
	 */
ENTRY(ce_aes_ecb_encrypt)
	push		{r4, lr}
	ldr		r4, [sp, #8]
	prepare_key	r2, r3
.Lecbencloop3x:
	subs		r4, r4, #3
	bmi		.Lecbenc1x
	vld1.8		{q0-q1}, [r1]!
	vld1.8		{q2}, [r1]!
	bl		aes_encrypt_3x
	vst1.8		{q0-q1}, [r0]!
	vst1.8


for (unsigned int k = 0; k != graph[u].size(); k++)
    {
        v = graph[u][k].index;
        // w = graph[u][k].wei;

        f = node_u->vec.row(u) * node_v->vec.row(v).transpose();
        if (f > max_value_pos)
        {
            max_value_pos = f;
            pos = v;
        }
    }

    neg = -1;
    max_value_neg = -1000000000;
    for (v = 0; v != node_v->node_size; v++)
    {
        if (nb_set[u].count(v) == 1) continue; // skip neighbor node v of node u

        f = node_u->vec.row(u) * node_v->vec.row(v).transpose();
        if (f > max_value_neg)
        {
            max_value_neg = f;
            neg = v;
        }
    }

    if (pos == -1 || neg == -1) return;

    // update {u, v_pos, v_neg} embeddings
    error_vec_u = -alpha * node_u->vec.row(u);
    if (max_value_pos - max_value_neg < margin)
    {
        error_vec_u -= node_v->vec.row(neg) - node_v->vec.row(pos);
        node_v->vec.row(pos) += lr * node_u->vec.row(u);
        node_v->vec.row(neg) -= lr * node_u->vec.row(u);
    }
    node_u->vec.row(u) += lr * error_vec_u;
}

// Skip-gram by Block Coordinate Descent
void line_link::train_BCD_sg(real lr, unsigned long long &rand_index, int u)
{
    int target, v;
    double w;
    real f, g;

    for (unsigned int k = 0; k != graph[u].size(); k++)
    {
        // positive example (u, v)
        v = graph[u][k].index;
        w = graph[u][k].wei;

        f = node_u->vec.row(u) * node_v->vec.row(v).transpose(); // dot product
        f = sigmoid(f);
        g = (1 - f) * lr * w;

        node_u->err.row(u) += g * node_v->vec.row(v);
        node_v->err.row(v) += g * node_u->vec.row(u);
        // node_u->grad_cnt[u]++;
        // node_v->grad_cnt[v]++;

        // negative examples {v'} of u
        for (int d = 0; d < neg_samples; d++)
        {
            // sample a v' from the negative sampling table
            rand_index = rand_index * (unsigned long long)25214903917 + 11;
            target = neg_table_v[(rand_index >> 16) % neg_table_size];
            if (target == v) continue;

            f = node_u->vec.row(u) * node_v->vec.row(target).transpose();
            f = sigmoid(f);
            g = - f * lr * w;
            node_u->err.row(u) += g * node_v->vec.row(target);
            node_v->err.row(target) += g * node_u->vec.row(u);

            node_u->grad_cnt[u]++;
            node_v->grad_cnt[target]++;
        }

        // negative examples {u'} of v
        for (int d = 0; d < neg_samples; d++)
        {
            // sample a u' from the negative sampling table
            rand_index = rand_index * (unsigned long long)25214903917 + 11;
            target = neg_table_u[(rand_index >> 16) % neg_table_size];
            if (target == u


flow_COMBO({['key']='Priority',                      ['extstr'] = 'CONF_act_groupmode_direction',['values'] = {[0]='First event',[1]='Between first and last events',[2]='Last event'}})
        ImGui.Unindent(ctx,UI.indent)
      end
    end

    ImGui.EndTabItem(ctx)
  end

  --[[if EXT.UI_appatchange&1==1 and trig_action == true then
    DATA:Execute()
    trig_action = nil
  end]]
end
--------------------------------------------------------------------------------
function UI.draw_setbuttoncolor(col)
    UI.MAIN_PushStyle('Col_Button',col, 0.5)
    UI.MAIN_PushStyle('Col_ButtonActive',col, 1)
    UI.MAIN_PushStyle('Col_ButtonHovered',col, 0.8)
end
--------------------------------------------------------------------------------
function UI.draw_setbuttonbackgtransparent()
    UI.MAIN_PushStyle('Col_Button',0, 0)
    UI.MAIN_PushStyle('Col_ButtonActive',0, 0)
    UI.MAIN_PushStyle('Col_ButtonHovered',0, 0)
end
---------------------------------------------------------------------
  function DATA.PRESET_encBase64(data) -- https://stackoverflow.com/questions/34618946/lua-base64-encode
    local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' -- You will need this for encoding/decoding
      return ((data:gsub('.', function(x)
          local r,b='',x:byte()
          for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end
          return r;
      end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x)
          if (#x < 6) then return '' end
          local c=0
          for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end
          return b:sub(c+1,c+1)
      end)..({ '', '==', '=' })[#data%3+1])
  end
---------------------------------------------------------------------
function DATA.PRESET_decBase64(data) -- https://stackoverflow.com/questions/34618946/lua-base64-encode
  local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' -- You will need this for encoding/decoding
    data = string.gsub(data, '[^'..b..'=]', '')
    return (data:gsub('.', function(x)
        if (x == '=') then return '' end
        local r,f='',(b:find(x)-1)
        for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end
        return r;
    end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
        if (#x ~= 8) then return '' end
        local c=0
        for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end
            return string.char(c)
    end))
end
---------------------------------------------------------------------
function DATA.PRESET_ApplyPreset(base64str, preset_name)
  if not base64str then return end
  local  preset_t = {}

  local str_dec = DATA.PRESET_decBase64(base64str)
  if str_dec~= '' then
    for line in str_dec:gmatch('[^\r\n]+') do
      local key,value = line:gsub('[%{}]',''):match('(.-)=(.*)')
      if key and value and key:match('CONF_') then preset_t[key]= tonumber(value) or value end
    end
  end
  for key in pairs(preset_t) do


 "hé", "sp": "he", "r": "水", "sc": 8, "l": 2, "f": 574},
  {"h": "米", "p": "mǐ", "sp": "mi", "r": "米", "sc": 6, "l": 1, "f": 575},
  {"h": "围", "p": "wéi", "sp": "wei", "r": "囗", "sc": 7, "l": 3, "f": 576},
  {"h": "江", "p": "jiāng", "sp": "jiang", "r": "水", "sc": 6, "l": 4, "f": 577},
  {"h": "织", "p": "zhī", "sp": "zhi", "r": "糸", "sc": 8, "l": 5, "f": 578},
  {"h": "害", "p": "hài", "sp": "hai", "r": "宀", "sc": 10, "l": 3, "f": 579},
  {"h": "斗", "p": "dòu", "sp": "dou", "r": "斗", "sc": 4, "l": 4, "f": 580},
  {
    "h": "双",
    "p": "shuāng",
    "sp": "shuang",
    "r": "又",
    "sc": 4,
    "l": 2,
    "f": 581
  },
  {"h": "境", "p": "jìng", "sp": "jing", "r": "土", "sc": 14, "l": 3, "f": 582},
  {"h": "客", "p": "kè", "sp": "ke", "r": "宀", "sc": 9, "l": 1, "f": 583},
  {"h": "纪", "p": "jì", "sp": "ji", "r": "糸", "sc": 6, "l": 3, "f": 584},
  {"h": "采", "p": "cǎi", "sp": "cai", "r": "釆", "sc": 8, "l": 3, "f": 585},
  {"h": "举", "p": "jǔ", "sp": "ju", "r": "丶", "sc": 9, "l": 2, "f": 586},
  {"h": "杀", "p": "shā", "sp": "sha", "r": "木", "sc": 6, "l": 5, "f": 587},
  {"h": "攻", "p": "gōng", "sp": "gong", "r": "攴", "sc": 7, "l": 5, "f": 588},
  {"h": "父", "p": "fù", "sp": "fu", "r": "父", "sc": 4, "l": 3, "f": 589},
  {"h": "苏", "p": "sū", "sp": "su", "r": "艸", "sc": 7, "l": 5, "f": 590},
  {"h": "密", "p": "mì", "sp": "mi", "r": "宀", "sc": 11, "l": 4, "f": 591},
  {"h": "低", "p": "dī", "sp": "di", "r": "人", "sc": 7, "l": 2, "f": 592},
  {"h": "朝", "p": "cháo", "sp": "chao", "r": "月", "sc": 12, "l": 3, "f": 593},
  {"h": "友", "p": "yǒu", "sp": "you", "r": "又", "sc": 4, "l": 1, "f": 594},
  {"h": "诉", "p": "sù", "sp": "su", "r": "言", "sc": 7, "l": 1, "f": 595},
  {"h": "


可持续发展？ |
| 健康饮食 | 如何制定健康饮食计划，在饮食中获得足够的营养和能量？ |
| 社交媒体管理 | 在社交媒体上如何有效地推广品牌和吸引更多关注者？ |
| 旅游规划 | 哪些工具和方法可以帮助规划一次成功的旅行？ |
| 创新思维 | 如何培养创新思维，提高解决问题的能力？ |
| 数据分析 | 在数据分析过程中，如何选择适当的统计方法和软件工具？ |
| 健康饮食                                                  | 如何做出一份低热量高营养的三明治？                             |
| 文化生活                                                  | 你推荐哪些适合全家观看的电影？                                 |
| 旅游                                                      | 如何在一个新城市找到最地道的当地美食？                       |
| 科技                                                      | 你认为人工智能可以在哪些场景下发挥重要作用？                   |
| 美容护肤                                                  | 如何解决白天上班时长时间使用电脑对皮肤造成的伤害？             |
| 生活服务                                                  | 如何判断某个快递公司是否值得信赖？                           |
| 教育培训                                                  | 如何利用网络课程提高自己的职业竞争力？                       |
| 金融理财                                                  | 如何评估一支股票的投资价值？                                 |
| 环境保护                                                  | 如何在生活中减少塑料污染？                                   |
| 娱乐运动                                                  | 你有什么好的户外运动建议吗？                                 |
|电影推荐|有哪些值得一看的惊悚片？|
|情感分析|看到小狗被虐待的画面，你感受如何？|
|历史事件|请简述二战期间美国对日本实施的经济封锁政策。|
|科技发展|AI技术在医学领域的应用进展如何？|
|健康养生|如何改善睡眠质量？|
|环保


..strokeWidth = 0.5
    ..style = PaintingStyle.stroke
    ..color = ChartColors.markerBorderColor;

  void drawLongPressCrossLineText(Canvas canvas,Size size,double y,double curX, KLineEntity entity) {
    TextPainter tp = getTextPainter(NumberUtil.format(entity.close), TextStyle(color: Colors.white,fontSize: 10));
    double padding = 3;
    double textHeight = tp.height + padding * 2;
    double textWidth = tp.width;
    bool isLeft = false;
    if(curX > mWidth / 2) {
      Path path = Path();
      path.moveTo(0,  y - textHeight / 2);
      path.lineTo(0, y + textHeight / 2);
      path.lineTo(textWidth, y + textHeight / 2);
      path.lineTo(textWidth + 10, y);
      path.lineTo(textWidth , y - textHeight / 2);
      path.close();
      canvas.drawPath(path, selectPointPaint);
      canvas.drawPath(path, selectorBorderPaint);
      tp.paint(canvas, Offset(2, y - tp.height / 2));
    } else {
      isLeft = true;
      Path path = Path();
      path.moveTo(mWidth,  y - textHeight / 2);
      path.lineTo(mWidth, y + textHeight / 2);
      path.lineTo(mWidth - textWidth, y + textHeight / 2);
      path.lineTo(mWidth - textWidth - 10, y);
      path.lineTo(mWidth - textWidth , y - textHeight / 2);
      path.close();
      canvas.drawPath(path, selectPointPaint);
      canvas.drawPath(path, selectorBorderPaint);
      tp.paint(canvas, Offset(mWidth - textWidth - 2, y - tp.height / 2));
    }
    TextPainter dateTp = getTextPainter(getDate(entity.id),TextStyle(color:Colors.white,fontSize: 10));

    var dateRect = Rect.fromLTRB(curX - dateTp.width / 2 - padding, size.height - ChartStyle.bottomDateHigh, curX + dateTp.width / 2 + padding, size.height);
    canvas.drawRect(dateRect, selectPointPaint);
    canvas.drawRect(dateRect, selectorBorderPaint);
    dateTp.paint(canvas, Offset(curX - dateTp.width / 2, size.height - ChartStyle.bottomDateHigh + ChartStyle.bottomDateHigh / 2 - dateTp.height / 2));

    //长按显示这条数据详情
    sink?.add(InfoWindowEntity(entity, isLeft));
  }

  String getDate(int date) => dateFormat(DateTime.fromMillisecondsSinceEpoch(date * 1000), mFormats);

  //根据x的位置计算index
  int calculateIndex(double selectX) {
    int index = ((mWidth - startX - selectX) / (canleWidth + ChartStyle.canldeMargin)).toInt() + mStartIndex;
//    print("index $index");
    return index;
  }
  //判断下标是否越界
  bool outRangeIndex(int index) {
    if(index < 0 || index >= datas.length) {
      return true;
    } else {
      return false;
    }
  }
  @override
  bool shouldRepaint(CustomPainter oldDelegate) {
    return true;
  }

}import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:pro_video_editor/shared/utils/parser/size_parser.dart';

void main() {
  group('safeParseSize', () {
    test('parses valid width and height', () {
      final map = {'width': 200, 'height': 100};
      final result = safeParseSize(map);
      expect(result, const Size(200.0, 100.0));
    });

    test('returns fallback for null map', () {
      const fallback = Size(10, 20);
      final result = safeParseSize(null, fallback: fallback);
      expect(result, fallback);
    });

    test('returns Size.zero for null map


ont-size: 1rem;
  color: #1c1c1c;
  line-height: 1;
  font-weight: 600; }

.events-speaker-photo {
  margin-right: 0.9375rem; }
  .events-speaker-photo img {
    width: 4.375rem;
    border-top-left-radius: 0.375rem;
    border-bottom-right-radius: 0.375rem; }

.events-speaker {
  margin-bottom: 1.25rem; }
  .events-speaker:last-child {
    margin-bottom: 0; }

.jumbo-common {
  background-image: url("sassAssets/images/events-jumbo-bg.jpg");
  background-size: cover;
  background-position: top;
  background-repeat: no-repeat;
  padding-top: 2.8125rem;
  padding-bottom: 2.8125rem; }
  .jumbo-common + .jumbo-common {
    margin-top: 1em; }
  .jumbo-common--registration .jumbo-common__content {
    padding-left: 1.875rem;
    padding-bottom: 25 px/16pxrem; }
    .jumbo-common--registration .jumbo-common__content::before {
      left: 0.3125rem; }
  .jumbo-common--registration .jumbo-common__title::before {
    left: -1.875rem; }
  .jumbo-common--news, .jumbo-common--registration {
    height: auto;
    padding: 0;
    padding-top: 2.8125rem; }
    .jumbo-common--news .jumbo-common__content, .jumbo-common--registration .jumbo-common__content {
      padding-bottom: 1.25rem; }
      .jumbo-common--news .jumbo-common__content::before, .jumbo-common--registration .jumbo-common__content::before {
        height: auto;
        bottom: 0; }
  .jumbo-common--speaker {
    height: 12.1875rem; }
    .jumbo-common--speaker .jumbo-common__content::before {
      height: 110px; }
      @media (max-width: 575px) {
        .jumbo-common--speaker .jumbo-common__content::before {
          height: 120px; } }
  .jumbo-common--margin-bottom {
    margin-bottom: 2.5rem; }

.jumbo-common__title,
.jumbo-common__tip {
  font-size: 2.25rem;
  color: #ffffff;
  font-family: "Handel Gothic", sans-serif;
  text-transform: uppercase;
  line-height: 1; }
  @media screen and (max-width: 950px) {
    .jumbo-common__title,
    .jumbo-common__tip {
      font-size: 1.625rem; } }
  @media screen and (max-width: 480px) {
    .jumbo-common__title,
    .jumbo-common__tip {
      font-size: 1.25rem; } }

.jumbo-common__title {
  position: relative; }
  .jumbo-common__title::before {
    content: ' ';
    display: block;
    position: absolute;
    left: -2.1875rem;
    top: 0.625rem;
    width: 0.75rem;
    height: 0.8125rem;
    background-image: url("sassAssets/images/timeline-icon-transparent.png");
    background-size: 100%;
    background-position: 50% 50%;
    background-repeat: no-repeat; }
  .jumbo-common__title--no-icon::before {
    display: none; }

.jumbo-common__tip {
  margin-bottom: 1.5625rem;
  font-size: 1rem; }

.jumbo-common__content {
  padding-left: 2.9375rem;
  position: relative; }
  .jumbo-common__content::before {
    content


tiaircraft",
		rarity = 2,
		damage = "20/轮",
		nationality = 8,
		ammo = 5,
		value_3 = 0,
		id = 6120,
		torpedo_ammo = 0,
		property_rate = {},
		ammo_icon = {},
		ammo_info = {},
		equip_info = {
			1,
			2,
			6,
			10
		},
		weapon_id = {
			6120
		},
		skill_id = {},
		part_main = {
			1,
			2,
			3,
			4,
			5,
			6,
			10,
			12,
			13,
			18,
			19
		},
		part_sub = {
			1,
			2,
			3,
			4,
			5,
			6,
			10,
			12,
			13,
			18,
			19
		},
		equip_parameters = {},
		label = {
			"FFNF",
			"ST",
			"AA"
		}
	},
	[6121] = {
		id = 6121,
		damage = "23/轮",
		base = 6120,
		weapon_id = {
			6121
		}
	},
	[6122] = {
		id = 6122,
		damage = "26/轮",
		base = 6120,
		weapon_id = {
			6122
		}
	},
	[6123] = {
		id = 6123,
		damage = "29/轮",
		base = 6120,
		weapon_id = {
			6123
		}
	},
	[6140] = {
		name = "双联装100mm高炮",
		speciality = "防空",
		type = 6,
		tech = 3,
		descrip = "说明未填写",
		value_2 = 12,
		icon = "6100",
		attribute_2 = "antiaircraft",
		rarity = 3,
		damage = "22/轮",
		nationality = 8,
		ammo = 5,
		value_3 = 0,
		id = 6140,
		torpedo_ammo = 0,
		property_rate = {},
		ammo_icon = {},
		ammo_info = {},
		equip_info = {
			1,
			2,
			6,
			10
		},
		weapon_id = {
			6140
		},
		skill_id = {},
		part_main = {
			1,
			2,
			3,
			4,
			5,
			6,
			10,
			12,
			13,
			18,
			19
		},
		part_sub = {
			1,
			2,
			3,
			4,
			5,
			6,
			10,
			12,
			13,
			18,
			19
		},
		equip_parameters = {},
		label = {
			"FFNF",
			"ST",
			"AA"
		}
	},
	[6141] = {
		id = 6141,
		damage = "25/轮",
		base = 6140,
		weapon_id = {
			6141
		}
	},
	[6142] = {
		id = 6142,
		damage = "28/轮",
		base = 6140,
		weapon_id = {
			6142
		}
	}
}


          }

            _counts[0]++;

            return Task.CompletedTask;
        }

        public Task<IList<long>> GetUploadCounts(int stop = -1, CancellationToken cancellationToken = default)
        {
            var en = _counts;
            if (stop > -1)
            {
                en = en.Take(stop - 1).ToList();
            }

            return Task.FromResult((IList<long>)en);
        }
    }

    [Fact]
    public async Task Increment_Works()
    {
        var db = new UploadCountHistoryDbAccess(new MockDailyUploadCountStore());
        await db.Increment();

        var data = await db.GetUploadCounts();
        Assert.Single(data);
        Assert.Equal(1U, data[0]);
    }
}


urn "[EOArgument: name = " + getName() + "]";
	}
}
/*
 * ====================================================================
 *
 * The ObjectStyle Group Software License, Version 1.0
 *
 * Copyright (c) 2006 The ObjectStyle Group and individual authors of the
 * software. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 *
 * 3. The end-user documentation included with the redistribution, if any, must
 * include the following acknowlegement: "This product includes software
 * developed by the ObjectStyle Group (http://objectstyle.org/)." Alternately,
 * this acknowlegement may appear in the software itself, if and wherever such
 * third-party acknowlegements normally appear.
 *
 * 4. The names "ObjectStyle Group" and "Cayenne" must not be used to endorse or
 * promote products derived from this software without prior written permission.
 * For written permission, please contact andrus@objectstyle.org.
 *
 * 5. Products derived from this software may not be called "ObjectStyle" nor
 * may "ObjectStyle" appear in their names without prior written permission of
 * the ObjectStyle Group.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * OBJECTSTYLE GROUP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many individuals on
 * behalf of the ObjectStyle Group. For more information on the ObjectStyle
 * Group, please see <http://objectstyle.org/>.
 *
 */
package org.objectstyle.wolips.eomodeler.core.model;

public class DuplicateRelationshipFailure extends EOModelVerificationFailure {
	private EOEntity myEntity;

	private String myRelationshipName;

	private String myNewRelationshipName;

	public DuplicateRelationshipFailure(EOEntity _entity, String _relationshipName, String _newRelationshipName) {
		this(_entity, _relationshipName, _newRelationshipName, null);
	}

	public DuplicateRelationshipFailure(EOEntity _entity, String _relationshipName, String _newRelationshipName, Throwable _throwable) {
		super(_entity.getModel(), "There was more than one relationship named '" + _relationshipName + "' in " + _entity.getName() + ", so one was renamed to '" + _newRelationshipName + "'.", false, _throwable);
		myEntity = _entity;
		myRelationshipName = _relationshipName;
		myNewRelationshipName = _newRelationshipName;
	}

	@Override
	public EOModelObject getFailedObject() {
		return myEntity.getRelationshipNamed(myRelationshipName);
	}

	public EOEntity get


// merge_sort.h
#ifndef MERGE_SORT_H
#define MERGE_SORT_H

#include <cstdint> // For uint64_t

#ifdef __cplusplus
extern "C" {
#endif

void cpu_merge(double *unSorted, uint64_t sizeOfArray, int threadNum);

#ifdef __cplusplus
}
#endif

#endif // MERGE_SORT_H


.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.

Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.

Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur?

End of content.

Plugin home Project on Github MIT License


rs if any
   }

   // Delete a comment
   removeComment (id:string,path: String): Observable<Cuisines[]> {
   let bodyString = ''; // Stringify payload
   let headers      = new Headers({ 'Content-Type': 'application/json' }); // ... Set content type to JSON
   let options       = new RequestOptions({ headers: headers }); // Create a request option

   return this.http.post(`${this.apiUrl +'/'+path+'/'+id}`, bodyString, options) // ...using put request
                    .map((res:Response) => res.json()) // ...and calling .json() on the response to return data
                    .catch((error:any) => Observable.throw(error.json().error || 'Server error')); //...errors if any
   }

}
import { buildSchema } from 'graphql';

export const schemaDoc = `
# A Human in Star Wars
type Human {
  id: ID!
  # The Human's Name
  name: String!
  friends: [Human]
  enemies: [Human]
  appearsIn: [Episode]!
  totalCredits: Int
}

enum Episode {
  NEWHOPE
  EMPIRE
  JEDI
}

interface Character {
  id: ID!
  name: String!
  friends: [Character]
  appearsIn: [Episode]!
}

type Human2 implements Character {
  id: ID!
  name: String!
  friends: [Character]
  appearsIn: [Episode]!
  totalCredits: Int
}

type Droid implements Character {
  id: ID!
  name: String!
  friends: [Character]
  appearsIn: [Episode]!
  primaryFunction: String
}

# Test Items
type TestIds{
  id: ID!
  idNull: ID
  ids: [ID]!
  idsNull: [ID]
}

type TestStrings{
  text: String!
  textNull: String
  texts: [String]!
  textsNull: [String]
}

type TestInts{
  one: Int!
  oneNull: Int
  many: [Int]!
  manyNull: [Int]
}

type TestFloats{
  one: Float!
  oneNull: Float
  many: [Float]!
  manyNull: [Float]
}

type TestBooleans{
  one: Boolean!
  oneNull: Boolean
  many: [Boolean]!
  manyNull: [Boolean]
}

type ObjType{
  id:ID!
}

type TestObj{
  one: ObjType!
  oneNull: ObjType
  many: [ObjType]!
  manyNull: [ObjType]
  manyDoubleNoNull: [ObjType!]!
}

enum TestEnum{
  FIRST
  SECOND
  THIRD
}

type Query {
  test:Human
  hero(id: ID): Human
}

schema {
  query: Query
}
`;

export const schema = buildSchema(schemaDoc);
import { blogActionType, All } from '../actions/blog.action';
import { BlogState } from '../../models/blog-state';
export const initialState: BlogState = {
  blog: [],
  Message: null
};
export function blogReducer(blogState = initialState, action: All): BlogState {
  switch (action.type) {
    case blogActionType.INSERT: {
      return {
        ...blogState,
        blog: action.payload,
        Message: null
      };
    }
    case blogActionType.INSERT_SUCCESS: {
      return {
        ...blogState,
        blog: action.payload,
        Message: 'blog added successfully'
      };
    }
    case blogActionType.INSERT_FAILURE: {
      return {
        ...blogState,
        Message: 'Unable to add blog'
      };
    }
    case blogActionType.Edit: {
      const newBlog = action.payload.blog;
      return {
        ...blogState,
        blog: [newBlog],
        Message: null
      };
    }
    case blogActionType.EDIT_SUCCESS: {
      return {
        ...blogState,
        blog: action.payload,
        Message: 'blog Edited successfully'


from machine import Pin
import utime

DT_Pin = Pin(1, Pin.IN, Pin.PULL_UP)
CLK_Pin = Pin(0, Pin.IN, Pin.PULL_UP)
SW = Pin(2, Pin.IN, Pin.PULL_UP)

LEDs = [3,4,5,6,7,8]

#create an empty list to assing pins in pico
led_pins = []

for x in range(0,6):
    led_pins.append(Pin(LEDs[x], Pin.OUT))

value = 0
previousValue = 1

def rotary_changed():

    global previousValue
    global value

    if previousValue != CLK_Pin.value():
        if CLK_Pin.value() == 0:
            if DT_Pin.value() == 0:

                value = (value - 1)%6
                print("anti-clockwise", value)
            else:

                value = (value + 1)%6
                print("clockwise", value)
        previousValue = CLK_Pin.value()

    if SW.value() == 0:
        print("Button pressed")
        utime.sleep(1)

while True:
    for i in range(0,6):
        led_pins[i].value(0)
        rotary_changed()
        led_pins[value].value(1)
        utime.sleep(0.001)


RANGE_FAR)
		return false;

	if (self->monsterinfo.aiflags & AI_STAND_GROUND)
	{
		chance = 0.4;
	}
	else if (enemy_range == RANGE_MELEE)
	{
		chance = 0.8;
	}
	else if (enemy_range == RANGE_NEAR)
	{
		chance = 0.8;
	}
	else if (enemy_range == RANGE_MID)
	{
		chance = 0.8;
	}
	else
	{
		return false;
	}

	// PGM - go ahead and shoot every time if it's a info_notnull
	if ((random () < chance) || (self->enemy->solid == SOLID_NOT))
	{
		self->monsterinfo.attack_state = AS_MISSILE;
		self->monsterinfo.attack_finished = level.time + 2*random();
		return true;
	}

	if (self->flags & FL_FLY)
	{
		if (random() < 0.3)
			self->monsterinfo.attack_state = AS_SLIDING;
		else
			self->monsterinfo.attack_state = AS_STRAIGHT;
	}

	return false;
}

/*QUAKED monster_boss2 (1 .5 0) (-56 -56 0) (56 56 80) Ambush Trigger_Spawn Sight
*/
void SP_monster_boss2 (edict_t *self)
{
	if (deathmatch->value)
	{
		G_FreeEdict (self);
		return;
	}

	sound_pain1 = gi.soundindex ("bosshovr/bhvpain1.wav");
	sound_pain2 = gi.soundindex ("bosshovr/bhvpain2.wav");
	sound_pain3 = gi.soundindex ("bosshovr/bhvpain3.wav");
	sound_death = gi.soundindex ("bosshovr/bhvdeth1.wav");
	sound_search1 = gi.soundindex ("bosshovr/bhvunqv1.wav");

	self->s.sound = gi.soundindex ("bosshovr/bhvengn1.wav");

	self->movetype = MOVETYPE_STEP;
	self->solid = SOLID_BBOX;
	self->s.modelindex = gi.modelindex ("models/monsters/boss2/tris.md2");
	VectorSet (self->mins, -56, -56, 0);
	VectorSet (self->maxs, 56, 56, 80);

	self->health = 2000;
	self->gib_health = -200;
	self->mass = 1000;

	self->yaw_speed = 50;

	self->flags |= FL_IMMUNE_LASER;

	self->pain = boss2_pain;
	self->die = boss2_die;

	self->monsterinfo.stand = boss2_stand;
	self->monsterinfo.walk = boss2_walk;
	self->monsterinfo.run = boss2_run;
	self->monsterinfo.attack = boss2_attack;
	self->monsterinfo.search = boss2_search;
	self->monsterinfo.checkattack = Boss2_CheckAttack;
	gi.linkentity (self);

	self->monsterinfo.currentmove = &boss2_move_stand;
	self->monsterinfo.scale = MODEL_SCALE;

	flymonster_start (self);
}


ThinkRchive/main/thinkpad_images/thinkpadt450.png",
            releaseDate = "Jan, 2015",
            series = "T Series",
            marketPriceStart = 250,
            marketPriceEnd = 500,
            processorPlatforms = "Intel 5th Gen",
            processors = "i3-4030U, i5-4300U, i3-5010U, i5-5200U, i5-5300U, i7-5500U, i7-5600U",
            graphics = "Intel HD 5500",
            maxRam = "16GB (2 Slots)",
            displayRes = "1366x768, 1600x900, 1920x1080",
            touchScreen = "Yes",
            screenSize = "14 inch",
            backlitKb = "Yes",
            fingerPrintReader = "Yes",
            kbType = "6 Row, Backlit",
            dualBatt = "Yes",
            internalBatt = "3 Cell",
            externalBatt = "3 Cell, 6 Cell",
            psrefLink = "https://psref.lenovo.com/syspool/Sys/PDF/ThinkPad/ThinkPad_T450/ThinkPad_T450_Spec.PDF",
            biosVersion = "1.37(JBET73WW)",
            knownIssues = "Other",
            knownIssuesLinks = "https://psref.lenovo.com/syspool/Sys/PDF/ThinkPad/ThinkPad_T450/ThinkPad_T450_Spec.PDF",
            displaysSupported = "AUO, LG, SAM",
            otherMods = "Other",
            otherModsLinks = "https://psref.lenovo.com/syspool/Sys/PDF/ThinkPad/ThinkPad_T450/ThinkPad_T450_Spec.PDF",
            biosLockIn = "Yes: Display",
            ports = "3x USB 3.0, VGA, Mini DisplayPort, Ethernet (RJ-45), Dock connector, SD Card Reader"
        ),
        ThinkpadResponse(
            model = "Thinkpad X250",
            imageUrl = "https://raw.githubusercontent.com/racka98/ThinkRchive/main/thinkpad_images/thinkpadt450.png",
            releaseDate = "Jan, 2015",
            series = "X Series",
            marketPriceStart = 250,
            marketPriceEnd = 500,
            processorPlatforms = "Intel 5th Gen",
            processors = "i5-4300u",
            graphics = "Intel HD 5500",
            maxRam = "16GB (2 Slots)",
            displayRes = "1366x768, 1600x900, 1920x1080",
            touchScreen = "Yes",
            screenSize = "14 inch",
            backlitKb = "Yes",
            fingerPrintReader = "Yes",
            kbType = "6 Row, Backlit",
            dualBatt = "Yes",
            internalBatt = "3 Cell",
            externalBatt = "3 Cell, 6 Cell",
            psrefLink = "https://psref.lenovo.com/syspool/Sys/PDF/ThinkPad/ThinkPad_T450/ThinkPad_T450_Spec.PDF",
            biosVersion = "1.37(JBET73WW)",
            knownIssues = "Other",
            knownIssuesLinks = "https://psref.lenovo.com/syspool/Sys/PDF/ThinkPad/ThinkPad_T450/ThinkPad_T450_Spec.PDF",
            displaysSupported = "AUO, LG, SAM",
            otherMods = "Other",
            otherModsLinks = "https://psref.lenovo.com/syspool/Sys/PDF/ThinkPad/ThinkPad_T450/ThinkPad_T450_Spec.PDF",
            biosLockIn = "Yes: Display",
            ports = "3x USB 3.0, VGA, Mini DisplayPort, Ethernet (RJ-45), Dock connector, SD Card Reader"
        ),
        ThinkpadResponse(
            model = "Thinkpad L460",
            imageUrl = "https://raw.githubusercontent.com/racka98/ThinkRchive/main/thinkpad_images/thinkpadt450.png",
            releaseDate = "Jan, 2016",
            series = "L Series",
            marketP


                    visited_ids=['line-7', 'line-5', 'line-6', 'line-3'],
                ),
                TraversalConnection(  # incorrect result
                    node_id='valve-1',
                    flow_direction=FlowDirection.downstream,
                    visited_ids=['line-7', 'line-5', 'line-4', 'line-2'],
                )
            ],
            'valve-1': [
                TraversalConnection(
                    node_id='symbol-2',
                    flow_direction=FlowDirection.downstream,
                    visited_ids=['line-3'],
                ),
                TraversalConnection(  # incorrect result
                    node_id='symbol-3',
                    flow_direction=FlowDirection.downstream,
                    visited_ids=['line-3', 'line-6', 'line-5', 'line-7'],
                )
            ]
        }

    # endregion


                       values.chunks(6).enumerate().for_each(|(sid0, v)| {
                            self.gmt
                                .m1_segment_state((sid0 + 1) as i32, &v[..3], &v[3..]);
                        });
                        Ok(())
                    }
                    IO::MCM2Lcl6D { data: Some(values) } => {
                        values.chunks(6).enumerate().for_each(|(sid0, v)| {
                            self.gmt
                                .m2_segment_state((sid0 + 1) as i32, &v[..3], &v[3..]);
                        });
                        Ok(())
                    }
                    IO::M1modes {
                        data: Some(ref mut values),
                    } => {
                        self.gmt.m1_modes(values);
                        Ok(())
                    }
                    IO::M1modes { data: None } => Ok(()),
                    IO::OSSM1Lcl { data: None } => Ok(()),
                    IO::MCM2Lcl6D { data: None } => Ok(()),
                    _ => Err(DOSIOSError::Inputs("GmtOpticalModel invalid inputs".into())),
                })
                .and(Ok(self)),
            None => Ok(self),
        }
    }
    fn outputs(&mut self) -> Option<Vec<IO<Self::Output>>> {
        self.sensor.readout();
        self.sensor.process();
        let data: Vec<f32> = self.sensor.get_data().into();
        self.sensor.reset();
        Some(vec![IO::SensorData {
            data: Some(data.into_iter().map(|x| x as f64).collect::<Vec<f64>>()),
        }])
    }
}
mod commands;
mod error;
mod lexer;
mod location;
mod parser;

use crate::commands::compile_vesti;
use crate::error::pretty_print::pretty_print;
use signal_hook::consts::signal::{SIGINT, SIGKILL, SIGTERM};
use signal_hook::flag as signal_flag;
use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::Arc;
use std::thread::{self, JoinHandle};
use std::time::Duration;
use structopt::StructOpt;

fn main() {
    let args = commands::VestiOpt::from_args();
    let is_continuous = args.is_continuous_compile();

    let trap = Arc::new(AtomicUsize::new(0));
    #[cfg(not(target_os = "windows"))]
    for signal in [SIGINT, SIGTERM].iter() {
        signal_flag::register_usize(*signal, Arc::clone(&trap), *signal as usize)
            .expect("Undefined behavior happened!");
    }
    #[cfg(target_os = "windows")]
    for signal in [SIGTERM, SIGKILL].iter() {
        signal_flag::register_usize(*signal, Arc::clone(&trap), *signal as usize)
            .expect("Undefined behavior happened!");
    }

    let file_lists = match args.take_file_name() {
        Ok(inner) => inner,
        Err(err) => {
            println!("{}", pretty_print(None, err, None));
            std::process::exit(1);
        }
    };

    let mut handle_vesti: Vec<JoinHandle<()>> = Vec::new();
    for file_name in file_lists {
        handle_vesti.push(thread::spawn(move || {
            compile_vesti(file_name, is_continuous)
        }));
    }

    if !is_continuous {
        let _: Vec<()> = handle_vesti
            .into_iter()
            .map(|vesti| vesti.join().unwrap())
            .collect();
    } else {
        println!("Press Ctrl+C to finish the program.");
        while ![SIGINT, SIGTERM, SIGKILL].contains(&(trap.load(Ordering::Relaxed) as i32)) {


["- Will Get 1-3 random weapons"] = "", -- Continental_supplies
--      ["- Will give you a parachute every second turn."] = "", -- Continental_supplies
--      ["Will this ever end?"] = "",
--      ["Will you give me the other parts?"] = "", -- A_Space_Adventure:death01
--      ["Win"] = "", -- A_Space_Adventure:ice01
--      ["Wind"] = "", -- Basic_Training_-_Bazooka
--      ["Winner: %s"] = "", -- Mutant
--      ["Winning time: %s"] = "", -- Racer, TechRacer
      ["Wise Oak"] = "Faucon Sage",
      ["With Dense Cloud on the land of shadows, I'm the village's only hope..."] = "Avec Nuage Dense dans le territoire des ombres, je suis le seul espoir du village...",
--      ["With low bounciness, it barely bounces at all, but it is much more predictable."] = "", -- Basic_Training_-_Grenade
--      ["With the rest of the tribe gone, it was up to %s to save the village."] = "", -- A_Classic_Fairytale:dragon
	  ["Worry not, for it is a peaceful animal! There is no reason to be afraid..."] = "Pas d'inquiétude, c'est un animal pacifique ! Il n'y a pas de raison d'avoir peur...",
      ["Wow, what a dream!"] = "Wow, quel rêve !",
--      ["Xeli"] = "", --
--      ["Xerxes"] = "", --
      ["Y3K1337"] = "Y3K1337",
      ["Yay, we won!"] = "Ouais, on a gagné !",
--      ["Y Chwiliad"] = "",
      ["Yeah...I think it's a 'he', lol."] = "Ouais... Je crois que c'est un 'lui', lol.",
--      ["Yeah, sure! I died. Hilarious!"] = "", -- A_Classic_Fairytale:backstab
      ["Yeah, sure! I died. Hillarious!"] = "Ouais, sûr ! Il est mort. Hillarant !",
      ["Yeah, take that!"] = "Ouais, prends ça !",
      ["Yeah? Watcha gonna do? Cry?"] = "Ouais? Qu'est ce que tu vas faire ? Pleurer ? ",
--      ["Yeah, well, for some dude to be happy, some other dude has to suffer."] = "", -- A_Classic_Fairytale:queen
--      ["Yellow"] = "", --
--      ["Yellow Pepper"] = "", -- A_Space_Adventure:fruit01
--      ["Yellow Watermelons"] = "", -- A_Space_Adventure:fruit01
--      ["Yes, but you're … different!"] = "", -- A_Classic_Fairytale:queen
      ["Yes!"] = "Oui !",
      ["Yes, yeees! You are now ready to enter the real world!"] = "Oui, Ouiii ! Maintenant tu es prêt à entrer dans le monde réel !",
--      ["Yeti"] = "", --
--      ["Yikes!"] = "", -- A_Space_Adventure:desert01
--      ["Yo, dude! Get away from our weapons!"] = "", -- A_Classic_Fairytale:queen
      ["Yo, dude, we're here, too!"] = "Yo mec, on est là aussi !",
--      ["Yo, escort my buttocks!"] = "", -- A_Classic_Fairytale:queen
--      ["Yoshi"] = "", --
--      ["Yo, the aliens gave me plants. Medicinal plants. Lots of it."] = "", -- A_Classic_Fairytale:queen
--      ["You are far from home, and the water is rising, climb up as high as you can!|Your score will be based on your height."] = "", -- ClimbHome
      ["You are given the chance to turn your life around..."] = "Tu as une chance de voir ta vie changer de cap...",
--      ["You are in control of all the active ally units."] = "", -- A_Space_Adventure:fruit01
--      ["You are indeed the best PAotH pilot."] = "", -- A_Space_Adventure:desert03
--      ["You are out of


th the amagalma_Vertical Zoom preset bundle

local name = ({reaper.get_action_context()})[2]:match("([^/\\_]+).lua$")
local preset = tonumber(name:match("%d+$"))
local presets = reaper.GetExtState( "amagalma_Vertical zoom presets", "sizes" )
local pr, p = {0,10,20,30,40}, 0
if presets ~= "" then
  for n in presets:gmatch("%S+") do
    p = p + 1
    pr[p] = tonumber(n)
  end
end

pr[preset] = reaper.SNM_GetIntConfigVar( "vzoom2", -1 )
reaper.SetExtState( "amagalma_Vertical zoom presets", "sizes", table.concat( pr, " " ), true )


isinstance(sheet, int):
                result.update(self.read_sheet_by_index(sheet))
            else:
                result.update(self.read_sheet_by_name(sheet))
        return result

    def read_sheet(self, native_sheet):
        """
        Return a context specific sheet from a native sheet
        """
        raise NotImplementedError("Please implement this method")

class BookWriter(RWInterface):
    """
    Standard book writer
    """

    def __init__(self):
        super(BookWriter, self).__init__()
        self._file_alike_object = None
        self._keywords = None

    def open(self, file_name, **keywords):
        """
        open a file with unlimited keywords for writing

        keywords are passed on to individual writers
        """
        self._file_alike_object = file_name
        self._keywords = keywords

    def open_stream(self, file_stream, **keywords):
        """
        open a file stream with unlimited keywords for writing

        keywords are passed on to individual writers
        """
        if not isstream(file_stream):
            raise IOError(MESSAGE_ERROR_03)

        self.open(file_stream, **keywords)

    def open_content(self, file_stream, **keywords):
        """open a file content for read or write"""
        raise Exception("Normal writer would not need this interface")

    def write(self, incoming_dict):
        """
        write a dictionary into an excel file
        """
        for sheet_name in incoming_dict:
            sheet_writer = self.create_sheet(sheet_name)
            if sheet_writer:
                sheet_writer.write_array(incoming_dict[sheet_name])
                sheet_writer.close()
            else:
                raise Exception("Cannot create a sheet writer!")

    def create_sheet(self, sheet_name):
        """
        implement this method for easy extension
        """
        raise NotImplementedError("Please implement create_sheet()")

def _convert_content_to_stream(file_content, file_type):
    stream = manager.get_io(file_type)
    target_content_type = manager.get_io_type(file_type)
    needs_encode = target_content_type == "bytes" and not isinstance(
        file_content, bytes
    )
    needs_decode = target_content_type == "string" and isinstance(
        file_content, bytes
    )
    if needs_encode:
        file_content = file_content.encode("utf-8")
    elif needs_decode:
        file_content = file_content.decode("utf-8")
    stream.write(file_content)
    stream.seek(0)
    return stream


d])
        else:
            return
    gc.collect()

def view_session(module, number):
    """Initializes a module's view
        @param module is the module number
        @param number is the session number
    """
    global HOUSE

    mod = get_module(module, number)
    if hasattr(mod, 'view'):
        mod.view()

def toggle_log(module, number, file_loc=None, toggle=False):
    """Toggle the logger of a module
       @param module is the module number
       @param number is the session number
       @param file_loc is a string containing the file path
       @param toggle is True to turn on logging or False to turn off
    """
    (mod, mod_inst) = get_mod_num(module, number)
    if not mod is None and not mod_inst is None and hasattr(HOUSE[mod][mod_inst], 'log'):
        if toggle:
            # enable
            HOUSE[mod][mod_inst].log(True, file_loc)
        else:
            # disable
            HOUSE[mod][mod_inst].log(False)
    else:
        Error('Module does not have a logger or doesn\'t exist.')

def get_session_input():
    """ Helper for obtaining module and session numbers
    """
    try:
        display = color.B_GREEN + '[' + color.B_YELLOW + 'session' + color.B_GREEN + \
                  '] [' + color.B_YELLOW + 'number' + color.B_GREEN + ']' + \
                  color.B_WHITE + ' > '
        tmp = raw_input(display)
        (module, number) = tmp.split(' ')
        if not module is None and not number is None:
            return (int(module), int(number))
    except Exception:
        Error('Must specify [module] followed by [number]\n')
        return (None, None)

def get_module(module, number):
    """ Retrieve an instance of a running session
        @param module is the module number
        @param number is the session number
    """
    (mod, mod_inst) = get_mod_num(module, number)
    if not mod is None and not mod_inst is None:
        return HOUSE[mod][mod_inst]
    return None

def get_mod_num(module, number):
    """Fetch the module and number instances given their
       indexes.
       @param module is the module index
       @param number is the module session index
    """
    if len(HOUSE.keys()) > module:
        mod = HOUSE.keys()[module]
        if len(HOUSE[mod].keys()) > number:
            mod_instance = HOUSE[mod].keys()[number]
            return (mod, mod_instance)
    return (None, None)


.liquidbounce.features.module.modules.movement.speeds.verus.VerusHard
import net.ccbluex.liquidbounce.features.module.modules.movement.speeds.verus.VerusHop
import net.ccbluex.liquidbounce.features.module.modules.movement.speeds.verus.VerusLowHop
import net.ccbluex.liquidbounce.features.module.modules.movement.speeds.vulcan.VulcanGroundSpeed
import net.ccbluex.liquidbounce.features.module.modules.movement.speeds.vulcan.VulcanLowHopSpeed
import net.ccbluex.liquidbounce.features.module.modules.movement.speeds.vulcan.VulcanYPort2Speed
import net.ccbluex.liquidbounce.features.module.modules.movement.speeds.vulcan.VulcanYPortSpeed
import net.ccbluex.liquidbounce.ui.client.hud.element.elements.Notification
import net.ccbluex.liquidbounce.ui.client.hud.element.elements.Type
import net.ccbluex.liquidbounce.utils.MovementUtils
import net.ccbluex.liquidbounce.value.BoolValue
import net.ccbluex.liquidbounce.value.FloatValue
import net.ccbluex.liquidbounce.value.IntegerValue
import net.ccbluex.liquidbounce.value.ListValue
import net.minecraft.client.gui.GuiChat
import net.minecraft.client.gui.GuiIngameMenu
import net.minecraft.client.settings.GameSettings

@ModuleInfo(name = "Speed", description = "Allows you to move faster.", category = ModuleCategory.MOVEMENT)
class Speed : Module() {
    val speedModes = arrayOf( // NCP
        NCPBHop(),
        NCPFHop(),
        SNCPBHop(),
        NCPHop(),
        NCPYPort(),  // AAC
        AAC4Hop(),
        AAC4SlowHop(),
        AACv4BHop(),
        AACBHop(),
        AAC2BHop(),
        AAC3BHop(),
        AAC4BHop(),
        AAC5BHop(),
        AAC6BHop(),
        AAC7BHop(),
        OldAACBHop(),
        AACPort(),
        AACLowHop(),
        AACLowHop2(),
        AACLowHop3(),
        AACGround(),
        AACGround2(),
        AACHop350(),
        AACHop3313(),
        AACHop3310(),
        AACHop438(),
        AACYPort(),
        AACYPort2(),  // Hypixel
        HypixelBoost(),
        HypixelStable(),
        HypixelCustom(),
        HypixelNew(),  // Spartan
        SpartanYPort(),  // Spectre
        SpectreBHop(),
        SpectreLowHop(),
        SpectreOnGround(),  // Other
        SlowHop(),
        CustomSpeed(),
        Jump(),
        Legit(),
        AEMine(),
        GWEN(),
        Boost(),
        Frame(),
        MiJump(),
        OnGround(),
        YPort(),
        YPort2(),
        HiveHop(),
        MineplexGround(),
        TeleportCubeCraft(),
        GrimCombat(),
        IntaveStrafe(),
        VerusHop(), // Verus
        VerusLowHop(),
        VerusHard(),  //Vulcan
        VulcanGroundSpeed(),
        VulcanLowHopSpeed(),
        VulcanYPort2Speed(),
        VulcanYPortSpeed(),  // Matrix
        MatrixSemiStrafe(),
        MatrixTimerBalance(),
        MatrixMultiply(),
        MatrixDynamic(),
        Matrix692(),
        MatrixLowHop()
    )
    val typeValue: ListValue = object : ListValue("Type", arrayOf("NCP", "AAC", "Spartan", "Spectre", "Hypixel", "Verus", "Vulcan", "Matrix", "Custom", "Other"), "NCP") {
        override fun onChange(oldValue: String, newValue: String) {
            if (state) onDisable


 <value>
        /// The title bar visibility.
        /// </value>
        public Visibility TitleBarVisibility
        {
            get { return (Visibility)this.GetValue(TitleBarVisibilityProperty); }
            set { this.SetValue(TitleBarVisibilityProperty, value); }
        }

        /// <summary>
        /// Gets or sets the window placement XML. Can be used to save and restore the windoe placement.
        /// </summary>
        /// <value>
        /// The window placement.
        /// </value>
        public string WindowPlacement
        {
            get { return (string)this.GetValue(WindowPlacementProperty); }
            set { this.SetValue(WindowPlacementProperty, value); }
        }

        #endregion

        #region Protected Methods

        /// <summary>
        /// Raises the <see cref="E:System.Windows.Window.SourceInitialized" /> event.
        /// </summary>
        /// <param name="e">An <see cref="T:System.EventArgs" /> that contains the event data.</param>
        protected override void OnSourceInitialized(System.EventArgs e)
        {
            base.OnSourceInitialized(e);
            if (this.WindowPlacement != null)
            {
                Framework.UI.Controls.Window.WindowPlacementHelper.SetPlacement(new WindowInteropHelper(this).Handle, this.WindowPlacement);
            }
        }

        #endregion

        #region Private Methods

        /// <summary>
        /// Updates the window placement.
        /// </summary>
        private void UpdateWindowPlacement()
        {
            this.WindowPlacement = Framework.UI.Controls.Window.WindowPlacementHelper.GetPlacement(new WindowInteropHelper(this).Handle);
        }

        #endregion
    }
}