�.06-ResNet-05-论文总结.mp4 184.84M

 | ├──25.深度之眼CV项目就业小班 先修课.06-ResNet-06-ResNet推理.mp4 302.34M

 | ├──26.深度之眼CV项目就业小班 先修课.06-ResNet-07-ResNet结构搭建详解.mp4 285.26M

 | ├──27.深度之眼CV项目就业小班 先修课.06-ResNet-08-ResNet20训练及实验分析.mp4 348.63M

 | ├──28.深度之眼CV项目就业小班 先修课.01mobileNet-01-背景介绍.mp4 51.82M

 | ├──29.深度之眼CV项目就业小班 先修课.01mobileNet-02-论文结构&摘要精读.mp4 143.80M

 | ├──3.深度之眼CV项目就业小班 先修课.02VGG-01-研究背景&成果&意义.mp4 48.08M

 | ├──30.深度之眼CV项目就业小班 先修课.01mobileNet-03-主体架构&深度可分离卷积.mp4 114.12M

 | ├──31.深度之眼CV项目就业小班 先修课.01MobileNet-04-超参数.mp4 82.44M

 | ├──32.深度之眼CV项目就业小班 先修课.01mobileNet-05-后续创新及改进_2022-11-28_12-15-07.mp4 119.38M

 | ├──33.深度之眼CV项目就业小班 先修课.10-SENet-01-学习目标课程安排.mp4 19.74M

 | ├──34.深度之眼CV项目就业小班 先修课.10-SENet-02-研究背景.mp4 72.18M

 | ├──35.深度之眼CV项目就业小班 先修课.10-SENet-03-研究意义及成果.mp4 23.20M

 | ├──36.深度之眼CV项目就业小班 先修课.10-SENet-04-论文结构..mp4 28.00M

 | ├──37.深度之眼CV项目就业小班 先修课.10-SENet-05-论文图表.mp4 32.59M

 | ├──38.深度之眼CV项目就业小班 先修课.10-SENet-06-Squeeze-Excitation..mp4 57.76M

 | ├──39.深度之眼CV项目就业小班 先修课.10-SENet-07-SE-ResNet-50..mp4 34.50M

 | ├──4.深度之眼CV项目就业小班 先修课.02VGG-02-论文结构&摘要精读.mp4 43.23M

 | ├──40.深度之


alue = new this.constructor(this._value)
    if (history === true) {
      newWrappedValue.history = this.history.slice()
    }
    return newWrappedValue
  }

  /**
   * 对涵子内的值/值们应用单/多个函数
   * @param {function[]} fns
   */
  use(...fns: Function[]) {
    if (fns.length) {
      // 记录传入的fns
      const processes = this.history[this.history.length - 1].processes
      fns.forEach(fn => processes.push(fn))

      //使用
      const fn = pipe(fns)
      let newValue
      if (typeOf(this._value) === 'array') {
        newValue = []
        for (const element of this._value) {
          newValue.push(fn(element))
        }
      } else if (typeOf(this._value) === 'function') {
        newValue = fn(this._value)
      }
      this.setValue(newValue)
    }
    return this
  }
  /**
   *  只是个快捷方式
   * 对涵子内的值/值们应用单/多个函数，不会应用函数，但返回一个新涵子包裹的值
   */
  map(...fns: Function[]) {
    return this.clone().use(...fns)
  }

  /**
   *
   * 写入涵子操作步骤
   */
  setProcessRecord(...fns: Function[]) {
    return this
  }

  /**
   *
   * 应用操作步骤
   */
  applyProcessRecord(...fns: Function[]) {
    this.clearProcessRecord()
    return this
  }
  /**
   *
   * 清除record中的步骤记录
   */
  clearProcessRecord() {
    this.record = null
    return this
  }
}
class StackFunctor extends Functor {
  constructor(value) {
    super(value)
  }
}
const b = new StackFunctor({ a: [1] })
const c = b.map(({ a }) => ({ a: a.concat(2) }))
console.log('c: ', c)
console.log('b: ', b)
console.log(new StackFunctor(4).use().use(n => n * n, n => n + 2))
console.log(StackFunctor.prototype)

const foo =  true ? 'he': 'ha'import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'filter',
})
export class FilterPipe implements PipeTransform {
  transform(
    items: Array<any>,
    locationName: string,
    ramName: string,
    hardDiskName: string
  ) {
    if (items && items.length) {
      return items.filter((item) => {
        if (
          locationName &&
          item.location.toLowerCase().indexOf(locationName.toLowerCase()) === -1
        ) {
          return false;
        }
        if (
          ramName &&
          item.ram.toLowerCase().indexOf(ramName.toLowerCase()) === -1
        ) {
          return false;
        }
        if (
          hardDiskName &&
          item.hdd.toLowerCase().indexOf(hardDiskName.toLowerCase()) === -1
        ) {
          return false;
        }
        return true;
      });
    } else {
      return items;
    }
  }
}
/**
 * Created by Joel on 31.03.2017.
 */

export class Transaction {

  public static fromDto(data: any): Transaction {
    return new Transaction(new Date(Date.parse(data.date)), data


/*
 * Test driver for key agreement functions.
 */
/*  Copyright The Mbed TLS Contributors
 *  SPDX-License-Identifier: Apache-2.0
 *
 *  Licensed under the Apache License, Version 2.0 (the "License"); you may
 *  not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

#ifndef PSA_CRYPTO_TEST_DRIVERS_KEY_AGREEMENT_H
#define PSA_CRYPTO_TEST_DRIVERS_KEY_AGREEMENT_H

#include "mbedtls/build_info.h"

#if defined(PSA_CRYPTO_DRIVER_TEST)
#include <psa/crypto_driver_common.h>

typedef struct {
    /* If non-null, on success, copy this to the output. */
    void *forced_output;
    size_t forced_output_length;
    /* If not PSA_SUCCESS, return this error code instead of processing the
     * function call. */
    psa_status_t forced_status;
    /* Count the amount of times one of the signature driver functions is called. */
    unsigned long hits;
} mbedtls_test_driver_key_agreement_hooks_t;

#define MBEDTLS_TEST_DRIVER_KEY_AGREEMENT_INIT { NULL, 0, PSA_SUCCESS, 0 }
static inline mbedtls_test_driver_key_agreement_hooks_t
mbedtls_test_driver_key_agreement_hooks_init(void)
{
    const mbedtls_test_driver_key_agreement_hooks_t
        v = MBEDTLS_TEST_DRIVER_KEY_AGREEMENT_INIT;
    return v;
}

extern mbedtls_test_driver_key_agreement_hooks_t
    mbedtls_test_driver_key_agreement_hooks;

psa_status_t mbedtls_test_transparent_key_agreement(
    const psa_key_attributes_t *attributes,
    const uint8_t *key_buffer,
    size_t key_buffer_size,
    psa_algorithm_t alg,
    const uint8_t *peer_key,
    size_t peer_key_length,
    uint8_t *shared_secret,
    size_t shared_secret_size,
    size_t *shared_secret_length);

psa_status_t mbedtls_test_opaque_key_agreement(
    const psa_key_attributes_t *attributes,
    const uint8_t *key_buffer,
    size_t key_buffer_size,
    psa_algorithm_t alg,
    const uint8_t *peer_key,
    size_t peer_key_length,
    uint8_t *shared_secret,
    size_t shared_secret_size,
    size_t *shared_secret_length);

#endif /*PSA_CRYPTO_DRIVER_TEST */
#endif /* PSA_CRYPTO_TEST_DRIVERS_KEY_AGREEMENT_H */


----- XHideMapOverviewCurtainsLayer

DefineClass.XHideMapOverviewCurtainsLayer = {
	__parents = { "XLayer" },
	Dock = "ignore",
	HandleMouse = false,
}

function XHideMapOverviewCurtainsLayer:Init()
	HideOverviewMapCurtains(true)
end

function XHideMapOverviewCurtainsLayer:Done()
	HideOverviewMapCurtains(false)
end

----- XHideInfopanelLayer

DefineClass.XHideInfopanelLayer = {
	__parents = { "XLayer" },
	Dock = "ignore",
	HandleMouse = false,
}

function XHideInfopanelLayer:Init()
	CloseXInfopanel()
end

function XHideInfopanelLayer:Done()
	ReopenSelectionXInfopanel()
end

----- XHideInfobarLayer

DefineClass.XHideInfobarLayer = {
	__parents = { "XLayer" },
	Dock = "ignore",
	HandleMouse = false,
	infobar_state = false,
}

function XHideInfobarLayer:Init()
	local dlg = GetDialog("Infobar")
	if dlg then
		self.infobar_state = dlg:GetVisible()
		dlg:SetVisible(false, "instant")
	end
end

function XHideInfobarLayer:Done()
	local dlg = GetDialog("Infobar")
	if dlg then
		dlg:SetVisible(self.infobar_state, "instant")
	end
end

----- XHideNonEssentialUILayer

local essential_ui = { "Infobar


ID
     */
    @Insert
    suspend fun insert(task: AnalysisTaskModel): Long

    /**
     * 更新任务
     */
    @Update
    suspend fun update(task: AnalysisTaskModel)

    /**
     * 根据ID获取任务
     */
    @Query("SELECT * FROM AnalysisTaskModel WHERE id = :id")
    suspend fun getById(id: Long): AnalysisTaskModel?

    /**
     * 获取所有任务，按创建时间倒序
     */
    @Query("SELECT * FROM AnalysisTaskModel ORDER BY createTime DESC")
    suspend fun getAll(): List<AnalysisTaskModel>

    /**
     * 分页获取任务列表，按创建时间倒序
     */
    @Query("SELECT * FROM AnalysisTaskModel ORDER BY createTime DESC LIMIT :limit OFFSET :offset")
    suspend fun getPage(limit: Int, offset: Int): List<AnalysisTaskModel>

    /**
     * 获取任务总数
     */
    @Query("SELECT COUNT(*) FROM AnalysisTaskModel")
    suspend fun getCount(): Int

    /**
     * 根据状态获取任务列表
     */
    @Query("SELECT * FROM AnalysisTaskModel WHERE status = :status ORDER BY createTime DESC")
    suspend fun getByStatus(status: AnalysisTaskStatus): List<AnalysisTaskModel>

    /**
     * 删除任务
     */
    @Query("DELETE FROM AnalysisTaskModel WHERE id = :id")
    suspend fun deleteById(id: Long)

    /**
     * 更新任务状态
     */
    @Query("UPDATE AnalysisTaskModel SET status = :status, updateTime = :updateTime WHERE id = :id")
    suspend fun updateStatus(
        id: Long,
        status: AnalysisTaskStatus,
        updateTime: Long = System.currentTimeMillis()
    )

    /**
     * 更新任务进度
     */
    @Query("UPDATE AnalysisTaskModel SET progress = :progress, updateTime = :updateTime WHERE id = :id")
    suspend fun updateProgress(
        id: Long,
        progress: Int,
        updateTime: Long = System.currentTimeMillis()
    )

    /**
     * 检查是否存在相同时间范围的任务
     */
    @Query("SELECT COUNT(*) FROM AnalysisTaskModel WHERE startTime = :startTime AND endTime = :endTime")
    suspend fun countByTimeRange(startTime: Long, endTime: Long): Int

    /**
     * 删除指定时间之前的所有任务
     */
    @Query("DELETE FROM AnalysisTaskModel WHERE createTime < :beforeTime")
    suspend fun deleteOldTasks(beforeTime: Long)

    /**
     * 将超时的未完成任务标记为失败
     */
    @Query("UPDATE AnalysisTaskModel SET status = :failedStatus, errorMessage = '任务超时', updateTime = :updateTime WHERE updateTime < :beforeTime AND status IN (:pendingStatus, :processingStatus)")
    suspend fun markTimeoutTasks(
        beforeTime: Long,
        failedStatus: AnalysisTaskStatus = AnalysisTaskStatus.FAILED,
        pendingStatus: AnalysisTaskStatus = AnalysisTaskStatus.PENDING,
        processingStatus: AnalysisTaskStatus = AnalysisTaskStatus.PROCESSING,
        updateTime: Long = System.currentTimeMillis()
    )

    /**
     * 删除所有任务
     */
    @Query("DELETE FROM AnalysisTaskModel")
    suspend fun deleteAll()
} /*
 * Copyright (C) 2024 ankio(ankio@ankio.net)
 * Licensed under the Apache License, Version 3.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-3.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,


FreezeNotifyingApplications.getValue()
                    && isAppStillNotifying(pkgName)
        } else {
            false
        }
    }

    @JvmStatic
    fun checkAndShowAppStillNotifyingToast(context: Context, pkgName: String?) {
        val label = ApplicationLabelUtils.getApplicationLabel(
            context,
            null,
            null,
            pkgName
        )
        if (context.getString(R.string.uninstalled) != label) ToastUtils.showToast(
            context, String.format(
                context.getString(R.string.appHasNotifi),
                label
            )
        )
    }

    @JvmStatic
    fun checkAndShowAppIsForegroundApplicationToast(context: Context, pkgName: String?) {
        val label = ApplicationLabelUtils.getApplicationLabel(
            context,
            null,
            null,
            pkgName
        )
        if (context.getString(R.string.uninstalled) != label) ToastUtils.showToast(
            context, String.format(
                context.getString(R.string.isForegroundApplication),
                label
            )
        )
    }

    @JvmStatic
    fun processUnfreezeAction(
        context: Context?,
        pkgName: String?,
        target: String?,
        tasks: String?,
        askRun: Boolean,
        runImmediately: Boolean,
        activity: Activity?,
        finish: Boolean
    ) {
        ServiceUtils.startService(
            context, Intent(context, FUFService::class.java)
                .putExtra("askRun", askRun)
                .putExtra("pkgName", pkgName)
                .putExtra("freeze", false)
                .putExtra("target", target) //目标 Activity
                .putExtra("tasks", tasks) //追加任务
                .putExtra("single", true)
                .putExtra("runImmediately", runImmediately)
        )
        checkAndDoActivityFinish(activity, finish)
    }

    @JvmStatic
    fun processFreezeAction(
        context: Context?,
        pkgName: String?,
        target: String?,
        tasks: String?,
        askRun: Boolean,
        activity: Activity?,
        finish: Boolean
    ) {
        ServiceUtils.startService(
            context, Intent(context, FUFService::class.java)
                .putExtra("askRun", askRun)
                .putExtra("pkgName", pkgName)
                .putExtra("target", target) //目标 Activity
                .putExtra("tasks", tasks) //追加任务
                .putExtra("freeze", true)
                .putExtra("single", true)
        )
        checkAndDoActivityFinish(activity, finish)
    }

    @JvmStatic
    fun checkMRootFrozen(context: Context?, pkgName: String): Boolean {
        return try {
            (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && (DevicePolicyManagerUtils.isDeviceOwner(
                context
            ) || DevicePolicyManagerUtils.isProfileOwner(context))
                    && DevicePolicyManagerUtils.getDevicePolicyManager(context)
                .isApplicationHidden(DeviceAdminReceiver.getComponentName(context), pkgName))
        } catch (e: Exception) {
            false
        }
    }

    @JvmStatic
    fun checkRootFrozen(
        context: Context,
        pkgName: String,
        packageManager: PackageManager?
    ): Boolean {
        return try {
            packageManager?.getApplicationEnabledSetting(pkgName)
                ?: context.packageManager.getApplicationEnabledSetting(
                    pkgName
                )
        } catch (e: Exception) {
            -1
        }.let {
            it != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT &&
                    it != PackageManager.COMPONENT_ENABLED_STATE_ENABLED
        }
    }

    /**
     * @param packageName 应用包名
     * @return true 则已冻结
     */
    @JvmStatic
    fun realGetFrozenStatus(context: Context, packageName: String): Boolean {
        return (checkMRootFrozen(context, packageName)
                || checkRootFrozen(context, packageName,


                expression.with(A, mPid.data[2])

            if (mPid.data.size > 3)
                expression.with(B, mPid.data[3])

            if (mPid.data.size > 4)
                expression.with(C, mPid.data[4])

            if (mPid.data.size > 5)
                expression.with(D, mPid.data[5])

            try {
                mPid.calculatedResult = expression.evaluate().numberValue.toFloat()
                mPid.calculatedResultString = mPid.calculatedResult.toString()
            } catch (nfex: NumberFormatException) {
                Log.e(OBDCommand::class.java.simpleName, "[Expression:" + expression + "] [mode:" + mPid.mode + "] [Pid:" + mPid.PID + "] [formula:" + mPid.formula
                        + "] [bytes:" + mPid.bytes + "] [BytesReturned:" + mPid.data.size + "]", nfex)
            } catch (genEx: Exception) {
                Log.e(OBDCommand::class.java.simpleName, "[Expression:" + expression + "] [mode:" + mPid.mode + "] [Pid:" + mPid.PID + "] [formula:" + mPid.formula + "] [bytes:" + mPid.bytes + "] [BytesReturned:" + mPid.data.size + "]", genEx)
            }
        }
    }
}
package com.baomidou.mybatisplus.samples.kotlin

import com.baomidou.mybatisplus.extension.plugins.pagination.Page
import com.baomidou.mybatisplus.samples.kotlin.entity.User
import com.baomidou.mybatisplus.samples.kotlin.mapper.UserMapper
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest

/**
 * @author nieqiurong
 */
@SpringBootTest
class ApplicationTests {

    private val logger = LoggerFactory.getLogger(ApplicationTests::class.java)

    @Autowired
    private lateinit var userMapper: UserMapper

    @Test
    fun test() {
        logger.info("--------------演示分页查询--------------------")
        val page = userMapper.selectPage(Page(1, 3), null)
        Assertions.assertEquals(5, page.total)
        Assertions.assertEquals(3, page.size)
        val insertUser = User()
        insertUser.name = "demo"
        insertUser.age = 10
        insertUser.email = "demo@example.com"
        logger.info("--------------演示写入--------------------")
        Assertions.assertTrue(userMapper.insert(insertUser) > 0)
        Assertions.assertNotNull(insertUser.createUserId)
        Assertions.assertNotNull(insertUser.createTime)
        Assertions.assertNull(insertUser.updateTime)
        Assertions.assertNull(insertUser.updateTime)
        logger.info("--------------演示查询--------------------")
        val selectUser = userMapper.selectById(insertUser.id)
        Assertions.assertNotNull(selectUser)
        Assertions.assertEquals("demo", selectUser.name)
        Assertions.assertEquals("demo@example.com", selectUser.email)
        Assertions.assertEquals(10, selectUser.age)
        logger.info("--------------演示更新--------------------")
        val updateUser = User()
        updateUser.id = insertUser.id
        updateUser.name = "test"
        Assertions.assertTrue(userMapper.updateById(updateUser) > 0)
        val selectUpdateUser = userMapper.selectById(insertUser.id)
        Assertions.assertNotNull(selectUpdateUser)


tionRate(System.Single)
IL2CPP_EXTERN_C IL2CPP_METHOD_ATTR void ScrollRect_set_decelerationRate_mD6F9A2957861F11D6D8159CB86E3E95155417617 (ScrollRect_tAD21D8FB1D33789C39BF4E4CD5CD012D9BD7DD51 * __this, float ___value0, const RuntimeMethod* method)
{
	{
		// public float decelerationRate { get { return m_DecelerationRate; } set { m_DecelerationRate = value; } }
		float L_0 = ___value0;
		__this->set_m_DecelerationRate_10(L_0);
		// public float decelerationRate { get { return m_DecelerationRate; } set { m_DecelerationRate = value; } }
		return;
	}
}
// System.Single UnityEngine.UI.ScrollRect::get_scrollSensitivity()
IL2CPP_EXTERN_C IL2CPP_METHOD_ATTR float ScrollRect_get_scrollSensitivity_m706C7F4633E2A4B816DA0423821E0716A73BADD0 (ScrollRect_tAD21D8FB1D33789C39BF4E4CD5CD012D9BD7DD51 * __this, const RuntimeMethod* method)
{
	{
		// public float scrollSensitivity { get { return m_ScrollSensitivity; } set { m_ScrollSensitivity = value; } }
		float L_0 = __this->get_m_ScrollSensitivity_11();
		return L_0;
	}
}
// System.Void UnityEngine.UI.ScrollRect::set_scrollSensitivity(System.Single)
IL2CPP_EXTERN_C IL2CPP_METHOD_ATTR void ScrollRect_set_scrollSensitivity_mA1A29A5B0DDC4E7A9CC25F871D0D962CAC85997E (ScrollRect_tAD21D8FB1D33789C39BF4E4CD5CD012D9BD7DD51 * __this, float ___value0, const RuntimeMethod* method)
{
	{
		// public float scrollSensitivity { get { return m_ScrollSensitivity; } set { m_ScrollSensitivity = value; } }
		float L_0 = ___value0;
		__this->set_m_ScrollSensitivity_11(L_0);
		// public float scrollSensitivity { get { return m_ScrollSensitivity; } set { m_ScrollSensitivity = value; } }
		return;
	}
}
// UnityEngine.RectTransform UnityEngine.UI.ScrollRect::get_viewport()
IL2CPP_EXTERN_C IL2CPP_METHOD_ATTR RectTransform_t285CBD8775B25174B75164F10618F8B9728E1B20 * ScrollRect_get_viewport_mD3C6CD4F782A5FC7F886BA1CC4DB6CF250DF164D (ScrollRect_tAD21D8FB1D33789C39BF4E4CD5CD012D9BD7DD51 * __this, const RuntimeMethod* method)
{
	{
		// public RectTransform viewport { get { return m_Viewport; } set { m_Viewport = value; SetDirtyCaching(); } }
		RectTransform_t285CBD8775B25174B75164F10618F8B9728E1B20 * L_0 = __this->get_m_Viewport_12();
		return L_0;
	}
}
// System.Void UnityEngine.UI.ScrollRect::set_viewport(UnityEngine.RectTransform)
IL2CPP_EXTERN_C IL2CPP_METHOD_ATTR void ScrollRect_set_viewport_m445D1D8568F23E4F14BF524A7C3D06AC8C779DBF (ScrollRect_tAD21D8FB1D33789C39BF4E4CD5CD012D9BD7DD51 * __this, RectTransform_t285CBD8775B25174B75164F


t(f'Invalid format: expected a dictionary at position {index}.')
            is_invalid = True

        if set(dictionary.keys()) != key_set:
            print(
                f'Invalid format: {dictionary} at position {index} has missing and/or invalid keys.'
            )
            is_invalid = True

    if is_invalid:
        return False
    print('Valid format.')
    return True

validate(medical_records)
print(find_invalid_records(**medical_records[0]))
```
---
id: 5d822fd413a79914d39e98f7
title: Step 47
challengeType: 0
dashedName: step-47
---

# --description--

Remove `orange` from the `.bb1d` gradient and change the `80%` to `50%`. This will make `--building-color1` solid for the top half, and then transition to `--window-color1` for the bottom half.

# --hints--

You should remove `orange` from the `linear-gradient`.

```js
assert.notInclude(new __helpers.CSSHelp(document).getStyle('.bb1d')?.background, 'orange');
```

You should change the now first `linear-gradient` color to transition at `50%`.

```js
assert.equal(new __helpers.CSSHelp(document).getStyle('.bb1d')?.getPropVal('background', true), 'linear-gradient(var(--building-color1)50%,var(--window-color1))');
```

# --seed--

## --seed-contents--

```html
<!DOCTYPE html>

    <meta charset="UTF-8">
    <title>City Skyline</title>
    <link href="styles.css" rel="stylesheet" />

```

```css
:root {
  --building-color1: #aa80ff;
  --building-color2: #66cc99;
  --building-color3: #cc6699;
  --building-color4: #538cc6;
  --window-color1: black;
}

* {
  border: 1px solid black;
  box-sizing: border-box;
}

body {
  height: 100vh;
  margin: 0;
  overflow: hidden;
}

.background-buildings, .foreground-buildings {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: flex-end;
  justify-content: space-evenly;
  position: absolute;
  top: 0;
}

/* BACKGROUND BUILDINGS - "bb" stands for "background building" */
.bb1 {
  width: 10%;
  height: 70%;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.bb1a {
  width: 70%;
}

.bb1b {
  width: 80%;
}

.bb1c {
  width: 90%;
}
--fcc-editable-region--
.bb1d {
  width:


\xfc\xe3\x01\0.{21}(.*)\0\0(.*)\0\0|s p/Microsoft Windows 7 - 10 microsoft-ds/ i/workgroup: $P(1)/ o/Windows/ h/$P(2)/ cpe:/o:microsoft:windows/
match microsoft-ds m|^\0\0\0.\xffSMBr\0\0\0\0\x88\x01@\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\x06\0\0\x01\0\x11\x07\0.2\0\x01\0\x04\x11\0\0\0\0\x01\0\0\0\0\0\xfc\xe3\x01\0|s p/Microsoft Windows 7 - 10 microsoft-ds/ o/Windows/ cpe:/o:microsoft:windows/
match microsoft-ds m|^\0\0\0.\xffSMBr\0\0\0\0\x88\x01@\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\x06\0\0\x01\0\x11\x07\0.2\0\x01\0\x04A\0\0\0\0\x01\0\0\0\0\0\xfd\xe3\x01\0.{21}((?:..)*)\0\0((?:..)*)\0\0|s p/Microsoft Windows Server 2008 R2 microsoft-ds/ i/workgroup: $P(1)/ o/Windows/ h/$P(2)/ cpe:/o:microsoft:windows_server_2008:r2/a
match microsoft-ds m|^\0\0\0.\xffSMBr\0\0\0\0\x88\x01@\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\x06\0\0\x01\0\x11\x07\0.\x10\0\x01\0\x04\x11\0\0\0\0\x01\0\0\0\0\0\xfc\xe3\x01\0.{21}((?:..)*)\0\0((?:..)*)\0\0|s p/Microsoft Windows Embedded Standard microsoft-ds/ i/workgroup: $P(1)/ o/Windows/ h/$P(2)/ cpe:/o:microsoft:windows/a
match microsoft-ds m|^\0\0\0.\xffSMBr\0\0\0\0\x88\x01@\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\x06\0\0\x01\0\x11\x07\0.\x10\0\x01\0\x04\x11\0\0\0\0\x01\0\0\0\0\0\xfd\xe3\0\0.{21}((?:..)*)\0\0((?:..)*)\0\0|s p/Microsoft Windows XP Embedded microsoft-ds/ i/workgroup: $P(1)/ o/Windows/ h/$P(2)/ cpe:/o:microsoft:windows_xp/a
match microsoft-ds m|^\0\0\0.\xffSMBr\0\0\0\0\x88\x01@\0\0\0\0\0\0\0\0\0\0\0\0\0\0@\x06\0\0\x01\0\x11\x07\0.\x0a\0\x01\0\x04\x11\0\0\0\0\x01\0\0\0\0\0\xfd\xe3\x01\0.{21}((?:..)*)\0\0((?:..)*)\0\0|s p/Microsoft Windows Vista Embedded microsoft-ds/ i/workgroup: $P(1)/ o/Windows/ h/$P(2)/ cpe


        "CARGO_MAKE_WORKSPACE_MAKEFILE",
        "./examples/workspace/Makefile2.toml",
    );
    let config = load_descriptors("./bad/bad.toml", None, false, false);
    env::remove_var("CARGO_MAKE_WORKSPACE_MAKEFILE");

    let task = config.tasks.get("workspace-echo");
    assert!(task.is_none());
}

#[test]
fn load_descriptors_no_load_workspace_makefile() {
    env::remove_var("CARGO_MAKE_WORKSPACE_MAKEFILE");
    let config = load_descriptors("./bad/bad.toml", None, false, false);

    let task = config.tasks.get("workspace-echo");
    assert!(task.is_none());
}

#[test]
fn load_no_stable() {
    let config = load("./examples/skip_core_tasks.toml", None, false);

    assert!(config.env.get(&"RUST_BACKTRACE".to_string()).is_none());

    let mut task = config.tasks.get("empty");
    assert!(task.is_some());
    task = config.tasks.get("init");
    assert!(task.is_none());
}

#[test]
fn load_with_stable() {
    let config = load("./examples/simple-example.toml", None, false);

    assert!(config.env.get(&"RUST_BACKTRACE".to_string()).is_some());

    let mut task = config.tasks.get("empty");
    assert!(task.is_some());
    task = config.tasks.get("init");
    assert!(task.is_some());
}

#[test]
fn load_default_no_stable() {
    let config = load_default(false, false);

    let mut task = config.tasks.get("empty");
    assert!(task.is_some());
    task = config.tasks.get("init");
    assert!(task.is_none());
}

#[test]
fn load_default_with_stable() {
    let config = load_default(true, false);

    let mut task = config.tasks.get("empty");
    assert!(task.is_some());
    task = config.tasks.get("init");
    assert!(task.is_some());
}

#[test]
fn load_default_no_experimental() {
    let config = load_default(true, false);

    let mut task = config.tasks.get("ci-flow");
    assert!(task.is_some());
    task = config.tasks.get("coverage-lcov");
    assert!(task.is_none());
}

#[test]
fn load_default_with_experimental() {
    let config = load_default(true, true);

    let mut task = config.tasks.get("ci-flow");
    assert!(task.is_some());
    task = config.tasks.get("coverage-lcov");
    assert!(task.is_some());
}

#[test]
fn load_external_descriptor_no_file() {
    let config = load_external_descriptor(".", "bad_file.toml2", false);

    assert!(config.config.is_none());
    assert!(config.env.is_none());
    assert!(config.tasks.is_none());
}

#[test]
fn load_external_descriptor_simple_file() {
    let config = load_external_descriptor(".", "./examples/alias.toml", false);

    assert!(config.config.is_none());
    assert!(config.env.is_none());
    assert!(config.tasks.is_some());

    let tasks = config.tasks.unwrap();
    let test_task = tasks.get("D2").unwrap();
    let alias = test_task.alias.clone();
    assert_eq!(alias.unwrap(), "D");
}

#[test]
fn load_external_descriptor_extending_file() {
    let config = load_external_descriptor(".", "examples/extending.toml", false);

    assert!(config.config.is_some());


options"], 10f, 460f)

        if (Settings.isTiltControl) {
            val tiltSensitive = Assets.languagesBundle!!["tilt_sensitive"]
            val textWidth = getTextWidth(Assets.font15, tiltSensitive)
            Assets.font15!!.draw(batch, tiltSensitive, SCREEN_WIDTH / 2f - textWidth / 2f, 335f)
            batch!!.draw(Assets.helpClick, 155f, 0f, 10f, 125f)
        } else {
            val speed = Assets.languagesBundle!!["speed"]
            val textWidth = getTextWidth(Assets.font15, speed)
            Assets.font15!!.draw(batch, speed, SCREEN_WIDTH / 2f - textWidth / 2f, 335f)
        }
        Assets.font15!!.draw(batch, accelerometerSlider.value.toInt().toString() + "", 215f, 313f)
        batch!!.end()

        camera.update()
        batch!!.projectionMatrix = camera.combined
        batch!!.begin()
        renderNave()
        batch!!.end()
    }

    private fun renderNave() {
        val keyFrame: TextureRegion? = if (spaceShip.velocity.x < -3) Assets.spaceShipLeft
        else if (spaceShip.velocity.x > 3) Assets.spaceShipRight
        else Assets.spaceShip

        batch!!.draw(keyFrame, spaceShip.position.x - SpaceShip.DRAW_WIDTH / 2f, spaceShip.position.y - SpaceShip.DRAW_HEIGHT / 2f, SpaceShip.DRAW_WIDTH, SpaceShip.DRAW_HEIGHT)
    }

    override fun keyDown(keycode: Int): Boolean {
        if (keycode == Input.Keys.BACK || keycode == Input.Keys.ESCAPE) {
            playSound(Assets.clickSound!!)
            game.screen = MainMenuScreen(game)
            return true
        }
        return false
    }
}
package com.nopalsoft.zombiekiller.game

import com.badlogic.gdx.graphics.OrthographicCamera
import com.badlogic.gdx.graphics.g2d.Sprite
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.g2d.TextureRegion
import com.badlogic.gdx.maps.tiled.TiledMapTileLayer
import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer
import com.badlogic.gdx.math.MathUtils
import com.badlogic.gdx.math.Matrix4
import com.badlogic.gdx.math.Vector3
import com.badlogic.gdx.physics.box2d.Box2DDebugRenderer
import com.nopalsoft.zombiekiller.AnimationSprite
import com.nopalsoft.zombiekiller.Assets
import com.nopalsoft.zombiekiller.game_objects.Bullet
import com.nopalsoft.zombiekiller.game_objects.Hero
import com.nopalsoft.zombiekiller.game_objects.ItemGem
import com.nopalsoft.zombiekiller.game_objects.ItemHeart
import com.nopalsoft.zombiekiller.game_objects.ItemMeat
import com.nopalsoft.zombiekiller.game_objects.ItemShield
import com.nopalsoft.zombiekiller.game_objects.ItemSkull
import com.nopalsoft.zombiekiller.game_objects.ItemStar
import com.nopalsoft.zombiekiller.game_objects.Zombie
import com.nopalsoft.zombiekiller.screens.Screens

class WorldGameRenderer2(batch: SpriteBatch, worldGame: WorldGame) {

    var batch: SpriteBatch
    var worldGame: WorldGame
    var camera: ParallaxCamera = ParallaxCamera(WIDTH, HEIGHT)
    var tiledRenderer: OrthogonalTiledMapRenderer

    var physicsDebugRenderer: Box2DDebugRenderer?

    var xMin: Float
    var xMax: Float
    var yMin: Float
    var yMax: Float

    var map1: T


,
	@XmlEnumValue("[FOZ_US]")
	FOZUS("[FOZ_US]"),
	@XmlEnumValue("[FTH_BR]")
	FTHBR("[FTH_BR]"),
	@XmlEnumValue("[FTH_I]")
	FTHI("[FTH_I]"),
	@XmlEnumValue("[FTH_US]")
	FTHUS("[FTH_US]"),
	@XmlEnumValue("[FT_BR]")
	FTBR("[FT_BR]"),
	@XmlEnumValue("[FT_I]")
	FTI("[FT_I]"),
	@XmlEnumValue("[FT_US]")
	FTUS("[FT_US]"),
	@XmlEnumValue("[FUR_US]")
	FURUS("[FUR_US]"),
	@XmlEnumValue("[GAL_BR]")
	GALBR("[GAL_BR]"),
	@XmlEnumValue("[GAL_US]")
	GALUS("[GAL_US]"),
	@XmlEnumValue("[GAL_WI]")
	GALWI("[GAL_WI]"),
	@XmlEnumValue("[GC]")
	GC("[GC]"),
	@XmlEnumValue("[GIL_BR]")
	GILBR("[GIL_BR]"),
	@XmlEnumValue("[GIL_US]")
	GILUS("[GIL_US]"),
	@XmlEnumValue("[GPL'U]")
	GPLU("[GPL'U]"),
	@XmlEnumValue("[GR]")
	GR("[GR]"),
	@XmlEnumValue("[G]")
	G1("[G]"),
	@XmlEnumValue("[HD_I]")
	HDI("[HD_I]"),
	@XmlEnumValue("[HNSF'U]")
	HNSFU("[HNSF'U]"),
	@XmlEnumValue("[HPF]")
	HPF("[HPF]"),
	@XmlEnumValue("[H]")
	H1("[H]"),
	@XmlEnumValue("[IN_BR]")
	INBR("[IN_BR]"),
	@XmlEnumValue("[IN_I'H2O]")
	INIH2O("[IN_I'H2O]"),
	@XmlEnumValue("[IN_I'HG]")
	INIHG("[IN_I'HG]"),
	@XmlEnumValue("[IN_I]")
	INI("[IN_I]"),
	@XmlEnumValue("[IN_US]")
	INUS("[IN_US]"),
	@XmlEnumValue("[IU]")
	IU("[IU]"),
	@XmlEnumValue("[KA'U]")
	KAU("[KA'U]"),
	@XmlEnumValue("[KNK'U]")
	KNKU("[KNK'U]"),
	@XmlEnumValue("[KN_BR]")
	KNBR("[KN_BR]"),
	@XmlEnumValue("[KN_I]")
	KNI("[KN_I]"),
	@XmlEnumValue("[K]")
	K("[K]"),
	@XmlEnumValue("[LBF_AV]")
	LBFAV("[LBF_AV]"),
	@XmlEnumValue("[LB_AP]")
	LBAP("[LB_AP]"),
	@XmlEnumValue("[LB_AV]")
	LBAV("[LB_AV]"),
	@XmlEnumValue("[LB_TR]")
	LBTR("[LB_TR]"),
	@XmlEnumValue("[LCWT_AV]")
	LCWTAV("[LCWT_AV]"),
	@XmlEnumValue("[LIGNE]")
	LIGNE("[LIGNE]"),
	@XmlEnumValue("[LK_BR]")
	LKBR("[LK_BR]"),
	@XmlEnumValue("[LK_US]")
	LKUS("[LK_US]"),
	@XmlEnumValue("[LNE]")


IT: objtemplate ANIM_TAG_IMPACT ANIM_TAG_PINK_HEART OAM_NORMAL_BLEND_32x32 gDummySpriteAnimTable 0x0 0x83E7BF8 SpriteCB_RandomCentredHits

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
.pool
@Credits to Skeli & Lixdel
ANIM_PHOTONGEYSER:
	loadparticle ANIM_TAG_SHOCK_3 @charge
	loadparticle ANIM_TAG_SPARK_2 @paralyze_chance_anim
	loadparticle ANIM_TAG_SMALL_RED_EYE @red color
	loadparticle ANIM_TAG_THIN_RING @calm mind
	loadparticle ANIM_TAG_SMALL_EMBER @yellow color
	loadparticle ANIM_TAG_ORBS @recover
	pokespritetoBG bank_attacker
	setblends 0x80C
	launchtemplate GEYSER_CHARGE 0x2 0x1 0x0
	call GEYSER_SPARKS1
	launchtemplate Template_PowerAbsorptionOrb 0x2 0x3 0xffd8 0xffd8 0x10
	launchtemplate Template_PowerAbsorptionOrb 0x2 0x3 0x0 0x28 0x10
	pause 0xA
	call GEYSER_SPARKS2
	pause 0xA
	call GEYSER_SPARKS1
	pause 0xA
	call GEYSER_SPARKS2
	pause 0xA
	call GEYSER_SPARKS1
	launchtemplate Template_PowerAbsorptionOrb 0x2 0x3 0x0 0xffd8 0x10
	launchtemplate Template_PowerAbsorptionOrb 0x2 0x3 0x28 0x14 0x10
	pause 0xA
	call GEYSER_SPARKS2
	pause 0xA
	call GEYSER_SPARKS1
	pause 0xA
	call GEYSER_SPARKS2
	pause 0xA
	call GEYSER_SPARKS1
	launchtemplate Template_PowerAbsorptionOrb 0x2 0x3 0xffd8 0x0 0x10
	launchtemplate Template_PowerAbsorptionOrb 0x2 0x3 0x28 0x0 0x10
	pause 0xA
	call GEYSER_SPARKS2
	pause 0xA
	call GEYSER_SPARKS1
	pause 0xA
	call GEYSER_SPARKS2
	waitanimation
	launchtask AnimTask_pal_fade 0xa 0x5 PAL_BG 0x1 0x0 0xF 0x0
	pokespritefromBG bank_attacker
	playsound2 0x83 SOUND_PAN_ATTACKER
	unloadparticle ANIM_TAG_ORBS @recover
	unloadparticle ANIM_TAG_SHOCK_3 @charge
	loadparticle ANIM_TAG_YELLOW_BALL @confuse ray (for zap cannon)
	loadparticle ANIM_TAG_BLACK_BALL_2 @zap cannon
	loadparticle ANIM_TAG_AIR_WAVE_2 @white/gray color
	launchtemplate GEYSER_UPROAR1 0x3 0x6 0x0 0x0 0x0 0x0 0x1f 0x8
	launchtemplate GEYSER_ZAPBALL 0x83 0x6 0xa 0x0 0x0 0x0 0x1e 0x0
	launchtemplate GEYSER_SPARKSS 0x84 0x7 0xa 0x0 0x10 0x1e 0x0 0x28 0x0
	launchtemplate GEYSER_SPARKSS 0x84 0x7 0xa 0x0 0x10 0x1e 0x40 0x28 0x1
	launchtemplate GEYSER_SPARKSS 0x84 0x7 0xa 0x0 0x10 0x1e 0x80 0x28 0x0
	launchtemplate GEYSER_SPARKSS 0x84 0x7 0xa 0x0 0x10 0x1e SOUND_PAN_ATTACKER 0x28 0x


nvoking the EnvValidator.Validate method..
        /// </summary>
        internal static string RequiredKeysNotSpecifiedMessage {
            get {
                return ResourceManager.GetString("RequiredKeysNotSpecifiedMessage", resourceCulture);
            }
        }

        /// <summary>
        ///   Looks up a localized string similar to '{0}' is an invalid interpolation expression..
        /// </summary>
        internal static string VariableIsAnEmptyStringMessage {
            get {
                return ResourceManager.GetString("VariableIsAnEmptyStringMessage", resourceCulture);
            }
        }

        /// <summary>
        ///   Looks up a localized string similar to Environment variable is not set..
        /// </summary>
        internal static string VariableNotSetDefaultMessage {
            get {
                return ResourceManager.GetString("VariableNotSetDefaultMessage", resourceCulture);
            }
        }

        /// <summary>
        ///   Looks up a localized string similar to '{0}' is not set..
        /// </summary>
        internal static string VariableNotSetMessage {
            get {
                return ResourceManager.GetString("VariableNotSetMessage", resourceCulture);
            }
        }
    }
}


 function(i, stack) {
            var frame = normalizeFrame(stack);
            if (frame) {
                frames.push(frame);
            }
        });
    }

    triggerEvent('handle', {
        stackInfo: stackInfo,
        options: options
    });

    processException(
        stackInfo.name,
        stackInfo.message,
        stackInfo.url,
        stackInfo.lineno,
        frames,
        options
    );
}

function normalizeFrame(frame) {
    if (!frame.url) return;

    // normalize the frames data
    var normalized = {
        filename:   frame.url,
        lineno:     frame.line,
        colno:      frame.column,
        'function': frame.func || '?'
    }, context = extractContextFromFrame(frame), i;

    if (context) {
        var keys = ['pre_context', 'context_line', 'post_context'];
        i = 3;
        while (i--) normalized[keys[i]] = context[i];
    }

    normalized.in_app = !( // determine if an exception came from outside of our app
        // first we check the global includePaths list.
        !globalOptions.includePaths.test(normalized.filename) ||
        // Now we check for fun, if the function name is Raven or TraceKit
        /(Raven|TraceKit)\./.test(normalized['function']) ||
        // finally, we do a last ditch effort and check for raven.min.js
        /raven\.(min\.)?js$/.test(normalized.filename)
    );

    return normalized;
}

function extractContextFromFrame(frame) {
    // immediately check if we should even attempt to parse a context
    if (!frame.context || !globalOptions.fetchContext) return;

    var context = frame.context,
        pivot = ~~(context.length / 2),
        i = context.length, isMinified = false;

    while (i--) {
        // We're making a guess to see if the source is minified or not.
        // To do that, we make the assumption if *any* of the lines passed
        // in are greater than 300 characters long, we bail.
        // Sentry will see that there isn't a context
        if (context[i].length > 300) {
            isMinified = true;
            break;
        }
    }

    if (isMinified) {
        // The source is minified and we don't know which column. Fuck it.
        if (isUndefined(frame.column)) return;

        // If the source is minified and has a frame column
        // we take a chunk of the offending line to hopefully shed some light
        return [
            [],  // no pre_context
            context[pivot].substr(frame.column, 50), // grab 50 characters, starting at the offending column
            []   // no post_context
        ];
    }

    return [
        context.slice(0, pivot),    // pre_context
        context[pivot],             // context_line
        context.slice(pivot + 1)    // post_context
    ];
}

function processException(type, message, fileurl, lineno, frames, options) {
    var stacktrace, label, i;

    // In some instances message is not actually a string, no idea why,
    // so we want to always coerce it to one.
    message += '';

    // Sometimes an exception is getting logged in Sentry as
    // <no message value>
    // This can only mean that the message was falsey since this value
    // is hardcoded into Sentry itself.
    // At this point, if the message is falsey, we bail since it's useless
    if (type === 'Error' && !message) return;

    if (globalOptions.ignoreErrors.test(message)) return;

    if (frames && frames.length) {
        fileurl = frames[0].filename || fileurl;
        // Sentry expects frames oldest to newest
        // and JS sends them as newest to oldest
        frames.reverse();
        stacktrace = {frames: fr


 combine and normal squad len max is 6
    if (side == FleetSide.our) {
      final firstLength = inBattleSquads![0].ships.length;
      if (firstLength > index) return getOShip1(index);
      return getOShip2(index - kSecondSquadIndexStart); // len may be always 6
    } else {
      final firstLength = enemySquads![0].ships.length;
      if (firstLength > index) return getEShip1(index);
      return getEShip2(index - kSecondSquadIndexStart);
    }
  }

  // index start from 1
  Ship getShipByNumero(FleetSide side, int num) => getShip(side, num - 1);

  void gunFireRound(GunFireRound data, {bool isFriendlyBattle = false}) {
    if (data.apiAtEflag == null) return;
    for (final (index, flag) in data.apiAtEflag!.indexed) {
      if (flag != 1 && flag != 0) {
        log("unhandled active flag");
        continue;
      }
      final actIndex = data.apiAtList![index];

      final ourSquads = isFriendlyBattle ? friendSquads! : inBattleSquads!;

      final actSquads = flag == 0 ? ourSquads : enemySquads!;
      final defSquads = flag == 1 ? ourSquads : enemySquads!;

      final damages = data.apiDamage![index];
      final defList = data.apiDfList![index];

      for (final (index, damage) in damages.indexed) {
        final defIndex = defList[index];
        // "防御艦のインデックス　[][攻撃対象数]　0基点　単発カットイン攻撃では [防御艦, -1, -1] になる" Not Understand this case yet
        if (defIndex == -1) continue;
        late final Ship defShip;
        if (defIndex < defSquads[0].ships.length) {
          defShip = defSquads[0].ships[defIndex];
        } else {
          defShip = defSquads[1].ships[defIndex -
              kSecondSquadIndexStart]; // second squad index start from 6
        }
        calculateDamageTaken(defShip.hashCode, damage);

        late final Ship actShip;
        if (actIndex < actSquads[0].ships.length) {
          actShip = actSquads[0].ships[actIndex];
        } else {
          actShip = actSquads[1].ships[actIndex - kSecondSquadIndexStart];
        }

        calculateDamageDealt(actShip.hashCode, damage);
      }
    }
  }

  void initDMGMap() {
    dmgTakenMap = {for (var ship in allShips) ship.hashCode: 0};
    dmgMap = {for (var ship in allShips) ship.hashCode: 0};
  }

  void initDoubleEnemySquads(DoubleEnemyBattleData data) {
    enemySquads = [
      Squad.fromSingleEnemy(
          data.apiShipKe, data.apiShipLv, data.apiEMaxhps, data.apiENowhps, data.apiESlot),
      Squad.fromSingleEnemy(data.apiShipKeCombined!, data.apiShipLvCombined!,
          data.apiEMaxhpsCombined!, data.apiENowhpsCombined!, data.apiESlotCombined!),
    ];
  }

  void initFriendSquads(BattleFriendlyInfo info) {
    friendSquads = [
      Squad.fromSingleFriend(
          info.apiShipId, info.apiShipLv, info.apiMaxhps, info.apiNowhps)
    ];
    updateDMG


AE, Delta: [unicode.MaxCase]rune{0, 0, 0}},
		unicode.CaseRange{Lo: 0xA7B0, Hi: 0xA7BF, Delta: [unicode.MaxCase]rune{0, 0, 0}},
		unicode.CaseRange{Lo: 0xA7C2, Hi: 0xA7CA, Delta: [unicode.MaxCase]rune{0, 0, 0}},
		unicode.CaseRange{Lo: 0xA7F5, Hi: 0xA7F6, Delta: [unicode.MaxCase]rune{0, 0, 0}},
		unicode.CaseRange{Lo: 0xAB53, Hi: 0xAB53, Delta: [unicode.MaxCase]rune{0, 0, 0}},
		unicode.CaseRange{Lo: 0xAB70, Hi: 0xABBF, Delta: [unicode.MaxCase]rune{0, 0, 0}},
		unicode.CaseRange{Lo: 0x104B0, Hi: 0x104D3, Delta: [unicode.MaxCase]rune{0, 0, 0}},
		unicode.CaseRange{Lo: 0x104D8, Hi: 0x104FB, Delta: [unicode.MaxCase]rune{0, 0, 0}},
		unicode.CaseRange{Lo: 0x10C80, Hi: 0x10CB2, Delta: [unicode.MaxCase]rune{0, 0, 0}},
		unicode.CaseRange{Lo: 0x10CC0, Hi: 0x10CF2, Delta: [unicode.MaxCase]rune{0, 0, 0}},
		unicode.CaseRange{Lo: 0x118A0, Hi: 0x118DF, Delta: [unicode.MaxCase]rune{0, 0, 0}},
		unicode.CaseRange{Lo: 0x16E40, Hi: 0x16E7F, Delta: [unicode.MaxCase]rune{0, 0, 0}},
		unicode.CaseRange{Lo: 0x1E900, Hi: 0x1E943, Delta: [unicode.MaxCase]rune{0, 0, 0}},
	}
)
// Copyright 2015 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Copyright 2014 The ql Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSES/QL-LICENSE file.

package parser_driver

import (
	"math"
	"math/big"
	"strconv"
	"strings"

	"github.com/pingcap/errors"
	"github.com/abbychau/mysql-parser/parser_driver/mysql"
)

func truncateStr(str string, flen int) string {
	if flen != UnspecifiedLength && len(str) > flen {
		str = str[:flen]
	}
	return str
}

// IntegerUnsignedUpperBound indicates the max uint64 values of different mysql types.
func IntegerUnsignedUpperBound(intType byte) uint64 {
	switch intType {
	case mysql.TypeTiny:
		return math.MaxUint8
	case mysql.TypeShort:
		return math.MaxUint16
	case mysql.TypeInt24:
		return mysql.MaxUint24
	case mysql.TypeLong:
		return math.MaxUint32
	case mysql.TypeLonglong:
		return math.MaxUint64
	case mysql.TypeBit:
		return math.MaxUint64
	case mysql.TypeEnum:
		// enum can have at most 65535 distinct elements
		// it would be better to use len(FieldType.GetElems()), but we only have a byte type here
		return 65535
	case mysql.TypeSet:
		return math.MaxUint64
	default:
		panic("Input byte is not a mysql type")
	}
}

// IntegerSignedUpperBound indicates the max int64 values of


, avx2);
    c->emu_edge = BF(dav1d_emu_edge, avx2);
    c->resize = BF(dav1d_resize, avx2);

    if (!(flags & DAV1D_X86_CPU_FLAG_AVX512ICL))
        return;

    init_mc_fn (FILTER_2D_8TAP_REGULAR,        8tap_regular,        avx512icl);
    init_mc_fn (FILTER_2D_8TAP_REGULAR_SMOOTH, 8tap_regular_smooth, avx512icl);
    init_mc_fn (FILTER_2D_8TAP_REGULAR_SHARP,  8tap_regular_sharp,  avx512icl);
    init_mc_fn (FILTER_2D_8TAP_SMOOTH_REGULAR, 8tap_smooth_regular, avx512icl);
    init_mc_fn (FILTER_2D_8TAP_SMOOTH,         8tap_smooth,         avx512icl);
    init_mc_fn (FILTER_2D_8TAP_SMOOTH_SHARP,   8tap_smooth_sharp,   avx512icl);
    init_mc_fn (FILTER_2D_8TAP_SHARP_REGULAR,  8tap_sharp_regular,  avx512icl);
    init_mc_fn (FILTER_2D_8TAP_SHARP_SMOOTH,   8tap_sharp_smooth,   avx512icl);
    init_mc_fn (FILTER_2D_8TAP_SHARP,          8tap_sharp,          avx512icl);
    init_mc_fn (FILTER_2D_BILINEAR,            bilin,               avx512icl);

    init_mct_fn(FILTER_2D_8TAP_REGULAR,        8tap_regular,        avx512icl);
    init_mct_fn(FILTER_2D_8TAP_REGULAR_SMOOTH, 8tap_regular_smooth, avx512icl);
    init_mct_fn(FILTER_2D_8TAP_REGULAR_SHARP,  8tap_regular_sharp,  avx512icl);
    init_mct_fn(FILTER_2D_8TAP_SMOOTH_REGULAR, 8tap_smooth_regular, avx512icl);
    init_mct_fn(FILTER_2D_8TAP_SMOOTH,         8tap_smooth,         avx512icl);
    init_mct_fn(FILTER_2D_8TAP_SMOOTH_SHARP,   8tap_smooth_sharp,   avx512icl);
    init_mct_fn(FILTER_2D_8TAP_SHARP_REGULAR,  8tap_sharp_regular,  avx512icl);
    init_mct_fn(FILTER_2D_8TAP_SHARP_SMOOTH,   8tap_sharp_smooth,   avx512icl);
    init_mct_fn(FILTER_2D_8TAP_SHARP,          8tap_sharp,          avx512icl);
    init_mct_fn(FILTER_2D_BILINEAR,            bilin,               avx512icl);

    c->avg = BF(dav1d_avg, avx512icl);
    c->w_avg = BF(dav1d_w_avg, avx512icl);
    c->mask = BF(dav1d_mask, avx512icl);
    c->w_mask[0] = BF(dav1d_w_mask_444, avx512icl);
    c->w_mask[1] = BF(dav1d_w_mask_422, avx512icl);
    c->w_mask[2] = BF(dav1d_w_mask_420, avx512icl);
    c->blend = BF(dav1d_blend, avx512icl);
    c->blend_v = BF(dav1d_blend_v, avx512icl);
    c->blend_h = BF(dav1d_blend_h, avx512icl);
    c->warp8x8  = BF(dav1d_warp_affine_8x8, avx512icl);
    c->warp8x8t = BF(dav1d_warp_affine_8x8t, avx512icl);
    c->resize = BF(dav1d_resize, avx512icl);
#endif
}


tralytics/yolov5). Docker Autobuild ensures that the `ultralytics/yolov5:latest` image is always in sync with the most recent repository commit. To pull the latest image, run the following command:

```bash
sudo docker pull ultralytics/yolov5:latest
```

## Step 2: Run the Docker Container

### Basic container:

Run an interactive instance of the YOLOv5 Docker image (called a "container") using the `-it` flag:

```bash
sudo docker run --ipc=host -it ultralytics/yolov5:latest
```

### Container with local file access:

To run a container with access to local files (e.g., COCO training data in `/datasets`), use the `-v` flag:

```bash
sudo docker run --ipc=host -it -v "$(pwd)"/datasets:/usr/src/datasets ultralytics/yolov5:latest
```

### Container with GPU access:

To run a container with GPU access, use the `--gpus all` flag:

```bash
sudo docker run --ipc=host -it --gpus all ultralytics/yolov5:latest
```

## Step 3: Use YOLOv5 🚀 within the Docker Container

Now you can train, test, detect, and export YOLOv5 models within the running Docker container:

```bash
# Train a model on your data
python train.py

# Validate the trained model for Precision, Recall, and mAP
python val.py --weights yolov5s.pt

# Run inference using the trained model on your images or videos
python detect.py --weights yolov5s.pt --source path/to/images

# Export the trained model to other formats for deployment
python export.py --weights yolov5s.pt --include onnx coreml tflite
```

---
comments: true
description: Learn how to optimize YOLOv5 with hyperparameter evolution using Genetic Algorithm. This guide provides steps to initialize, define, evolve and visualize hyperparameters for top performance.
keywords: Ultralytics, YOLOv5, Hyperparameter Optimization, Genetic Algorithm, Machine Learning, Deep Learning, AI, Object Detection, Image Classification, Python
---

📚 This guide explains **hyperparameter evolution** for YOLOv5 🚀. Hyperparameter evolution is a method of [Hyperparameter Optimization](https://en.wikipedia.org/wiki/Hyperparameter_optimization) using a [Genetic Algorithm](https://en.wikipedia.org/wiki/Genetic_algorithm) (GA) for optimization.

Hyperparameters in ML control various aspects of training, and finding optimal values for them can be a challenge. Traditional methods like grid searches can quickly become intractable due to 1) the high dimensional search space 2) unknown correlations among the dimensions, and 3) expensive nature of evaluating the fitness at each point, making GA a suitable candidate for hyperparameter searches.

## Before You Start

Clone repo and install [requirements.txt](https://github.com/ultralytics/yolov5/blob/master/requirements.txt) in a [**Python>=3.8.0**](https://www.python.org/) environment, including [**PyTorch>=1.8**](https://pytorch.org/get-started/locally/). [Models](https://github.com/ultralytics/yolov5/tree/master/models) and [datasets](https://github.com/ultralytics/yolov5/tree/master/data) download automatically from the latest YOLOv5 [release](https://github.com/ultralytics/yolov5/releases).

```bash
git clone https://github.com/ultralytics/yolov5  # clone
cd yolov5
pip install -r requirements.txt  # install
```

## 1. Initialize Hyperparameters

YOLOv5 has about 30 hyperparameters used for various training settings. These are defined in `*.yaml` files in the `/data/hyps` directory. Better initial guesses will produce better final results,


x3d \\x22ArYcxyJSLOkWhsN3xLIG+rNZJl3GEMEV1HJXMI7TfGoA4ffSCG6Ak9Pu5lL4/b8+uCihOf8DgZfPTeXKz98FkAYAAACBeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXN5bmRpY2F0aW9uLmNvbTo0NDMiLCJmZWF0dXJlIjoiQXR0cmlidXRpb25SZXBvcnRpbmdDcm9zc0FwcFdlYiIsImV4cGlyeSI6MTcxNDUyMTU5OSwiaXNTdWJkb21haW4iOnRydWV9\\x22;document.head.appendChild(meta2);})();\\x3c/script\\x3e\\x3c/head\\x3e\\x3cbody\\x3e\\x3cscript data-jc\\x3d\\x2256\\x22 data-jc-version\\x3d\\x22r20241120\\x22\\x3e(function(){\\x27use strict\\x27;/*  Copyright The Closure Library Authors. SPDX-License-Identifier: Apache-2.0 */ var k\\x3dthis||self;var m;function aa(a){k.setTimeout(()\\x3d\\x3e{throw a;},0)};var p,q;a:{for(var t\\x3d[\\x22CLOSURE_FLAGS\\x22],u\\x3dk,v\\x3d0;v\\x3ct.length;v++)if(u\\x3du[t[v]],u\\x3d\\x3dnull){q\\x3dnull;break a}q\\x3du}var ba\\x3dq\\x26\\x26q[610401301];p\\x3dba!\\x3dnull?ba:!1;var w;const ca\\x3dk.navigator;w\\x3dca?ca.userAgentData||null:null;function x(a){return p?w?w.brands.some(({brand:b})\\x3d\\x3eb\\x26\\x26b.indexOf(a)!\\x3d-1):!1:!1}function y(a){var b;a:{if(b\\x3dk.navigator)if(b\\x3db.userAgent)break a;b\\x3d\\x22\\x22}return b.indexOf(a)!\\x3d-1};function z(){return p?!!w\\x26\\x26w.brands.length\\x3e0:!1}function A(){return z()?x(\\x22Chromium\\x22):(y(\\x22Chrome\\x22)||y(\\x22CriOS\\x22))\\x26\\x26!(z()?0:y(\\x22Edge\\x22))||y(\\x22Silk\\x22)};!y(\\x22Android\\x22)||A();A();y(\\x22Safari\\x22)\\x26\\x26(A()||(z()?0:y(\\x22Coast\\x22))||(z()?0:y(\\x22Opera\\x22))||(z()?0:y(\\x22Edge\\x22))||(z()?x(\\x22Microsoft Edge\\x22):y(\\x22Edg/\\x22))||z()\\x26\\x26x(\\x22Opera\\x22));function da(a,b){a.__closure__error__context__984382||(a.__closure__error__context__984382\\x3d{});a.__closure__error__context__984382.severity\\x3db};var B\\x3dSymbol();var ea\\x3d{},fa\\x3d{};function ha(a){return!(!a||typeof a!\\x3d\\x3d\\x


ors_Size  EQU   __Vectors_End - __Vectors

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Default interrupt handlers.
;;
        THUMB

        PUBWEAK Reset_Handler
        SECTION .text:CODE:REORDER:NOROOT(2)
Reset_Handler
        ; Unlock Register
        LDR     R0, =0x40000100
        LDR     R1, =0x59
        STR     R1, [R0]
        LDR     R1, =0x16
        STR     R1, [R0]
        LDR     R1, =0x88
        STR     R1, [R0]

	#ifndef ENABLE_SPIM_CACHE
        LDR     R0, =0x40000200            ; R0 = Clock Controller Register Base Address
        LDR     R1, [R0,#0x4]              ; R1 = 0x40000204  (AHBCLK)
        ORR     R1, R1, #0x4000
        STR     R1, [R0,#0x4]              ; CLK->AHBCLK |= CLK_AHBCLK_SPIMCKEN_Msk;

        LDR     R0, =0x40007000            ; R0 = SPIM Register Base Address
        LDR     R1, [R0,#4]                ; R1 = SPIM->CTL1
        ORR     R1, R1,#2                  ; R1 |= SPIM_CTL1_CACHEOFF_Msk
        STR     R1, [R0,#4]                ; _SPIM_DISABLE_CACHE()
        LDR     R1, [R0,#4]                ; R1 = SPIM->CTL1
        ORR     R1, R1, #4                 ; R1 |= SPIM_CTL1_CCMEN_Msk
        STR     R1, [R0,#4]                ; _SPIM_ENABLE_CCM()
	#endif

        LDR     R0, =SystemInit
        BLX     R0

        ; Init POR
        ; LDR     R2, =0x40000024
        ; LDR     R1, =0x00005AA5
        ; STR     R1, [R2]

        ; Lock register
        LDR     R0, =0x40000100
        MOVS    R1, #0
        STR     R1, [R0]

        LDR     R0, =__iar_program_start
        BX      R0

        PUBWEAK NMI_Handler
        SECTION .text:CODE:REORDER:NOROOT(1)
NMI_Handler
        B NMI_Handler

        PUBWEAK MemManage_Handler
        SECTION .text:CODE:REORDER:NOROOT(1)
MemManage_Handler
        B MemManage_Handler

        PUBWEAK BusFault_Handler
        SECTION .text:CODE:REORDER:NOROOT(1)
BusFault_Handler
        B BusFault_Handler

        PUBWEAK UsageFault_Handler
        SECTION .text:CODE:REORDER:NOROOT(1)
UsageFault_Handler
        B UsageFault_Handler

        PUBWEAK SVC_Handler
        SECTION .text:CODE:REORDER:NOROOT(1)
SVC_Handler
        B SVC_Handler

        PUBWEAK DebugMon_Handler
        SECTION .text:CODE:REORDER:NOROOT(1)
DebugMon_Handler
        B DebugMon_Handler

        PUBWEAK PendSV_Handler
        SECTION .text:CODE:REORDER:NOROOT(1)
PendSV_Handler
        B PendSV_Handler

        PUBWEAK SysTick_Handler
        SECTION .text:CODE:REORDER:NOROOT(1)
SysTick_Handler
        B SysTick_Handler

        PUBWEAK  BOD_IRQHandler
        PUBWEAK  IRC_IRQHandler
        PUBWEAK  PWRWU_IRQHandler
        PUBWEAK  RAMPE_IRQHandler
        PUBWEAK  CKFAIL_IRQHandler
        PUBWEAK  RTC_IRQHandler
        PUBWEAK  TAMPER_IRQHandler


quo;<samp>detectmode</samp>’

Enable or disable the matching process.

Available values are:

‘<samp>off</samp>’

Disable the calculation of a matching (default).

‘<samp>full</samp>’

Calculate the matching for the whole video and output whether the whole video
matches or only parts.

‘<samp>fast</samp>’

Calculate only until a matching is found or the video ends. Should be faster in
some cases.

‘<samp>nb_inputs</samp>’

Set the number of inputs. The option value must be a non negative integer.
Default value is 1.

‘<samp>filename</samp>’

Set the path to which the output is written. If there is more than one input,
the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
integer), that will be replaced with the input number. If no filename is
specified, no output will be written. This is the default.

‘<samp>format</samp>’

Choose the output format.

Available values are:

‘<samp>binary</samp>’

Use the specified binary representation (default).

‘<samp>xml</samp>’

Use the specified xml representation.

‘<samp>th_d</samp>’

Set threshold to detect one word as similar. The option value must be an integer
greater than zero. The default value is 9000.

‘<samp>th_dc</samp>’

Set threshold to detect all words as similar. The option value must be an integer
greater than zero. The default value is 60000.

‘<samp>th_xh</samp>’

Set threshold to detect frames as similar. The option value must be an integer
greater than zero. The default value is 116.

‘<samp>th_di</samp>’

Set the minimum length of a sequence in frames to recognize it as matching
sequence. The option value must be a non negative integer value.
The default value is 0.

‘<samp>th_it</samp>’

Set the minimum relation, that matching frames to all frames must have.
The option value must be a double value between 0 and 1. The default value is 0.5.

31.175.1 Examples

To calculate the signature of an input video and store it in signature.bin:

ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -

To detect whether two videos match and store the signatures in XML format in
signature0.xml and sig


	continue
		}
		orderedFiles = append(orderedFiles, of)
	}

	var sb strings.Builder

	sb.WriteString("📦\n")
	for _, of := range orderedFiles {
		size := len(of.Contents)
		relPath, _ := filepath.Rel(projectRoot, of.Path)
		withSub := filepath.Join(entrySubDir, relPath)
		sb.WriteString(fmt.Sprintf("%d /%s\n", size, filepath.ToSlash(withSub)))
	}

	sb.WriteString("✄\n")
	for i, of := range orderedFiles {
		sb.Write(of.Contents)
		if i < len(orderedFiles)-1 {
			sb.WriteString("\n✄\n")
		}
	}

	return sb.String()
}

func outputForEntrypoint(projectRoot, entrypoint string) (jsOut, mapOut string) {
	jsOut = filepath.Join(projectRoot, changeToJS(filepath.Base(entrypoint)))
	mapOut = jsOut + ".map"
	return
}

func encodeStringToHexBytes(s string) string {
	n := len(s)
	if n == 0 {
		return ""
	}

	totalLen := n*4 + (n-1)*2 + 1
	buf := make([]byte, 0, totalLen)

	hexDigits := "0123456789abcdef"
	for i := 0; i < n; i++ {
		b := s[i]
		buf = append(buf, '0', 'x')
		buf = append(buf,
			hexDigits[b>>4],
			hexDigits[b&0xF],
		)

		if i < n-1 {
			if (i+1)%12 == 0 {
				buf = append(buf, ',', '\n')
			} else {
				buf = append(buf, ',', ' ')
			}
		}
	}

	buf = append(buf, '\n')

	return string(buf)
}

func encodeStringToCString(s string) string {
	n := len(s)
	if n == 0 {
		return `""`
	}

	hexDigits := "0123456789abcdef"
	var bldr strings.Builder

	openLiteral := func() {
		bldr.WriteByte('"')
	}
	closeLiteral := func() {
		bldr.WriteByte('"')
	}

	inLiteral := false

	for i := 0; i < n; i++ {
		c := s[i]

		if !inLiteral {
			openLiteral()
			inLiteral = true
		}

		if c == '\n' {
			bldr.WriteByte('\\')
			bldr.WriteByte('n')
			closeLiteral()
			inLiteral = false

			if i < n-1 {
				bldr.WriteByte('\n')
				openLiteral()
				inLiteral = true
			}
			continue
		}

		switch c {
		case '"':
			bldr.WriteByte('\\')
			bldr.WriteByte('"')
		case '\\':
			bldr.WriteByte('\\')
			bldr.WriteByte('\\')

		case '\a':
			bldr.WriteByte('\\')
			bldr.WriteByte('a')
		case '\b':
			bldr.WriteByte('\\')
			bldr.WriteByte('b')
		case '\t':
			bldr.WriteByte('\\')
			bldr.WriteByte('t')
		case '\v':
			bldr.WriteByte('\\')
			bldr.WriteByte('v')
		case '\f':
			bldr.WriteByte('\\')
			bldr.WriteByte('f')
		case '\r':
			bldr.WriteByte('\\')
			bldr.WriteByte('r')

		default:
			isPrintableExceptQuoteAndBackslash := c >= 0x20 && c <= 0x7E
			if isPrintableExceptQuoteAndBackslash {
				bldr.WriteByte(c)
			} else {
				bldr.WriteByte('\\')
				bldr.WriteByte('x')
				bldr.WriteByte(hexDigits[c>>4])
				bldr.WriteByte(hexDigits[c&0xF])
			}
		}
	}

	if inLiteral {
		closeLiteral()
	}

	bldr.WriteBy


\Extension\SearchResultProperty::__construct")
   - `setEntitiesConfig`[[?]](https://github.com/oroinc/platform/tree/3.0.0/src/Oro/Bundle/SearchBundle/Datagrid/Extension/SearchResultProperty.php#L68 "Oro\Bundle\SearchBundle\Datagrid\Extension\SearchResultProperty::setEntitiesConfig")
* The `IndexListener::$entitiesConfig`[[?]](https://github.com/oroinc/platform/tree/3.0.0/src/Oro/Bundle/SearchBundle/EventListener/IndexListener.php#L36 "Oro\Bundle\SearchBundle\EventListener\IndexListener::$entitiesConfig") property was removed.
* The `SearchResultProperty::$entitiesConfig`[[?]](https://github.com/oroinc/platform/tree/3.0.0/src/Oro/Bundle/SearchBundle/Datagrid/Extension/SearchResultProperty.php#L20 "Oro\Bundle\SearchBundle\Datagrid\Extension\SearchResultProperty::$entitiesConfig") property was removed.
* The `PrepareResultItemListener::__construct(Router $router, ObjectMapper $mapper, EntityManager $em, EntityNameResolver $entityNameResolver)`[[?]](https://github.com/oroinc/platform/tree/3.0.0/src/Oro/Bundle/SearchBundle/EventListener/PrepareResultItemListener.php#L40 "Oro\Bundle\SearchBundle\EventListener\PrepareResultItemListener") method was changed to `PrepareResultItemListener::__construct(Router $router, ObjectMapper $mapper, EntityManager $em, EntityNameResolver $entityNameResolver, ConfigManager $configManager, TranslatorInterface $translator)`[[?]](https://github.com/oroinc/platform/tree/3.1.0/src/Oro/Bundle/SearchBundle/EventListener/PrepareResultItemListener.php#L47 "Oro\Bundle\SearchBundle\EventListener\PrepareResultItemListener")

SecurityBundle
--------------
* The following classes were removed:
   - `SecurityFacade`[[?]](https://github.com/oroinc/platform/tree/3.0.0/src/Oro/Bundle/SecurityBundle/SecurityFacade.php#L18 "Oro\Bundle\SecurityBundle\SecurityFacade")
   - `AclConditionalFactorBuilder`[[?]](https://github.com/oroinc/platform/tree/3.0.0/src/Oro/Bundle/SecurityBundle/ORM/Walker/AclConditionalFactorBuilder.php#L19 "Oro\Bundle\SecurityBundle\ORM\Walker\AclConditionalFactorBuilder")
   - `AclWalker`[[?]](https://github.com/oroinc/platform/tree/3.0.0/src/Oro/Bundle/SecurityBundle/ORM/Walker/AclWalker.php#L22 "Oro\Bundle\SecurityBundle\ORM\Walker\AclWalker")
   - `AclCondition`[[?]](https://github.com/oroinc/platform/tree/3.0.0/src/Oro/Bundle/SecurityBundle/ORM/Walker/Condition/AclCondition.php#L7 "Oro\Bundle\SecurityBundle\ORM\Walker\Condition\AclCondition")
   - `AclConditionStorage`[[?]](https://github.com/oroinc/platform/tree/3.0.0/src/Oro/Bundle/SecurityBundle/ORM/Walker/Condition/AclConditionStorage.php#L5 "Oro\Bundle\SecurityBundle\ORM\Walker\Condition\AclConditionStorage")
   - `JoinAclCondition`[[?]](https://github.com/oroinc/platform/tree/3.0.0/src/Oro/Bundle/SecurityBundle/ORM/Walker/Condition/JoinAclCondition.php#L5 "Oro\Bundle\SecurityBundle\ORM\Walker\Condition


"#88C0D0" },
					"clojure .hljs-symbol": { color: "#EBCB8B" },
					"coq .hljs-built_in": { color: "#88C0D0" },
					"cpp .hljs-meta-string": { color: "#8FBCBB" },
					"css .hljs-built_in": { color: "#88C0D0" },
					"css .hljs-keyword": { color: "#D08770" },
					"diff .hljs-meta": { color: "#8FBCBB" },
					"ebnf .hljs-attribute": { color: "#8FBCBB" },
					"glsl .hljs-built_in": { color: "#88C0D0" },
					"groovy .hljs-meta:not(:first-child)": { color: "#D08770" },
					"haxe .hljs-meta": { color: "#D08770" },
					"java .hljs-meta": { color: "#D08770" },
					"ldif .hljs-attribute": { color: "#8FBCBB" },
					"lisp .hljs-name": { color: "#88C0D0" },
					"lua .hljs-built_in": { color: "#88C0D0" },
					"moonscript .hljs-built_in": { color: "#88C0D0" },
					"nginx .hljs-attribute": { color: "#88C0D0" },
					"nginx .hljs-section": { color: "#5E81AC" },
					"pf .hljs-built_in": { color: "#88C0D0" },
					"processing .hljs-built_in": { color: "#88C0D0" },
					"scss .hljs-keyword": { color: "#81A1C1" },
					"stylus .hljs-keyword": { color: "#81A1C1" },
					"swift .hljs-meta": { color: "#D08770" },
					"vim .hljs-built_in": { color: "#88C0D0", fontStyle: "italic" },
					"yaml .hljs-meta": { color: "#D08770" },
				},
				obsidian: {
					hljs: {
						display: "block",
						overflowX: "auto",
						padding: "0.5em",
						background: "#282b2e",
						color: "#e0e2e4",
					},
					"hljs-keyword": { color: "#93c763", fontWeight: "bold" },
					"hljs-selector-tag": { color: "#93c763", fontWeight: "bold" },
					"hljs-literal": { color: "#93c763", fontWeight: "bold" },
					"hljs-selector-id": { color: "#93c763" },
					"hljs-number": { color: "#ffcd22" },
					"hljs-attribute": { color: "#668bb0" },
					"hljs-code": { color: "white" },
					"hljs-class .hljs-title": { color: "white" },
					"hljs-section": { color: "white", fontWeight: "bold" },
					"hljs-regexp": { color: "#d39745" },
					"hljs-link": { color: "#d39745" },
					"hljs-meta": { color: "#557182" },
					"hljs-tag": { color: "#8cbbad" },
					"hljs-name": { color: "#8cbbad", fontWeight: "bold" },
					"hljs-bullet": { color: "#8cbbad" },
					"hljs-subst": { color: "#8cbbad" },
					"hljs-emphasis": { color: "#8cbbad" },
					"hljs-type": { color: "#8cbbad", fontWeight: "bold" },
					"hljs-built_in": { color: "#8cbbad" },
					"hljs-selector-attr": { color: "#8cbbad" },
					"hljs-selector-pseudo": { color: "#8cbbad" },
					"hljs-addition": { color: "#8cbbad


id="wsgi">WSGI

接着，我们就来到了Web服务器网关接口——是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。现在，你或许已经知道了这个博客是基于Python语言的框架。但是在我们揭晓这个答案之前，我们还需要介绍个小工具——New Relic。如果你在Chrome浏览器上使用Ghosty插件，你就会看到下面的东西。

[New Relic][2]

New Relic是一个网站监测工具，Google Analytics是一个分析工具。但是，不一样的是New Relic需要在我们启动的时候加进去：

nohup /PATH/bin/newrelic-admin run-program /PATH/bin/gunicorn --workers=2 MK_dream.wsgi -b 0.0.0.0:8080 --timeout=300&

现在这个请求总算来到了8080端口，接着到了Gunicorn的世界里，它是一个高效的Python WSGI Server。

过了上面几步这个请求终于交给了Django。

Django

Django这个天生带Admin的Web框架，就是适合CMS和博客。这并不意味着它的工作范围只限于此，它还有这么多用户:

[Who Use Django][3]

请求先到了Django的URL层，这个请求接着交给了View层来处理，View层访问Model层以后，与Template层一起渲染出了HTML。Django是一个MTV框架(类似于MVC之于Spring MVC)。接着，HTML先给了浏览器，浏览器继续去请求前端的内容。

它也可以用Farbic部署哦~~。

Angluar & Material Design Lite vs Bootstrap & jQuery Mobile

这是一个现代浏览器的前端战争。最开始，博客的前端是Bootstrap框架主导的UI，而移动端是jQuery Mobile做的(PS: Mezzanine框架原先的结构)。

接着，在我遇到了Backbone后，响应了下Martin Folwer的编辑-发布分离模式。用Node.js与RESTify直接读取博客的数据库做了一个REST API。Backbone就负责了相应的Detail页和List页的处理。

尽管这样做的方式可以让用户访问的速度更快，但是我相信没有一个用户会一次性的把技术博客看完。而且我博客流量的主要来源是Google和百度。

然后，我试着用Angula


: []*storagepb.TableFieldSchema{
					{
						Name:        "inner1",
						Mode:        storagepb.TableFieldSchema_REPEATED,
						Description: "repeat",
						Type:        storagepb.TableFieldSchema_BYTES,
					},
				},
			},
		},
		{
			desc: "json type",
			bq: &bigquery.FieldSchema{
				Name:        "name",
				Type:        bigquery.JSONFieldType,
				Description: "description",
				Required:    true,
			},
			proto: &storagepb.TableFieldSchema{
				Name:        "name",
				Type:        storagepb.TableFieldSchema_JSON,
				Description: "description",
				Mode:        storagepb.TableFieldSchema_REQUIRED,
			},
		},
		{
			desc: "range type",
			bq: &bigquery.FieldSchema{
				Name:        "name",
				Type:        bigquery.RangeFieldType,
				Description: "description",
				Required:    true,
				RangeElementType: &bigquery.RangeElementType{
					Type: bigquery.TimestampFieldType,
				},
			},
			proto: &storagepb.TableFieldSchema{
				Name:        "name",
				Type:        storagepb.TableFieldSchema_RANGE,
				Description: "description",
				Mode:        storagepb.TableFieldSchema_REQUIRED,
				RangeElementType: &storagepb.TableFieldSchema_FieldElementType{
					Type: storagepb.TableFieldSchema_TIMESTAMP,
				},
			},
		},
	}

	for _, tc := range testCases {
		// first, bq to proto
		converted, err := bqFieldToProto(tc.bq)
		if err != nil {
			t.Errorf("case (%s) failed conversion from bq: %v", tc.desc, err)
		}
		if diff := cmp.Diff(converted, tc.proto, protocmp.Transform()); diff != "" {
			t.Errorf("conversion to proto diff (%s):\n%v", tc.desc, diff)
		}
		// reverse conversion, proto to bq
		reverse, err := protoToBQField(tc.proto)
		if err != nil {
			t.Errorf("case (%s) failed conversion from proto: %v", tc.desc, err)
		}
		if diff := cmp.Diff(reverse, tc.bq); diff != "" {
			t.Errorf("conversion to BQ diff (%s):\n%v", tc.desc, diff)
		}
	}
}

func TestSchemaConversion(t *testing.T) {

	testCases := []struct {
		description   string
		bqSchema      bigquery.Schema
		storageSchema *storagepb.TableSchema
	}{
		{
			description:   "nil",
			bqSchema:      nil,
			storageSchema: nil,
		},
		{
			description: "scalars",
			bqSchema: bigquery.Schema{
				{Name: "f1", Type: bigquery.StringFieldType},
				{Name: "f2", Type: bigquery.IntegerFieldType},
				{Name: "f3", Type: bigquery.BooleanFieldType},
			},
			storageSchema: &storagepb.TableSchema{
				Fields: []*storagepb.TableFieldSchema{
					{Name: "f1", Type: storagepb.TableFieldSchema_STRING, Mode: storagepb.TableFieldSchema_NULLABLE},
					{Name: "f2", Type: storagepb.TableFieldSchema_INT64, Mode: storagepb.TableFieldSchema_NULLABLE},
					{Name: "f3", Type: storagepb.TableFieldSchema_BOOL, Mode: storagepb.TableFieldSchema_NULLABLE},
				},
			},
		},
		{
			description: "array",
			bqSchema: bigquery.Schema{
				{Name: "arr", Type: bigquery.NumericFieldType, Repeated: true},
				{Name: "big", Type: bigquery.BigNumericFieldType, Required: true},
			},
			storageSchema: &storagepb.TableSchema{
				Fields: []*storagepb.TableFieldSchema{
					{Name: "arr", Type: storagepb.TableF


lContent.scrolling div.panelHeader{padding-right:13px}tr td.infoPanelLabel{}.infoPanelImagePreview{width:100%;text-align:center;padding:10px 0}.infoPanelImagePreview img{}div.double div.infoPanelAllMetadata>div{float:left;margin:1%;width:48%}div.triple div.infoPanelAllMetadata>div{float:left;margin:1%;width:31%}#browser{clear:left;background-color:#fff;line-height:18px}div.selectable_div,.table_rows_container,#tree_container,#bottomSplitPane,.ajxp_simple_container{font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:12px}.table_rows_container td{border:0}.table_rows_container tr:nth-child(even)>td{border-top:0;border-bottom:0}.table_rows_container tr:first-child td,.infoPanelTable tr:first-child td{border-top:0}.table_rows_container tr:last-child td{border-bottom:0}.infoPanelTable tr:last-child td{border-bottom:0}.table_rows_container tr.selected-focus td,.infoPanelTable tr.selected-focus td{}.table_rows_container tr:hover,.table_rows_container tr.even:hover{background-color:rgb(253,252,228)}.no_select_bg::selection{background:transparent}.no_select_bg::-moz-selection{background:transparent}#vertical_splitter{overflow:hidden}#sidebar_splitter{overflow:auto;width:200px;background-color:#D2DFE9;-webkit-box-shadow:rgb(153,153,153)1px 1px 5px inset;-moz-box-shadow:rgb(153,153,153)1px 1px 5px inset;box-shadow:rgb(153,153,153)1px 1px 5px inset}.splitterContentPane{border:1px solid #676965}.vsplitbar{width:3px;z-index:10}.vsplitbar:hover{background-image:url(../images/vgrabber.gif);background-repeat:no-repeat;background-position:center;background-color:#474E50}.vsplitbar.active{background-color:#474E50}.hsplitbar.folded,.vsplitbar.folded{opacity:0;cursor:default!important}.vsplitbar:hover{}.hsplitbar{height:4px;background-image:url(../images/hgrabber.gif);background-repeat:no-repeat;background-position:center}.hsplitbar.active{background-color:#474E50}.hsplitbar:hover{}#splashScreen{width:430px;height:332px}#docFileIframe{border-bottom:1px solid #AAAAAA;height:300px;left:0;position:relative;top:0;width:100%}#adminIFrame{border:1px solid white;width:641px;height:390px;background-color:#fff}#users_list,#repo_list{height:299px;width:200px;float:left;padding-top:5px;overflow:auto}#users_detail_panel,#repo_detail_panel{width:438px;height:299px;float:left;border-left:1px solid #bbb;overflow:auto}#repo_list{height:294px}#repo_detail_panel fieldset{margin:10px;font-size:13px}.metaPane{margin-bottom:5px;margin-top:2px;padding:6px 5px 8px;width:96%}.metaPane img,img.metaPaneTitle{float:right;cursor:pointer;margin-left:3px}img.metaPaneTitle{display:none}div.accordion_toggle_active img.metaPaneTitle{display:inline}.metaPane span.title{font-weight:bold}.users_list_title{font-size:20px;font-weight:bold;color:white;padding-left:5px;border-bottom:1px solid white;background


30\003 \001(\010\022\024" +
      "\n\014rand_task_id\030\006 \001(\r\0226\n\006reason\030\r \001(\0162&.R" +
      "emoveRandTaskInfoNotify.FinishReason\"@\n\014" +
      "FinishReason\022\013\n\007DEFAULT\020\000\022\t\n\005CLEAR\020\001\022\014\n\010" +
      "DISTANCE\020\002\022\n\n\006FINISH\020\003B\033\n\031emu.grasscutte" +
      "r.net.protob\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_RemoveRandTaskInfoNotify_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_RemoveRandTaskInfoNotify_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_RemoveRandTaskInfoNotify_descriptor,
        new java.lang.String[] { "IsSucc", "RandTaskId", "Reason", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: MusicGameSettleRsp.proto

package emu.grasscutter.net.proto;

public final class MusicGameSettleRspOuterClass {
  private MusicGameSettleRspOuterClass() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface MusicGameSettleRspOrBuilder extends
      // @@protoc_insertion_point(interface_extends:MusicGameSettleRsp)
      com.google.protobuf.MessageOrBuilder {

    /**
     * uint64 ugc_guid = 9;
     * @return The ugcGuid.
     */
    long getUgcGuid();

    /**
     * int32 retcode = 12;
     * @return The retcode.
     */
    int getRetcode();

    /**
     * uint32 music_basic_id = 7;
     * @return The musicBasicId.
     */
    int getMusicBasicId();

    /**
     * bool is_unlock_next_level = 3;
     * @return The isUnlockNextLevel.
     */
    boolean getIsUnlockNextLevel();

    /**
     * bool is_new_record = 6;
     * @return The isNewRecord.
     */
    boolean getIsNewRecord();
  }
  /**
   *

   * CmdId: 7327
   * Obf: OEBOBHPHPGI
   *

   *
   * Protobuf type {@code MusicGameSettleRsp}
   */
  public static final class MusicGameSettleRsp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:MusicGameSettleRsp)
      MusicGameSettleRspOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MusicGameSettleRsp.newBuilder() to construct.
    private MusicGameSettleRsp(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MusicGameSettleRsp() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new MusicGameSettleRsp();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MusicGameSettleRsp(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.


encoding: [0xfa,0xac,0xfe,0x7e,0x7f,0x6f,0x35,0x30]

v_log_f16 v5, v1 quad_perm:[3,2,1,0]
// GFX11: encoding: [0xfa,0xae,0x0a,0x7e,0x01,0x1b,0x00,0xff]

v_log_f16 v5, v1 quad_perm:[0,1,2,3]
// GFX11: encoding: [0xfa,0xae,0x0a,0x7e,0x01,0xe4,0x00,0xff]

v_log_f16 v5, v1 row_mirror
// GFX11: encoding: [0xfa,0xae,0x0a,0x7e,0x01,0x40,0x01,0xff]

v_log_f16 v5, v1 row_half_mirror
// GFX11: encoding: [0xfa,0xae,0x0a,0x7e,0x01,0x41,0x01,0xff]

v_log_f16 v5, v1 row_shl:1
// GFX11: encoding: [0xfa,0xae,0x0a,0x7e,0x01,0x01,0x01,0xff]

v_log_f16 v5, v1 row_shl:15
// GFX11: encoding: [0xfa,0xae,0x0a,0x7e,0x01,0x0f,0x01,0xff]

v_log_f16 v5, v1 row_shr:1
// GFX11: encoding: [0xfa,0xae,0x0a,0x7e,0x01,0x11,0x01,0xff]

v_log_f16 v5, v1 row_shr:15
// GFX11: encoding: [0xfa,0xae,0x0a,0x7e,0x01,0x1f,0x01,0xff]

v_log_f16 v5, v1 row_ror:1
// GFX11: encoding: [0xfa,0xae,0x0a,0x7e,0x01,0x21,0x01,0xff]

v_log_f16 v5, v1 row_ror:15
// GFX11: encoding: [0xfa,0xae,0x0a,0x7e,0x01,0x2f,0x01,0xff]

v_log_f16 v5, v1 row_share:0 row_mask:0xf bank_mask:0xf
// GFX11: encoding: [0xfa,0xae,0x0a,0x7e,0x01,0x50,0x01,0xff]

v_log_f16 v5, v1 row_share:15 row_mask:0x0 bank_mask:0x1
// GFX11: encoding: [0xfa,0xae,0x0a,0x7e,0x01,0x5f,0x01,0x01]

v_log_f16 v5, v1 row_xmask:0 row_mask:0x1 bank_mask:0x3 bound_ctrl:1 fi:0
// GFX11: encoding: [0xfa,0xae,0x0a,0x7e,0x01,0x60,0x09,0x13]

v_log_f16 v127, -|v127| row_xmask:15 row_mask:0x3 bank_mask:0x0 bound_ctrl:0 fi:1
// GFX11: encoding: [0xfa,0xae,0xfe,0x7e,0x7f,0x6f,0x35,0x30]

v_exp_f16 v5, v1 quad_perm:[3,2,1,


 last encountered "/" and assign it to previousPath.
          // e.g originalPath: /aa/bbb/cc, path: bb/cc
          // outstanding path: /bbb/cc
          let pathDiff = originalPath.slice(0, originalPathLength - pathLen);
          previousPath = pathDiff.slice(pathDiff.lastIndexOf('/') + 1, pathDiff.length) + path;
        }
        idxInOriginalPath = idxInOriginalPath - (previousPath.length - path.length);
        path = previousPath;
        pathLen = previousPath.length;
        len = prefixLen;
      }

      let kind = node.kind;

      // static route
      if (kind === NODE_TYPES.STATIC) {
        // if exist, save the wildcard child
        if (currentNode.wildcardChild !== null) {
          wildcardNode = currentNode.wildcardChild;
          pathLenWildcard = pathLen;
        }
        currentNode = node;
        continue;
      }

      if (len !== prefixLen) {
        return getWildcardNode(wildcardNode, originalPath, pathLenWildcard);
      }

      // if exist, save the wildcard child
      if (currentNode.wildcardChild !== null) {
        wildcardNode = currentNode.wildcardChild;
        pathLenWildcard = pathLen;
      }

      // parametric route
      if (kind === NODE_TYPES.PARAM) {
        currentNode = node;
        i = path.indexOf('/');
        if (i === -1) i = pathLen;
        if (i > maxParamLength) return null;
        decoded = fastDecode(originalPath.slice(idxInOriginalPath, idxInOriginalPath + i));
        if (decoded === null) return null;
        params[pindex++] = decoded;
        path = path.slice(i);
        idxInOriginalPath += i;
        continue;
      }

      // wildcard route
      if (kind === NODE_TYPES.MATCH_ALL) {
        decoded = fastDecode(originalPath.slice(idxInOriginalPath));
        if (decoded === null) return null;
        params[pindex] = decoded;
        currentNode = node;
        path = '';
        continue;
      }

      // parametric(regex) route
      if (kind === NODE_TYPES.REGEX) {
        currentNode = node;
        i = path.indexOf('/');
        if (i === -1) i = pathLen;
        if (i > maxParamLength) return null;
        decoded = fastDecode(originalPath.slice(idxInOriginalPath, idxInOriginalPath + i));
        if (decoded === null) return null;
        if (!node.regex.test(decoded)) return null;
        params[pindex++] = decoded;
        path = path.slice(i);
        idxInOriginalPath += i;
        continue;
      }

      // multiparametric route
      if (kind === NODE_TYPES.MULTI_PARAM) {
        currentNode = node;
        i = 0;
        if (node.regex !== null) {
          let matchedParameter = path.match(node.regex);
          if (matchedParameter === null) return null;
          i = matchedParameter[1].length;
        } else {
          while (i < pathLen && path.charCodeAt(i) !== 47 && path.charCodeAt(i) !== 45) i++;
          if (i > maxParamLength) return null;
        }
        decoded = fastDecode(originalPath.slice(idxInOriginalPath, idxInOriginalPath + i));
        if (decoded === null) return null;
        params[pindex++] = decoded;
        path = path.slice(i);
        idxInOriginalPath += i;
        continue;
      }

      wildcardNode = null;
    }
  }
}

function sanitizeUrl (url: string) {
  for (let i = 0, len = url.length; i < len; i++) {
    let charCode = url.charCodeAt(i)
    // Some systems do not follow


/*
 *  Code128Reader.h
 *  ZXing
 *
 *  Created by Lukasz Warchol on 10-01-15.
 *  Copyright 2010 ZXing authors All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include <zxing/oned/OneDReader.h>
#include <zxing/common/BitArray.h>
#include <zxing/Result.h>

namespace zxing {
	namespace oned {
		class Code128Reader : public OneDReader {

		private:
			static const unsigned int MAX_AVG_VARIANCE = (unsigned int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.25f);
			static const int MAX_INDIVIDUAL_VARIANCE = (int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.7f);

			static const int CODE_SHIFT = 98;

			static const int CODE_CODE_C = 99;
			static const int CODE_CODE_B = 100;
			static const int CODE_CODE_A = 101;

			static const int CODE_FNC_1 = 102;
			static const int CODE_FNC_2 = 97;
			static const int CODE_FNC_3 = 96;
			static const int CODE_FNC_4_A = 101;
			static const int CODE_FNC_4_B = 100;

			static const int CODE_START_A = 103;
			static const int CODE_START_B = 104;
			static const int CODE_START_C = 105;
			static const int CODE_STOP = 106;

			static int* findStartPattern(Ref<BitArray> row);
			static int decodeCode(Ref<BitArray> row, int counters[], int countersCount, int rowOffset);

			void append(char* s, char c);
		public:
			Ref<Result> decodeRow(int rowNumber, Ref<BitArray> row);
			Code128Reader();
			~Code128Reader();
		};
	}
}


e OMAP2420_CONTROL_PADCONF_USB0_TXEN_OFFSET			0x0f1
#define OMAP2420_CONTROL_PADCONF_USB0_SE0_OFFSET			0x0f2
#define OMAP2420_CONTROL_PADCONF_USB0_DAT_OFFSET			0x0f3
#define OMAP2420_CONTROL_PADCONF_EAC_AC_SCLK_OFFSET			0x0f4
#define OMAP2420_CONTROL_PADCONF_EAC_AC_FS_OFFSET			0x0f5
#define OMAP2420_CONTROL_PADCONF_EAC_AC_DIN_OFFSET			0x0f6
#define OMAP2420_CONTROL_PADCONF_EAC_AC_DOUT_OFFSET			0x0f7
#define OMAP2420_CONTROL_PADCONF_EAC_AC_MCLK_OFFSET			0x0f8
#define OMAP2420_CONTROL_PADCONF_EAC_AC_RST_OFFSET			0x0f9
#define OMAP2420_CONTROL_PADCONF_SYS_NRESPWRON_OFFSET			0x0fa
#define OMAP2420_CONTROL_PADCONF_SYS_NRESWARM_OFFSET			0x0fb
#define OMAP2420_CONTROL_PADCONF_SYS_NIRQ_OFFSET			0x0fc
#define OMAP2420_CONTROL_PADCONF_SYS_NV_OFFSET				0x0fd
#define OMAP2420_CONTROL_PADCONF_GPIO_119_OFFSET			0x0fe
#define OMAP2420_CONTROL_PADCONF_GPIO_120_OFFSET			0x0ff
#define OMAP2420_CONTROL_PADCONF_GPIO_121_OFFSET			0x100
#define OMAP2420_CONTROL_PADCONF_GPIO_122_OFFSET			0x101
#define OMAP2420_CONTROL_PADCONF_SYS_32K_OFFSET				0x102
#define OMAP2420_CONTROL_PADCONF_SYS_XTALIN_OFFSET			0x103
#define OMAP2420_CONTROL_PADCONF_SYS_XTALOUT_OFFSET			0x104
#define OMAP2420_CONTROL_PADCONF_GPIO_36_OFFSET				0x105
#define OMAP2420_CONTROL_PADCONF_SYS_CLKREQ_OFFSET			0x106
#define OMAP2420_CONTROL_PADCONF_SYS_CLKOUT_OFFSET			0x107
#define OMAP2420_CONTROL_PADCONF_GPIO_6_OFFSET				0x108
#define OMAP2420_CONTROL_PADCONF_GPIO_124_OFFSET			0x109
#define OMAP2420_CONTROL_PADCONF_GPIO_125_OFFSET			0x10a
#define OMAP2420_CONTROL_PADCONF_JTAG_EMU1_OFFSET			0x10b
#define OMAP2420_CONTROL_PADCONF_JTAG_EMU0_OFFSET			0x10c
#define OMAP2420_CONTROL_PADCONF_JTAG_NTRST_OFFSET			0x10d
#define OMAP2420_CONTROL_PADCONF_JTAG_TCK_OFFSET			0x10e
#define OMAP2420_CONTROL_PADCONF_JTAG_RTCK_OFFSET			0x10f
#define OMAP2420_CONTROL_PADCONF_JTAG_TMS_OFFSET			0x110
#define OMAP2420_CONTROL_PADCONF_JTAG_TDI_OFFSET			0x111
#define OMAP2420_CONTROL_PADCONF_JTAG_TDO_OFFSET			0x112

#define OMAP2420_CONTROL_PADCONF_MUX_SIZE			\
		(OMAP2420_CONTROL_PADCONF_JTAG_TDO_OFFSET + 0x1)


            ),
          ),
        ),
      ),
    );
  }
}
// Copyright (c) 2024 Intel Corporation
//
// SPDX-License-Identifier: Apache-2.0

import 'package:fluent_ui/fluent_ui.dart';
import 'package:inference/langchain/object_box/embedding_entity.dart';
import 'package:inference/langchain/object_box/object_box.dart';
import 'package:inference/providers/text_inference_provider.dart';
import 'package:inference/widgets/controls/no_outline_button.dart';
import 'package:provider/provider.dart';

class  KnowledgeBaseSelector extends StatefulWidget {
  const KnowledgeBaseSelector({super.key});

  @override
  State<KnowledgeBaseSelector> createState() => _KnowledgeBaseSelectorState();
}

class _KnowledgeBaseSelectorState extends State<KnowledgeBaseSelector> {
  late List<KnowledgeGroup> groups;

  @override
  void initState() {
    super.initState();
    try {
      groups = ObjectBox.instance.store.box<KnowledgeGroup>().getAll();
    } catch (e) {
      groups = [];
    }
  }

  @override
  Widget build(BuildContext context) {
      return Consumer<TextInferenceProvider>(builder: (context, inference, child) {
        return DropDownButton(
          buttonBuilder: (context, callback) {
            return NoOutlineButton(
              onPressed: callback,
              child: Padding(
                padding: const EdgeInsets.all(8.0),
                child: Row(
                  children: [
                    (inference.knowledgeGroup == null
                      ? const Text("Knowledge Base")
                      : Text("Knowledge Base: ${inference.knowledgeGroup!.name}")
                    ),
                    const Padding(
                      padding: EdgeInsets.only(left: 8),
                      child: Icon(FluentIcons.chevron_down, size: 12),
                    ),
                  ],
                ),
              ),
            );
          },
          items: [
            MenuFlyoutItem(text: const Text("None"), onPressed: () {
                inference.knowledgeGroup = null;
            }),
            for (final group in groups)

              MenuFlyoutItem(text: Text(group.name), onPressed: () {
                inference.knowledgeGroup = group;
              })
          ]
        );
      }
    );
    }
}
// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'brand.dart';

// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************

class BrandAdapter extends TypeAdapter<Brand> {
  @override
  final int typeId = 2;

  @override
  Brand read(BinaryReader reader) {
    final numOfFields = reader.readByte();
    final fields = <int, dynamic>{
      for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
    };
    return Brand(
      id: fields[0] as String,
      name: fields[1] as String,
      userId: fields[2] as String,
    );
  }

  @override
  void write(BinaryWriter writer, Brand obj) {
    writer
      ..writeByte(3)
      ..writeByte(0)
      ..write(obj.id)
      ..writeByte(1)
      ..write(obj.name)
      ..writeByte(2)
      ..write(obj.userId);
  }

  @override
  int get hashCode => typeId.hashCode;

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is BrandAdapter &&
          runtimeType == other.runtimeType &&
          typeId == other.typeId;
}
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';

cl


 632px;
	top: 0
}

.plist .smc .style8 .fore5 {
	left: 158px;
	top: 181px
}

.plist .smc .style8 .fore6 {
	left: 316px;
	top: 181px
}

.plist .smc .style8 .fore7 {
	left: 474px;
	top: 181px
}

.plist .smc .style8 .fore8 {
	left: 632px;
	top: 181px
}

.plist .smc .style8 .p-info {
	position: absolute;
	bottom: 10px;
	left: 10px;
	text-align: center;
	font-family: microsoft yahei;
	width: 140px;
	font-size: 13px
}

.plist .smc .style8 .p-info strong {
	display: block;
	font-weight: 400;
	height: 20px;
	overflow: hidden;
	color: #FFF
}

.plist .smc .style8 .p-info em {
	display: block;
	line-height: 20px;
	height: 20px;
	overflow: hidden;
	color: #FFF
}

.plist .smc .style8 .p-info span {
	display: none;
	color: #e4393c
}

.plist .smc .style8 .fore1 .p-info,.plist .smc .style8 .fore2 .p-info {
	bottom: auto;
	top: 20px;
	left: 10px;
	text-align: left
}

.plist .smc .style8 .fore1 .p-info strong,.plist .smc .style8 .fore2 .p-info strong
	{
	font-weight: 700;
	color: #333
}

.plist .smc .style8 .fore1 .p-info em,.plist .smc .style8 .fore2 .p-info em
	{
	color: #666
}

.plist .smc .style8 .fore3 .p-info {
	bottom: auto;
	top: 20px;
	left: 40px;
	text-align: left;
	width: 200px
}

.plist .smc .style8 .fore3 .p-info strong {
	font-weight: 700;
	color: #FFF;
	font-size: 20px;
	line-height: 26px;
	height: 26px
}

.plist .smc .style8 .fore3 .p-info em {
	color: #FFF
}

.plist .smc .style8 li .p-img {
	padding: 0
}

.plist .smc .style8 .fore1 img,.plist .smc .style8 .fore2 img,.plist .smc .style8 .fore4 img,.plist .smc .style8 .fore5 img,.plist .smc .style8 .fore6 img,.plist .smc .style8 .fore7 img,.plist .smc .style8 .fore8 img
	{
	width: 158px;
	height: 181px
}

.plist .smc .style8 .fore3 img {
	width: 474px;
	height: 181px
}

.plist .loading-style1 {
	margin-top: 150px
}

.root61 .plist {
	width: 790px
}

.root61 .plist .slide {
	left: 159px;
	width: 473px
}

.root61 .plist .smt {
	width: 158px
}

.root61 .plist .fore2 .smt {
	left: 158px
}

.root61 .plist .fore3 .smt {
	left: 316px
}

.root61 .plist .fore4 .smt {
	left: 474px
}

.root61 .plist .fore5 .smt {
	left: 632px
}

.root61 .plist .smc {

}

.root61 .plist .smc ul.lh {
	width: 791px
}

.root61 .plist .style1 li {
	wid


/*-----------------------------------------------------------
Control interfaces. Help file:
-----------------------------------------------------------*/

#ifndef __ECOM_CONTROL_LIBRARY_ISEQUENTIALSTREAM_S_H__
#define __ECOM_CONTROL_LIBRARY_ISEQUENTIALSTREAM_S_H__
#ifdef __cplusplus
extern "C" {

#ifndef __ecom_control_library_ISequentialStream_FWD_DEFINED__
#define __ecom_control_library_ISequentialStream_FWD_DEFINED__
namespace ecom_control_library
{
class ISequentialStream;
}
#endif

}
#endif

#include "eif_com.h"

#include "eif_eiffel.h"

#ifdef __cplusplus
extern "C" {
#endif

#ifdef __cplusplus
extern "C" {
#ifndef __ecom_control_library_ISequentialStream_INTERFACE_DEFINED__
#define __ecom_control_library_ISequentialStream_INTERFACE_DEFINED__
namespace ecom_control_library
{
class ISequentialStream : public IUnknown
{
public:
  ISequentialStream () {};
  ~ISequentialStream () {};

  /*-----------------------------------------------------------
  No description available.
  -----------------------------------------------------------*/
  virtual STDMETHODIMP Read(  /* [out] */ UCHAR * pv, /* [in] */ ULONG cb, /* [out] */ ULONG * pcb_read ) = 0;

  /*-----------------------------------------------------------
  No description available.
  -----------------------------------------------------------*/
  virtual STDMETHODIMP Write(  /* [in] */ UCHAR * pv, /* [in] */ ULONG cb, /* [out] */ ULONG * pcb_written ) = 0;

protected:

private:

};
}
#endif
}
#endif

#ifdef __cplusplus
}
#endif

#endif


es
        solid_line1 = rendering.Line((pos_x, pos_y), (neg_x, pos_y))
        solid_line2 = rendering.Line((neg_x, pos_y), (neg_x, neg_y))
        solid_line3 = rendering.Line((neg_x, neg_y), (pos_x, neg_y))
        solid_line4 = rendering.Line((pos_x, pos_y), (pos_x, neg_y))
        lines.extend([solid_line1, solid_line2, solid_line3, solid_line4])

        geom = rendering.Compound(lines)
        xform = rendering.Transform()
        geom.add_attr(xform)
        return geom, xform

    # create receptor field locations in local coordinate frame

    def _make_receptor_locations(self, agent):
        receptor_type = 'polar'
        range_min = 0.05 * 2.0
        range_max = 1.00
        dx = []
        # circular receptive field
        if receptor_type == 'polar':
            for angle in np.linspace(-np.pi, +np.pi, 8, endpoint=False):
                for distance in np.linspace(range_min, range_max, 3):
                    dx.append(distance * np.array([np.cos(angle), np.sin(angle)]))
            # add origin
            dx.append(np.array([0.0, 0.0]))
        # grid receptive field
        if receptor_type == 'grid':
            for x in np.linspace(-range_max, +range_max, 5):
                for y in np.linspace(-range_max, +range_max, 5):
                    dx.append(np.array([x,y]))
        return dx

    def close(self):
        print("Env closed.")

    def save_replay(self):
        print("Saving replay function not implemented.")


DlgOpOther			: "<Άλλα>",
DlgInfoTab			: "Πληροφορίες",
DlgAlertUrl			: "Παρακαλώ εισάγετε URL",

// General Dialogs Labels
DlgGenNotSet		: "<χωρίς>",
DlgGenId			: "Id",
DlgGenLangDir		: "Κατεύθυνση κειμένου",
DlgGenLangDirLtr	: "Αριστερά προς Δεξιά (LTR)",
DlgGenLangDirRtl	: "Δεξιά προς Αριστερά (RTL)",
DlgGenLangCode		: "Κωδικός Γλώσσας",
DlgGenAccessKey		: "Συντόμευση (Access Key)",
DlgGenName			: "Όνομα",
DlgGenTabIndex		: "Tab Index",
DlgGenLongDescr		: "Αναλυτική περιγραφή URL",
DlgGenClass			: "Stylesheet Classes",
DlgGenTitle			: "Συμβουλευτικός τίτλος",
DlgGenContType		: "Συμβουλευτικός τίτλος περιεχομένου",
DlgGenLinkCharset	: "Linked Resource Charset",
DlgGenStyle			: "Στύλ",

// Image Dialog
DlgImgTitle			: "Ιδιότητες Εικόνας",
DlgImgInfoTab		: "Πληροφορίες Εικόνας",
DlgImgBtnUpload		: "Αποστολή στον Διακομιστή",
DlgImgURL			: "URL",
DlgImgUpload		: "Αποστολή",
DlgImgAlt			: "Εναλλακτικό Κείμενο (ALT)",
DlgImgWidth			: "Πλάτος",
DlgImgHeight		: "Ύψος",
DlgImgLockRatio		: "Κλείδωμα Αναλογίας",
DlgBtnResetSize		: "Επαναφορά Αρχικού Μεγέθους",
DlgImgBorder		: "Περιθώριο",
DlgImgHSpace		: "Οριζόντιος Χώρος (HSpace)",
DlgImgVSpace		: "Κάθετος Χώρος (VSpace)",
DlgImgAlign			: "Ευθυγράμμιση (Align)",
DlgImgAlignLeft		: "Αριστερά",
DlgImgAlignAbsBottom: "Απόλυτα Κάτω (Abs Bottom)",
DlgImgAlignAbsMiddle: "Απόλυτα στη Μέση (Abs Middle)",
DlgImgAlignBaseline	: "Γραμμή Βάσης (Baseline)",
DlgImgAlignBottom	: "Κάτω (Bottom)",
DlgImgAlignMiddle	: "Μέση (Middle)",
DlgImgAlignRight	: "Δεξιά (Right)",
DlgImgAlignTextTop	: "Κορυφή Κειμένου (Text Top)",
DlgImgAlignTop		: "Πάνω (Top)",
DlgImgPreview		: "Προεπισκόπιση",
DlgImgAlertUrl		: "Εισάγετε την τοποθεσία (URL) της εικόνας",
DlgImgLinkTab		: "Σύνδεσμος",

// Flash Dialog
DlgFlashTitle		: "Ιδιότητες flash",
DlgFlashChkPlay		: "Αυτόματη έν


ycodes
/* eslint-disable */

/**
 * Convenience method returns corresponding value for given keyName or keyCode.
 *
 * @param {Mixed} keyCode {Number} or keyName {String}
 * @return {Mixed}
 * @api public
 */

function keyCode(searchInput) {
	// Keyboard Events
	if (searchInput && 'object' === typeof searchInput) {
		var hasKeyCode = searchInput.which || searchInput.keyCode || searchInput.charCode
		if (hasKeyCode) searchInput = hasKeyCode
	}

	// Numbers
	if ('number' === typeof searchInput) return names[searchInput]

	// Everything else (cast to string)
	var search = String(searchInput)

	// check codes
	var foundNamedKey = codes[search.toLowerCase()]
	if (foundNamedKey) return foundNamedKey

	// check aliases
	var foundNamedKey = aliases[search.toLowerCase()]
	if (foundNamedKey) return foundNamedKey

	// weird character?
	if (search.length === 1) return search.charCodeAt(0)

	return undefined
}

/**
 * Compares a keyboard event with a given keyCode or keyName.
 *
 * @param {Event} event Keyboard event that should be tested
 * @param {Mixed} keyCode {Number} or keyName {String}
 * @return {Boolean}
 * @api public
 */
keyCode.isEventKey = function isEventKey(event, nameOrCode) {
	if (event && 'object' === typeof event) {
		var keyCode = event.which || event.keyCode || event.charCode
		if (keyCode === null || keyCode === undefined) { return false; }
		if (typeof nameOrCode === 'string') {
			// check codes
			var foundNamedKey = codes[nameOrCode.toLowerCase()]
			if (foundNamedKey) { return foundNamedKey === keyCode; }

			// check aliases
			var foundNamedKey = aliases[nameOrCode.toLowerCase()]
			if (foundNamedKey) { return foundNamedKey === keyCode; }
		} else if (typeof nameOrCode === 'number') {
			return nameOrCode === keyCode;
		}
		return false;
	}
}

exports = module.exports = keyCode;

/**
 * Get by name
 *
 *   exports.code['enter'] // => 13
 */

var codes = exports.code = exports.codes = {
	'backspace': 8,
	'tab': 9,
	'enter': 13,
	'shift': 16,
	'ctrl': 17,
	'alt': 18,
	'pause/break': 19,
	'capslock': 20,
	'esc': 27,
	'space': 32,
	'pageup': 33,
	'pagedown': 34,
	'end': 35,
	'home': 36,
	'left': 37,
	'up': 38,
	'right': 39,
	'down': 40,
	'insert': 45,
	'delete': 46,
	'command': [91, 93],
	'nummult': 106,
	'numadd': 107,
	'numsub': 109,
	'numdec': 110,
	'numdiv': 111,
	'numlock': 144,
	'scrolllock': 145,
	';': 186,
	'=': 187,
	',': 188,
	'-': 189,
	'.': 190,
	'/': 191,
	'`': 192,
	'[': 219,
	'\\': 220,
	']': 221,
	"'": 222
}

// Helper aliases

var aliases = exports.aliases = {
	'windows': 91,
	'⇧': 16,
	'⌥': 18,
	'⌃': 17,
	'⌘': 91,
	'ctl': 17,
	'control': 17,
	'option': 18,
	'pause': 19,
	'break': 19,
	'caps': 20,
	'return': 13,
	'escape': 27,
	'spc': 32,
	'spacebar': 32,
	'pgup': 33,
	'pgdn': 34,
	'ins': 45,
	'del': 46,
	'cmd': 91
}

/*!
 * Programatically add the following
 */

// lower case


 24"><g fill="currentColor" fill-rule="evenodd"><path d="M0 0h24v24H0z"/><path d="M12 4c.855 0 1.732.022 2.582.058l1.004.048.961.057.9.061.822.064a3.802 3.802 0 013.494 3.423l.04.425.075.91c.07.943.122 1.971.122 2.954 0 .983-.052 2.011-.122 2.954l-.075.91c-.013.146-.026.287-.04.425a3.802 3.802 0 01-3.495 3.423l-.82.063-.9.062-.962.057-1.004.048A61.59 61.59 0 0112 20a61.59 61.59 0 01-2.582-.058l-1.004-.048-.961-.057-.9-.062-.822-.063a3.802 3.802 0 01-3.494-3.423l-.04-.425-.075-.91A40.662 40.662 0 012 12c0-.983.052-2.011.122-2.954l.075-.91c.013-.146.026-.287.04-.425A3.802 3.802 0 015.73 4.288l.821-.064.9-.061.962-.057 1.004-.048A61.676 61.676 0 0112 4Zm-2 5.575v4.85c0 .462.5.75.9.52l4.2-2.425a.6.6 0 000-1.04l-4.2-2.424a.6.6 0 00-.9.52Z"/></g></svg>';
  static const String youtube_line =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><g fill="currentColor"><path d="M0 0h24v24H0z"/><path d="M12 4c.855 0 1.732.022 2.582.058l1.004.048.961.057.9.061.822.064a3.802 3.802 0 013.494 3.423l.04.425.075.91c.07.943.122 1.971.122 2.954 0 .983-.052 2.011-.122 2.954l-.075.91c-.013.146-.026.287-.04.425a3.802 3.802 0 01-3.495 3.423l-.82.063-.9.062-.962.057-1.004.048A61.59 61.59 0 0112 20a61.59 61.59 0 01-2.582-.058l-1.004-.048-.961-.057-.9-.062-.822-.063a3.802 3.802 0 01-3.494-3.423l-.04-.425-.075-.91A40.662 40.662 0 012 12c0-.983.052-2.011.122-2.954l.075-.91c.013-.146.026-.287.04-.425A3.802 3.802 0 015.73 4.288l.821-.064.9-.061.962-.057 1.004-.048A61.676 61.676 0 0112 4Zm0 2c-.825 0-1.674.022-2.5.056l-.978.047-.939.055-.882.06-.808.063a1.802 1.802 0 00-1.666 1.623C4.11 9.113 4 10.618 4 12c0 1.382.11 2.887.227 4.096.085.872.777 1.55 1.666 1.623l.808.062.882.06.939.056.978.047c.826.034 1.675.056 2.5.056s1.674-.022 2.5-.056l.978-.047.939-.055.882-.06.808-.063a1.8