gg.essential.elementa.dsl.*
import gg.essential.universal.UMatrixStack
import java.awt.Color

open class UITextInput @JvmOverloads constructor(
    placeholder: String = "",
    shadow: Boolean = true,
    selectionBackgroundColor: Color = Color.WHITE,
    selectionForegroundColor: Color = Color(64, 139, 229),
    allowInactiveSelection: Boolean = false,
    inactiveSelectionBackgroundColor: Color = Color(176, 176, 176),
    inactiveSelectionForegroundColor: Color = Color.WHITE,
    cursorColor: Color = Color.WHITE
) : AbstractTextInput(
    placeholder,
    shadow,
    selectionBackgroundColor,
    selectionForegroundColor,
    allowInactiveSelection,
    inactiveSelectionBackgroundColor,
    inactiveSelectionForegroundColor,
    cursorColor = Color.WHITE
) {
    protected var minWidth: WidthConstraint? = null
    protected var maxWidth: WidthConstraint? = null

    protected val placeholderWidth = placeholder.width()

    fun setMinWidth(constraint: WidthConstraint) = apply {
        minWidth = constraint
    }

    fun setMaxWidth(constraint: WidthConstraint) = apply {
        maxWidth = constraint
    }

    override fun getText() = textualLines.first().text

    protected open fun getTextForRender(): String = getText()

    protected open fun setCursorPos() {
        cursorComponent.unhide()
        val (cursorPosX, _) = cursor.toScreenPos()
        cursorComponent.setX((cursorPosX).pixels())
    }

    override fun textToLines(text: String): List<String> {
        return listOf(text.replace('\n', ' '))
    }

    override fun scrollIntoView(pos: LinePosition) {
        val column = pos.column
        val lineText = getTextForRender()
        if (column < 0 || column > lineText.length)
            return

        val widthBeforePosition = lineText.substring(0, column).width(getTextScale())

        when {
            getTextForRender().width(getTextScale()) < getWidth() -> {
                horizontalScrollingOffset = 0f
            }
            horizontalScrollingOffset > widthBeforePosition -> {
                horizontalScrollingOffset = widthBeforePosition
            }
            widthBeforePosition - horizontalScrollingOffset > getWidth() -> {
                horizontalScrollingOffset = widthBeforePosition - getWidth()
            }
        }
    }

    override fun screenPosToVisualPos(x: Float, y: Float): LinePosition {
        val targetXPos = x + horizontalScrollingOffset
        var currentX = 0f

        val line = getTextForRender()

        for (i in line.indices) {
            val charWidth = line[i].width(getTextScale())
            if (currentX + (charWidth / 2) >= targetXPos) return LinePosition(0, i, isVisual = true)
            currentX += charWidth
        }

        return LinePosition(0, line.length, isVisual = true)
    }

    override fun recalculateDimensions() {
        if (minWidth != null && maxWidth != null) {
            val width = if (!hasText() && !this.active) {
                placeholderWidth
            } else {
                getTextForRender().width(getTextScale()) + 1 /* cursor */
            }
            setWidth(width.pixels().coerceIn(minWidth!!, maxWidth!!))
        }
    }

    override fun splitTextForWrapping(text: String, maxLineWidth: Float): List<String> {
        return listOf(text)
    }

    override fun onEnterPressed() {
        activateAction(getText())
    }

    override fun draw(matrixStack: UMatrixStack) {


   `}`,
                    `return ${LuaKeywords.EXPORT_LOCAL_NAME}`
                ]
            }
        ]);
    }

    @test "Variable export"() {

        this.runCodeAndExpectResult("lua", [
            {
                code: `export const a: string = "test"; export let b = "test2"; const c = "test3";`,
                expected: [
                    `local a = "test"`,
                    `local b = "test2"`,
                    `local c = "test3"`,
                    `local ${LuaKeywords.EXPORT_LOCAL_NAME} = {`,
                    `  a = a,`,
                    `  b = b`,
                    `}`,
                    `return ${LuaKeywords.EXPORT_LOCAL_NAME}`
                ]
            }
        ]);
    }

    @test "Class export"() {

        this.runCodeAndExpectResult("lua", [
            {
                code: `export class A {}`,
                expected: [
                    `local A = {}`,
                    `A.__index = A`,
                    `function A.${LuaKeywords.CLASS_NEW_FUNCTION_NAME}(self, ...)`,
                    `  local ${LuaKeywords.CLASS_INSTANCE_LOCAL_NAME} = setmetatable({}, A)`,
                    `  if self and A.${LuaKeywords.CLASS_PREPARE_NON_STATIC} then`,
                    `    A.${LuaKeywords.CLASS_PREPARE_NON_STATIC}(${LuaKeywords.CLASS_INSTANCE_LOCAL_NAME})`,
                    `  end`,
                    `  if self and A.${LuaKeywords.CLASS_INIT_FUNCTION_NAME} then`,
                    `    A.${LuaKeywords.CLASS_INIT_FUNCTION_NAME}(${LuaKeywords.CLASS_INSTANCE_LOCAL_NAME}, ...)`,
                    `  end`,
                    `  return ${LuaKeywords.CLASS_INSTANCE_LOCAL_NAME}`,
                    `end`,
                    `function A.${LuaKeywords.CLASS_INIT_FUNCTION_NAME}(self)`,
                    `end`,
                    `local ${LuaKeywords.EXPORT_LOCAL_NAME} = {`,
                    `  A = A`,
                    `}`,
                    `return ${LuaKeywords.EXPORT_LOCAL_NAME}`
                ]
            }
        ])
    }

    @test "Enum export"() {

        this.runCodeAndExpectResult("lua", [{
            code: `export enum Test { A, B }`,
            expected: [
                `local Test = {`,
                `  A = 1,`,
                `  B = 2`,
                `}`,
                `local ${LuaKeywords.EXPORT_LOCAL_NAME} = {`,
                `  Test = Test`,
                `}`,
                `return ${LuaKeywords.EXPORT_LOCAL_NAME}`
            ]
        }]);
    }
}import { parse } from 'acorn'
import { generate } from 'astring'
import { Program } from 'estree'

/**
 * Makes code fully async by converting all functions to
 * async, and making all function calls awaited.
 * @param code The code to convert
 */
const asyncify = code => {
  const ast = parse(code, {
    ranges: false,
    ecmaVersion: 8
  })
  iterate(ast)

  return generate(ast)
}

const fix = (node, circular: any[]) => {
  // Make all functions Async
  if (node.async === false) node.async = true

  // Make all call expressions awaited
  if (node.type === 'CallExpression' && !node.argument) {
    node.type = 'AwaitExpression'
    const argument = {
      type: 'CallExpression',
      arguments: node.arguments,
      callee: node.callee
    }
    circular.push(argument)
    node.argument = argument
  }
}

const iterate = (ast: Program) => {
  let circular = []
  function recurse(obj) {
    for (const property in obj) {
      if (obj.hasOwnProperty(property)) {


ess <= mostFitScore) {
                println("$i, $fitness")
                mostFit = child
                mostFitScore = fitness
            }
            panel.repaint() // must redraw as that's what actually draws to the canvas
            i++
        } while (mostFitScore > 0)
        ImageIO.write(mostFitCanvas, "png", File("/tmp/evolved.png"))
    }

}
package com.pengke.paper.scanner.crop

import android.Manifest
import android.content.Context
import android.content.pm.PackageManager
import android.graphics.Bitmap
import android.os.Environment
import android.os.SystemClock
import android.support.v4.app.ActivityCompat
import android.util.Log
import android.view.View
import android.widget.Toast
import com.pengke.paper.scanner.SourceManager
import com.pengke.paper.scanner.processor.Corners
import com.pengke.paper.scanner.processor.TAG
import com.pengke.paper.scanner.processor.cropPicture
import com.pengke.paper.scanner.processor.enhancePicture
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import org.opencv.android.Utils

import org.opencv.core.Mat
import java.io.File
import java.io.FileOutputStream
import android.provider.MediaStore
import android.content.ContentValues

const val IMAGES_DIR = "smart_scanner"

class CropPresenter(val context: Context, private val iCropView: ICropView.Proxy) {
    private val picture: Mat? = SourceManager.pic

    private val corners: Corners? = SourceManager.corners
    private var croppedPicture: Mat? = null
    private var enhancedPicture: Bitmap? = null
    private var croppedBitmap: Bitmap? = null

    init {
        val bitmap = Bitmap.createBitmap(picture?.width() ?: 1080, picture?.height()
                ?: 1920, Bitmap.Config.ARGB_8888)
        Utils.matToBitmap(picture, bitmap, true)
        iCropView.getPaper().setImageBitmap(bitmap)
        iCropView.getPaperRect().onCorners2Crop(corners, picture?.size())
    }

    fun addImageToGallery(filePath: String, context: Context) {

        val values = ContentValues()

        values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis())
        values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg")
        values.put(MediaStore.MediaColumns.DATA, filePath)

        context.contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values)
    }

    fun crop() {
        if (picture == null) {
            Log.i(TAG, "picture null?")
            return
        }

        if (croppedBitmap != null) {
            Log.i(TAG, "already cropped")
            return
        }

        Observable.create<Mat> {
            it.onNext(cropPicture(picture, iCropView.getPaperRect().getCorners2Crop()))
        }
                .subscribeOn(Schedulers.computation())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe { pc ->
                    Log.i(TAG, "cropped picture: " + pc.toString())
                    croppedPicture = pc
                    croppedBitmap = Bitmap.createBitmap(pc.width(), pc.height(), Bitmap.Config.ARGB_8888)
                    Utils.matToBitmap(pc, croppedBitmap)
                    iCropView.getCroppedPaper().setImageBitmap(croppedBitmap)
                    iCropView.getPaper().visibility = View.GONE
                    iCropView.getPaperRect().visibility = View.GONE
                }
    }

    fun enhance() {
        if (croppedBitmap == null) {
            Log.i(TAG, "picture null?")


78
.global lbl_8059C5FC
lbl_8059C5FC:
	.incbin "baserom.dol", 0x5986FC, 0x14
.global lbl_8059C610
lbl_8059C610:
	.incbin "baserom.dol", 0x598710, 0x118
.global lbl_8059C728
lbl_8059C728:
	.incbin "baserom.dol", 0x598828, 0xC5
.global lbl_8059C7ED
lbl_8059C7ED:
	.incbin "baserom.dol", 0x5988ED, 0x9
.global lbl_8059C7F6
lbl_8059C7F6:
	.incbin "baserom.dol", 0x5988F6, 0x16
.global lbl_8059C80C
lbl_8059C80C:
	.incbin "baserom.dol", 0x59890C, 0x78
.global lbl_8059C884
lbl_8059C884:
	.incbin "baserom.dol", 0x598984, 0x78
.global lbl_8059C8FC
lbl_8059C8FC:
	.incbin "baserom.dol", 0x5989FC, 0x10
.global lbl_8059C90C
lbl_8059C90C:
	.incbin "baserom.dol", 0x598A0C, 0x10
.global lbl_8059C91C
lbl_8059C91C:
	.incbin "baserom.dol", 0x598A1C, 0x10
.global lbl_8059C92C
lbl_8059C92C:
	.incbin "baserom.dol", 0x598A2C, 0x10
.global lbl_8059C93C
lbl_8059C93C:
	.incbin "baserom.dol", 0x598A3C, 0xA
.global lbl_8059C946
lbl_8059C946:
	.incbin "baserom.dol", 0x598A46, 0xB
.global lbl_8059C951
lbl_8059C951:
	.incbin "baserom.dol", 0x598A51, 0x27
.global lbl_8059C978
lbl_8059C978:
	.incbin "baserom.dol", 0x598A78, 0x53
.global lbl_8059C9CB
lbl_8059C9CB:
	.incbin "baserom.dol", 0x598ACB, 0xF
.global lbl_8059C9DA
lbl_8059C9DA:
	.incbin "baserom.dol", 0x598ADA, 0x1F
.global lbl_8059C9F9
lbl_8059C9F9:
	.incbin "baserom.dol", 0x598AF9, 0x38
.global lbl_8059CA31
lbl_8059CA31:
	.incbin "baserom.dol", 0x598B31, 0x3B
.global lbl_8059CA6C
lbl_8059CA6C:
	.incbin "baserom.dol", 0x598B6C, 0xCC
.global lbl_8059CB38
lbl_8059CB38:
	.incbin "baserom.dol", 0x598C38, 0x28
.global lbl_8059CB60
lbl_8059CB60:
	.incbin "baserom.dol", 0x598C60, 0xA0
.global lbl_8059CC00
lbl_8059CC00:
	.incbin "baserom.dol", 0x598D00, 0x10
.global lbl_8059CC10
lbl_8059CC10


f there is teacher model under" + args.teacher_model_path)
    #     exit(0)
    model.to(args.device)
    return model

def main():
    args = get_arguments()
    set_env(args)
    logger.info("training using KD tpye : " + args.KD_type)
    tokenizer, model = load_model(args)
    teacher_model = load_teacher_model(args)

    if args.double_teacher != None:
        double_teacher = load_double_teacher_model(args)
    else:
        double_teacher = None

    basic_format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
    formatter = logging.Formatter(basic_format)
    log_path = os.path.join(args.output_dir, 'log.txt')
    # sh = logging.StreamHandler()
    handler = logging.FileHandler(log_path, 'a', 'utf-8')

    handler.setFormatter(formatter)
    logger.addHandler(handler)
    # logger.addHandler(sh)
    logger.setLevel(logging.INFO if args.local_rank in [-1, 0] else logging.WARN)
    print(logger)

    if args.ts_share_weight:
        if args.teacher_num_hidden_layers == args.student_num_hidden_layers:
            model = teacher_model
        else:
            logger.info("error : The student model and the teacher model must be set at the same num_hidden_layers.")
            exit(0)

    global_step = train(args, double_teacher, teacher_model, model, tokenizer)
    logger.info(" global_step = %s", global_step)

    if args.local_rank != -1:
        dist.barrier()

if __name__ == "__main__":
    main()


IA_MaxPlayerFreq,(600*2/5)<<16
        dc.l	TAG_DONE

ahi_sound0:
        dc.l	AHIST_M8S
ahi_sta	dc.l	0	        ; start
ahi_len	dc.l	-1                ; len

AHI_VOLBOOST:
        dc.l	Ahiet_MasterVolume
AHIBoost
        dc.l	$10000
        dc.l	TAG_DONE

AHI_DSPEFF:
	dc.l    AHIET_DSPECHO    ; ahie_Effect

DSPECHODELAY
	dc.l	0		; ahiede_Delay

DSPECHOFEEDBACK
	dc.l    $8000            ; ahiede_Feedback

DSPECHOMIX
	dc.l    $8000            ; ahiede_Mix

DSPECHOCROSS
	dc.l    $10000           ; ahiede_Cross
	dc.l	TAG_DONE

PlayerFunc:
        blk.b	MLN_SIZE
        dc.l	mmusic
        dc.l	0
        dc.l	0

SoundFunc:
        blk.b	MLN_SIZE
        dc.l	soundfunc2
        dc.l	0
        dc.l	0

;in:
* a0        struct Hook *
* a1        struct AHISoundMessage *
* a2        struct AHIAudioCtrl *

soundfunc2:
	movem.l	d2-d4/a6,-(sp)
	moveq	#0,d0
	move.w	ahism_Channel(a1),d0
	lea	ahi_channels,a0
	lsl.w	#2,d0
	move.w	2(a0,d0.w),d1
	and.w	#$00ff,d1
	move.w	(a0,d0.w),d7
	lsl.l	#4,d1

	lea	ahi_samples,a0
	move.l	(a0,d1.w),d2			;sample start
	cmp.l	#0,Ahi_Sound0
	beq.s	.no16bit_1
	lsr.l	#1,d2
.no16bit_1

	tst.w	NoLoopEnable
	beq.s	.noloop1
	moveq	#0,d3
	bra.s	.noloop2
.noloop1

	add.l	8(a0,d7.w),d2			;repeat start
	move.l	12(a0,d7.w),d3			;repeat length

.noloop2

	moveq	#0,d4				;NOTE: AHISF_IMM *NOT* SET!!
;----------------------------
	lea	LoopTab,a0
	move.w	d7,d1
	moveq	#0,d7
	lsr.w	#4,d1
	btst	#1,(a0,d1.w)
	beq.s	.nopingpong
	moveq	#0,d4
	lea	ahi_channels,a0
	move.b	2(a0,d0.w),d4
	subq.w	#1,d4
	muls	#-1,d4
	move.b	d4,2(a0,d0.w)
	moveq	#1,d7
.nopingpong
;----------------------------

	lsr.l	#2,d0				; chn


) {
      throw err;
    }
  });

  createDirection = flow(function* (
    this: FermentStore,
    direction: INewDirection
  ) {
    try {
      const { data } = yield createDirection(direction);
      this.activeDirections = [...this.activeDirections, data.direction];
      this.directionIndex = this.activeDirections.length - 1;
    } catch (err) {
      throw err;
    }
  });

  updateFerment = flow(function* (
    this: FermentStore,
    ferment: INewFerment | IFerment
  ) {
    try {
      if (this.activeFerment) {
        const { data } = yield updateFerment(this.activeFerment._id, ferment);

        if (data.status === "success") {
          this.activeFerment = data.ferment;

          const index = this.ferments.findIndex(
            (item) => item._id === data.ferment._id
          );
          this.ferments[index] = data.ferment;

          this.showFermentForm = false;
        }
      }
    } catch (err) {
      throw err;
    }
  });

  deleteFerment = flow(function* (this: FermentStore, fermentId: string) {
    try {
      this.ferments = this.ferments.filter(
        (ferment) => ferment._id !== fermentId
      );

      yield deleteFerment(fermentId);
    } catch (err) {
      throw err;
    }
  });

  deleteDirection = flow(function* (this: FermentStore) {
    try {
      const directionId = this.activeDirections[this.directionIndex]._id;
      const directionIndex = this.directionIndex;
      this.directionIndex = 0;

      this.activeDirections.splice(directionIndex, 1);

      yield deleteDirection(directionId);
    } catch (err) {
      throw err;
    }
  });
}
import { assertType, is } from "typescript-is";

export enum ContentRole {
    Author = "AUTHOR",
    Presenter = "PRESENTER",
    Chair = "CHAIR",
}

export enum ContentType_Enum {
    /** Abstract Markdown text. */
    Abstract = "ABSTRACT",
    /** List of content groups in the system. */
    ContentGroupList = "CONTENT_GROUP_LIST",
    /** File for an image (stored by Clowdr). */
    ImageFile = "IMAGE_FILE",
    /** URL to an image (embedded in Clowdr UI). */
    ImageUrl = "IMAGE_URL",
    /** A generic URL. */
    Link = "LINK",
    /** A URL for a link button. */
    LinkButton = "LINK_BUTTON",
    /** File for a paper (stored by Clowdr). */
    PaperFile = "PAPER_FILE",
    /** Link for a paper (preview is not embedded in Clowdr UI). */
    PaperLink = "PAPER_LINK",
    /** URL to a paper (preview may be embedded in Clowdr UI e.g. PDF JS viewer). */
    PaperUrl = "PAPER_URL",
    /** File for a poster image (stored by Clowdr). */
    PosterFile = "POSTER_FILE",
    /** URL to a poster image (embedded in Clowdr UI). */
    PosterUrl = "POSTER_URL",
    /** General-purpose Markdown text. */
    Text = "TEXT",
    /** Video file to be broadcast. */
    VideoBroadcast = "VIDEO_BROADCAST",
    /** Video file for counting down to a transition in a broadcast. */
    VideoCountdown = "VIDEO_COUNTDOWN",
    /** File for a video (stored by Clowdr). */
    VideoFile = "VIDEO_FILE",
    /** Video file for filler loop between events/during breaks in a broadcast. */
    VideoFiller = "VIDEO_FILLER",
    /** Link to a video (video is not embedded in Clowdr


});

            modelBuilder.Entity("ErsatzTV.Core.Domain.Episode", b =>
                {
                    b.Navigation("EpisodeMetadata");

                    b.Navigation("MediaVersions");
                });

            modelBuilder.Entity("ErsatzTV.Core.Domain.Movie", b =>
                {
                    b.Navigation("MediaVersions");

                    b.Navigation("MovieMetadata");
                });

            modelBuilder.Entity("ErsatzTV.Core.Domain.MusicVideo", b =>
                {
                    b.Navigation("MediaVersions");

                    b.Navigation("MusicVideoMetadata");
                });

            modelBuilder.Entity("ErsatzTV.Core.Domain.OtherVideo", b =>
                {
                    b.Navigation("MediaVersions");

                    b.Navigation("OtherVideoMetadata");
                });

            modelBuilder.Entity("ErsatzTV.Core.Domain.Season", b =>
                {
                    b.Navigation("Episode


><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></msup><mo>=</mo><mrow><mo fence="true">[</mo><mtable><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msubsup><mi>x</mi><mn>0</mn><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></msubsup></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msubsup><mi>x</mi><mn>1</mn><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></msubsup></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msubsup><mi>x</mi><mn>2</mn><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></msubsup></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi mathvariant="normal">.</mi></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi mathvariant="normal">.</mi></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><mi mathvariant="normal">.</mi></mstyle></mtd></mtr><mtr><mtd><mstyle scriptlevel="0" displaystyle="false"><msubsup><mi>x</mi><mi>n</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></msubsup></mstyle></mtd></mtr></mtable><mo fence="true">]</mo></mrow><mo>∈</mo><msup><mi mathvariant="normal">ℜ</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msup></mrow><annotation encoding="application/x-tex">x^{(i)} = \begin{bmatrix}x_0^{(i)}\\x_1^{(i)}\\x_2^{(i)}\\.\\.\\.\\x_n^{(i)}\end{bmatrix} \in \Re^{n+1}</annotation></semantics></math>x(i)=⎣</span


he text to the clipboard.

Когда Я подключаю уже запущенный клиент тестирования с параметрами:
    | 'Имя'             | 'Синоним'        | 'Порт' | 'Строка соединения'                     | 'Логин' | 'Пароль' | 'Запускаемая обработка' |  'Дополнительные параметры строки запуска'  |
    | 'ИмяПрофиля'      | 'СинонимПрофиля' | '1538' | 'Srvr="localhost:1941";Ref="Test";' | 'Админ' | 'Админ'  | 'c:\СуперОбработка.epf' |  '/UC'                                      |
Подключает запущенный ранее клиент тестирования, который мог быть запущен из другой программы. Если сеанс не найден - выдаёт исключение.
When I connect already started TestClient with parameters

    | "Name"        | "Synonym"        | "Port" | "Connection string"                   | "Login" | "Password" | "Client type" | "Computer name" | "Processor to launch"   | "Connection string additional parameters" |

    | "ProfileName" | "ProfileSynonym" | "1538" | "Srvr="localhost:1941"; Ref= "Test";" | "Admin" | "Admin"    | "Thin"        | "MyServer"      | "c:\SuperProcessor.epf" | "/UC"                                     |
Connect previously started test client, wich could be launched from another application. Raises an exception If the session is not found.

Тогда значение поля "%1 Заголовок поля" не содержит текст "%2 Подстрока"
Проверка, что значение поля формы не содержит текст
Then "%1 FieldName" field value does not contain "%2 Substring" text
Checks is form field value contains text

Тогда значение поля с именем '%1 ИмяПоля' не содержит текст "%2 Подстрока"
Проверка, что значение поля формы не содержит текст
Then the field named "%1 FieldName" value does not contain "%2 Substring" text
Checks is form field value contains text

Тогда я удаляю файл "%1 ИмяФайла"
Удаляет файл.
Then I delete "%1 Filename" file
<


ground:new 0 0 24 24;' xml:space='preserve'%3E%3Cg%3E%3Cpath d='M8,18c-0.6,0-1,0.2-1.4,0.6S6,19.4,6,20s0.2,1.1,0.6,1.4S7.4,22,8,22s1-0.2,1.4-0.6S10,20.6,10,20s-0.2-1-0.6-1.4 S8.6,18,8,18z'/%3E%3Cpath d='M18,18c-0.6,0-1.1,0.2-1.5,0.6S16,19.4,16,20s0.2,1.1,0.6,1.4S17.4,22,18,22s1.1-0.2,1.4-0.6S20,20.6,20,20s-0.2-1-0.6-1.4 S18.6,18,18,18z'/%3E%3Cpath d='M21.8,6.4C21.6,6.2,21.3,6,21,6H10v2h9.6l-2.3,6H8.8L6,2.8C5.9,2.3,5.5,2,5,2H2v2h2.2L7,15.3C7.1,15.7,7.5,16,8,16h10 c0.4,0,0.8-0.3,0.9-0.6l3-8C22.1,7.1,22,6.7,21.8,6.4z'/%3E%3C/g%3E%3C/svg%3E");
}

	.preloader .skeleton .widget:before {
	background-image: linear-gradient(#e8f0f4 20px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0);
	}
	.preloader .skeleton .portfolio-item:before {
	background-image: linear-gradient(#e8f0f4 100%, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0);
	}
	.preloader .skeleton .caption-position-image .products-category-item:before {
	background-image: linear-gradient(#e8f0f4 100%, transparent 0);
	}
	.preloader .skeleton .caption-position-below .products-category-item:before {
	background-image: linear-gradient(#e8f0f4 100%, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0), linear-gradient(#e8f0f4 12px, transparent 0);
	}

:root {
    --


ts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}
*/

/* TODO: should this be .trendArrow || (.trendArrow > div) */
.arrow {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* TODO: should this be .trendArrow || (.trendArrow > div) */
.arrow {
  font-size: 25px;
}

.arrow.up:before {
  content: "\f01b";
}

.arrow.down:before {
  content: "\f01a";
}

.arrow.neutral:before {
  content: "\f10c";
}

.arrow.up.good {
  color: #457313;
}

.arrow.down.good {
  color: #ef2e2e;
}

.arrow.up.bad {
  color: #ef2e2e;
}

.arrow.down.bad {
  color: #457313;
}
/*!
 * Copyright 2002 - 2017 Webdetails, a Hitachi Vantara company. All rights reserved.
 *
 * This software was developed by Webdetails and is provided under the terms
 * of the Mozilla Public License, Version 2.0, or any later version. You may not use
 * this file except in compliance with the license. If you need a copy of the license,
 * please go to http://mozilla.org/MPL/2.0/. The Initial Developer is Webdetails.
 *
 * Software distributed under the Mozilla Public License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. Please refer to
 * the license for the specific language governing your rights and limitations.
 */

.templateWrapper {
}

/* CARDS */
.templateWrapper .sectionTitle {
  padding: 10px;
  border: 1px solid #4D658D;
  background: #4D658D;
  color: #e5e5e5;
  font-weight: bold;
  text-transform: uppercase;
  border-radius: 4px;
  margin-top: 40px;
  margin-bottom: 10px;
}

.templateWrapper .sectionTitle .description {
  text-transform: none;
  font-weight: normal;
  color: white;
}

.templateWrapperGroups .templateRow {
  width: auto;
}

.templateWrapperGroups .templateRow .groupTitle {
  font-size: 20px;
}

.templateWrapperGroups .templateRow .title {
  font-size: 14px;
}

.templateWrapperGroups .templateRow .title, .templateWrapperGroups .templateRow .value {
  font-size: 14px;
  width: 50%;
  margin: 0;
  padding: 0;
  text-align: left;
  float: left;
}

.templateWrapperGroups .templateRow .title:after {
}

.templateWrapper .templateRow {
  float: left;
  margin: 0.5%;
  padding: 8px;
  background: #e5e5e5;
  width: 10.1%;
  min-width: 115px;
  border: 2px solid transparent;
  border-radius: 10px 0 10px 0;
  box-shadow: 3px 3px 8px 1px rgba(0,0,0,0.17);
  -moz-box-shadow: 3px 3px 8px 1px rgba(0,0,0,0.17);
  -webkit-box-shadow: 3px 3px 8px 1px rgba(0,0,0,0.17);
}

.templateWrapper .templateRow.clickable {
  cursor: pointer;
}

.templateWrapper .templateRow.clickable:hover {
  border: 2px solid rgba(43,75,111,0.8);
  background: #fafafa;
}

.templateWrapper .title {
  font-size: 45px;
  text-


evelop/.screenshots/Forever.png)

### Fox

![FoxTheme](https://raw.githubusercontent.com/Taiizor/ReaLTaiizor/develop/.screenshots/Fox.png)

### Hope

![HopeTheme](https://raw.githubusercontent.com/Taiizor/ReaLTaiizor/develop/.screenshots/Hope.png)

### Lost

![LostTheme](https://raw.githubusercontent.com/Taiizor/ReaLTaiizor/develop/.screenshots/Lost.png)

### Royal

![RoyalTheme](https://raw.githubusercontent.com/Taiizor/ReaLTaiizor/develop/.screenshots/Royal.png)

### Night

![NightTheme](https://raw.githubusercontent.com/Taiizor/ReaLTaiizor/develop/.screenshots/Night.png)# Domcom框架的基本概念和原理
Domcom框架的原理非常简单，一句话就可以说清楚：Domcom部件本身通过其view函数支持以一种js友好的简洁格式（嵌套数组形式）描述React元素，然后利用其React代理部件类ReactProxy在其render方法中将此嵌套数组转换为实际的React元素。如此而已。欲知其详，可以再看看下面对涉及的几个基本概念的进一步解析。

# 基本概念
* **部件**

构成Domcom骨架的最核心概念，是domcom框架用来管理React元素的代理。每个部件都依据一个config对象构造。fonfig对象中只有data和view有特别的作用，最重要的是view成员（可以是实际的view数据，也可以是生成view的函数）。然后通过React部件类ReactProxy生成一个react元素，该React元素挂载时将其中包含的ReactProxy实例指针this提供给Domcom部件的proxy成员字段持有，Domcom利用该实例指针通过update方法管理React元素的Dom更新（通过调用component.proxy.setState方法）和卸妆。

* **ReactProxy**

每个Domcom部件都通过ReactProxy来创建React元素。ReactProxy根据对应Domcom部件的view字段来产生React元素结构。

* **高阶虚拟Dom**

React发明了虚拟Dom的概念和技术，Domcom发扬光大了这一概念和技术。如果说虚拟Dom是以某种js的形式预先声明Dom的层次结构，以便于管理优化。如果我们将原生Dom看作一阶Dom，则React的虚拟Dom可以视作二阶Dom，因为直接用于创建React元素的api非常繁琐、不便于读写。因此出现了jsx这种回归xhtml格式的与js杂交的语法。也可以将jsx视作三阶的高阶虚拟Dom。Domcom所提供的嵌套数组写法不过是另一种三阶虚拟Dom。这种格式的虚拟Dom易于读写，js友好，无需工具链支持，具有很多优点。

以上就已经对Domcom的概念和原理介绍得很清楚完整了。有进一步关心技术细节的同学，完全可以取直接阅读源码。Domcom的源代码非常简单，总计只有七个文件、大约500行代码，比较关键的代码主要在[Component.coffee](https://github.com/taijiweb/domcom/blob/master/src/Component.coffee), [react-proxy.coffee](https://github.com/taijiweb/domcom/blob/master/src/react-proxy.coffee), [dc-util.coffee](https://github.com/taijiweb/domcom/blob/master/src/dc-util.coffee) 这三个文件中，均只有一百多行CoffeeScript，都是非常简明直观的实现，欢迎阅读。# domcom速查表

## 下载

	npm install


al field `selector`
      if (jsonObj.get("selector") != null && !jsonObj.get("selector").isJsonNull()) {
        V1ChallengeSpecSolverSelector.validateJsonObject(jsonObj.getAsJsonObject("selector"));
      }
  }

  public static class CustomTypeAdapterFactory implements TypeAdapterFactory {
    @SuppressWarnings("unchecked")
    @Override
    public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
       if (!V1ClusterIssuerSpecAcmeSolversInner.class.isAssignableFrom(type.getRawType())) {
         return null; // this class only serializes 'V1ClusterIssuerSpecAcmeSolversInner' and its subtypes
       }
       final TypeAdapter<JsonElement> elementAdapter = gson.getAdapter(JsonElement.class);
       final TypeAdapter<V1ClusterIssuerSpecAcmeSolversInner> thisAdapter
                        = gson.getDelegateAdapter(this, TypeToken.get(V1ClusterIssuerSpecAcmeSolversInner.class));

       return (TypeAdapter<T>) new TypeAdapter<V1ClusterIssuerSpecAcmeSolversInner>() {
           @Override
           public void write(JsonWriter out, V1ClusterIssuerSpecAcmeSolversInner value) throws IOException {
             JsonObject obj = thisAdapter.toJsonTree(value).getAsJsonObject();
             elementAdapter.write(out, obj);
           }

           @Override
           public V1ClusterIssuerSpecAcmeSolversInner read(JsonReader in) throws IOException {
             JsonObject jsonObj = elementAdapter.read(in).getAsJsonObject();
             validateJsonObject(jsonObj);
             return thisAdapter.fromJsonTree(jsonObj);
           }

       }.nullSafe();
    }
  }

 /**
  * Create an instance of V1ClusterIssuerSpecAcmeSolversInner given an JSON string
  *
  * @param jsonString JSON string
  * @return An instance of V1ClusterIssuerSpecAcmeSolversInner
  * @throws IOException if the JSON string is invalid with respect to V1ClusterIssuerSpecAcmeSolversInner
  */
  public static V1ClusterIssuerSpecAcmeSolversInner fromJson(String jsonString) throws IOException {
    return JSON.getGson().fromJson(jsonString, V1ClusterIssuerSpecAcmeSolversInner.class);
  }

 /**
  * Convert an instance of V1ClusterIssuerSpecAcmeSolversInner to an JSON string
  *
  * @return JSON string
  */
  public String toJson() {
    return JSON.getGson().toJson(this);
  }
}

/*
 * Kubernetes
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: v1.21.1
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

package io.cert.manager.models;

import java.util.Objects;
import java.util.Arrays;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import io.cert.manager.models.V1ChallengeSpecSolverHttp01IngressPodTemplateSpecAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionInnerPodAffinityTermLabelSelectorMatchExpressionsInner;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserial


models.DescribeIPv6AddressesResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))

    def DescribeIp6Addresses(self, request):
        """本接口（DescribeIp6Addresses）用于查询一个或多个传统弹性公网 IPv6 实例的详细信息。

        :param request: Request instance for DescribeIp6Addresses.
        :type request: :class:`tencentcloud.vpc.v20170312.models.DescribeIp6AddressesRequest`
        :rtype: :class:`tencentcloud.vpc.v20170312.models.DescribeIp6AddressesResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DescribeIp6Addresses", params, headers=headers)
            response = json.loads(body)
            model = models.DescribeIp6AddressesResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))

    def DescribeIp6TranslatorQuota(self, request):
        """查询账户在指定地域IPV6转换实例和规则的配额

        :param request: Request instance for DescribeIp6TranslatorQuota.
        :type request: :class:`tencentcloud.vpc.v20170312.models.DescribeIp6TranslatorQuotaRequest`
        :rtype: :class:`tencentcloud.vpc.v20170312.models.DescribeIp6TranslatorQuotaResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DescribeIp6TranslatorQuota", params, headers=headers)
            response = json.loads(body)
            model = models.DescribeIp6TranslatorQuotaResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))

    def DescribeIp6Translators(self, request):
        """1. 该接口用于查询账户下的IPV6转换实例及其绑定的转换规则信息
        2. 支持过滤查询

        :param request: Request instance for DescribeIp6Translators.
        :type request: :class:`tencentcloud.vpc.v20170312.models.DescribeIp6TranslatorsRequest`
        :rtype: :class:`tencentcloud.vpc.v20170312.models.DescribeIp6TranslatorsResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DescribeIp6Translators", params, headers=headers)
            response = json.loads(body)
            model = models.DescribeIp6TranslatorsResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))

    def DescribeIpGeolocationDatabaseUrl(self, request):
        """本接口（DescribeIpGeolocationDatabaseUrl）用于获取IP地理位置库下载链接。
        本接口即将下线，仅供存量用户使用，暂停新增用户。

        :param request: Request instance for DescribeIpGeolocationDatabaseUrl.
        :type request: :class:`tencentcloud.vpc.v20170312.models.DescribeIpGeolocationDatabaseUrlRequest`
        :rtype: :class:`tencentcloud.vpc.v20170312.models.DescribeIpGeolocationDatabaseUrlResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DescribeIpGeolocationDatabaseUrl", params, headers=headers)
            response = json.loads(body)
            model = models.DescribeIpGeolocationDatabaseUrlResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))

    def DescribeIpGeolocationInfos(self, request):
        """本接口（DescribeIpGeolocationInfos）用于查询IP地址信息，包括地理位置信息和网络信息。
        本接口即将下线，仅供存量客户使用，暂停新增用户。

        :param request: Request instance for DescribeIpGeolocationInfos.
        :type request: :class:`tencentcloud.vpc.v20170312.models.DescribeIpGeolocation


new("library a; using b.c as d; extend enum d.t { x }; bool e;")),
                "",
                Ast {
                    name: make_identifier!["a"],
                    using: vec![Include {
                        name: make_identifier!["b", "c"],
                        alias: Some("d".to_string()),
                    }],
                    declarations: vec![
                        Declaration {
                            identifier: make_identifier!["d", "t"],
                            value_type: ValueType::Enum,
                            extends: true,
                            values: vec![Value::Enum("x".to_string())],
                        },
                        Declaration {
                            identifier: make_identifier!["e"],
                            value_type: ValueType::Bool,
                            extends: false,
                            values: vec![],
                        },
                    ],
                },
            );
        }

        #[test]
        fn consumes_entire_input() {
            // Must parse entire input.
            assert_eq!(
                library(NomSpan::new("library a; using b.c as d; invalid input")),
                Err(nom::Err::Error(BindParserError::Type("invalid input".to_string())))
            );
        }

        #[test]
        fn whitespace() {
            // Handles whitespace.
            assert_eq!(
                library(NomSpan::new(
                    "\n\t library a;\t using b.c as d;\n extend enum d.t { x }; \t bool e;\n "
                ))
                .unwrap()
                .1,
                library(NomSpan::new("library a; using b.c as d; extend enum d.t { x }; bool e;"))
                    .unwrap()
                    .1,
            );
        }
    }
}
//! Simple "curve" like plots

use std::borrow::Cow;
use std::iter::IntoIterator;

use data::Matrix;
use traits::{self, Data};
use {Axes, Color, CurveDefault, Display, Figure, LineType, Plot, PointType, Script};

/// Properties common to simple "curve" like plots
pub struct Properties {
    axes: Option<Axes>,
    color: Option<Color>,
    label: Option<Cow<'static, str>>,
    line_type: LineType,
    linewidth: Option<f64>,
    point_type: Option<PointType>,
    point_size: Option<f64>,
    style: Style,
}

impl Properties {
    /// Select the axes to plot against
    ///
    /// **Note** By default, the `BottomXLeftY` axes are used
    pub fn axes(&mut self, axes: Axes) -> &mut Properties {
        self.axes = Some(axes);
        self
    }

    /// Sets the line color
    pub fn color(&mut self, color: Color) -> &mut Properties {
        self.color = Some(color);
        self
    }

    /// Sets the legend label
    pub fn label<S>(&mut self, label: S) -> &mut Properties
    where
        S: Into<Cow<'static, str>>,
    {
        self.label = Some(label.into());
        self
    }

    /// Changes the line type
    ///
    /// **Note** By default `Solid` lines are used
    pub fn line_type(&mut self, lt: LineType) -> &mut Properties {
        self.line_type = lt;
        self
    }

    /// Changes the width of the line
    ///
    /// # Panics
    ///
    /// Panics if `width` is a non-positive value
    pub fn line_width(&mut self, lw: f64) -> &mut Properties {
        assert!(lw > 0.);

        self.linewidth = Some(lw);
        self
    }

    /// Changes the size of the points
    ///
    /// # Panics
    ///
    /// Panics if `size` is a non-positive value
    pub fn poin


TIME)
            time = MIN_TIME;
        mRreleaseRate = 1.0f / (SynthEngine.FRAME_RATE * time);
    }

    public void on() {
        mSstate = ATTACK;
    }

    public void off() {
        mSstate = RELEASE;
    }

    @Override
    public float render() {
        switch (mSstate) {
        case ATTACK:
            mCurrent += mAttackRate;
            if (mCurrent > 1.0f) {
                mCurrent = 1.0f;
                mSstate = DECAY;
            }
            break;
        case DECAY:
            mCurrent -= mDecayRate;
            if (mCurrent < mSustainLevel) {
                mCurrent = mSustainLevel;
                mSstate = SUSTAIN;
            }
            break;
        case RELEASE:
            mCurrent -= mRreleaseRate;
            if (mCurrent < 0.0f) {
                mCurrent = 0.0f;
                mSstate = FINISHED;
            }
            break;
        }
        return mCurrent;
    }

    public boolean isDone() {
        return mSstate == FINISHED;
    }

}
/*
 * 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.
 */
/*
 * This code was generated by https://github.com/googleapis/google-api-java-client-services/
 * Modify at your own risk.
 */

package com.google.api.services.people.v1;

/**
 * PeopleService request initializer for setting properties like key and userIp.
 *
 *

 * The simplest usage is to use it to set the key parameter:
 *

 *
 *

  public static final GoogleClientRequestInitializer KEY_INITIALIZER =
      new PeopleServiceRequestInitializer(KEY);
 *

 *
 *

 * There is also a constructor to set both the key and userIp parameters:
 *

 *
 *

  public static final GoogleClientRequestInitializer INITIALIZER =
      new PeopleServiceRequestInitializer(KEY, USER_IP);
 *

 *
 *

 * If you want to implement custom logic, extend it like this:
 *

 *
 *

  public static class MyRequestInitializer extends PeopleServiceRequestInitializer {

    {@literal @}Override
    public void initializePeopleServiceRequest(PeopleServiceRequest{@literal <}?{@literal >} request)
        throws IOException {
      // custom logic
    }
  }
 *

 *
 *

 * Finally, to set the key and userIp parameters and insert custom logic, extend it like this:
 *

 *
 *

  public static class MyRequestInitializer2 extends PeopleServiceRequestInitializer {

    public MyKeyRequestInitializer() {
      super(KEY, USER_IP);
    }

    {@literal @}Override
    public void initializePeopleServiceRequest(PeopleServiceRequest{@literal <}?{@literal >} request)
        throws IOException {
      // custom logic
    }
  }
 *

 *
 *

 * Subclasses should be thread-safe.
 *

 *
 * @since 1.12
 */
public class PeopleServiceRequestInitializer extends com.google.api.client.googleapis.services.json.CommonGoogleJsonClientRequestInitializer {

  public PeopleServiceRequestInitializer() {
    super();
  }

  /**
   * @param key API key or {@code null} to leave it unchanged
   */
  public PeopleServiceRequestInitializer(String key) {


# Copyright (c) 2008, Willow Garage, Inc.
# All rights reserved.
#
# Software License Agreement (BSD License 2.0)
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
#  * Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#  * Redistributions in binary form must reproduce the above
#    copyright notice, this list of conditions and the following
#    disclaimer in the documentation and/or other materials provided
#    with the distribution.
#  * Neither the name of the Willow Garage nor the names of its
#    contributors may be used to endorse or promote products derived
#    from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.

import os

from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription

import launch_ros.actions
import launch_ros.descriptions

def generate_launch_description():
    default_rviz = os.path.join(get_package_share_directory('depth_image_proc'),
                                'launch', 'rviz/point_cloud_xyzi.rviz')
    return LaunchDescription([
        # install realsense from https://github.com/intel/ros2_intel_realsense
        launch_ros.actions.Node(
            package='realsense2_camera',
            executable='realsense2_camera_node',
            namespace='',
            parameters=[{'align_depth.enable': True},],
            output='screen'),

        # NOTE: Realsense camera do not support intensity message
        # use color image instead of intensity only for interface test
        launch_ros.actions.ComposableNodeContainer(
            name='container',
            namespace='',
            package='rclcpp_components',
            executable='component_container',
            composable_node_descriptions=[
                # Driver itself
                launch_ros.descriptions.ComposableNode(
                    package='depth_image_proc',
                    plugin='depth_image_proc::PointCloudXyziNode',
                    name='point_cloud_xyzi',
                    remappings=[('depth/image_rect', '/camera/aligned_depth_to_color/image_raw'),
                                ('intensity/image_rect', '/camera/color/image_raw'),
                                ('points', '/camera/depth/points')]
                ),
            ],
            output='screen',
        ),

        # rviz
        launch_ros.actions.Node(
            package='rviz2', executable='rviz2', output='screen',
            arguments=['--display-config', default_rviz]),
    ])


 char *func, char *fmt, ...)		\
{									\
	struct va_format vaf = {					\
		.fmt = fmt,						\
	};								\
	va_list args;							\
									\
	va_start(args, fmt);						\
	vaf.va = &args;							\
	trace_hfi1_ ##lvl(func, &vaf);					\
	va_end(args);							\
	return;								\
}

/*
 * To create a new trace level simply define it below and as a __hfi1_trace_fn
 * in trace.c. This will create all the hooks for calling
 * hfi1_cdbg(LVL, fmt, ...); as well as take care of all
 * the debugfs stuff.
 */
__hfi1_trace_def(PKT);
__hfi1_trace_def(PROC);
__hfi1_trace_def(SDMA);
__hfi1_trace_def(LINKVERB);
__hfi1_trace_def(DEBUG);
__hfi1_trace_def(SNOOP);
__hfi1_trace_def(CNTR);
__hfi1_trace_def(PIO);
__hfi1_trace_def(DC8051);
__hfi1_trace_def(FIRMWARE);
__hfi1_trace_def(RCVCTRL);
__hfi1_trace_def(TID);

#define hfi1_cdbg(which, fmt, ...) \
	__hfi1_trace_##which(__func__, fmt, ##__VA_ARGS__)

#define hfi1_dbg(fmt, ...) \
	hfi1_cdbg(DEBUG, fmt, ##__VA_ARGS__)

/*
 * Define HFI1_EARLY_DBG at compile time or here to enable early trace
 * messages. Do not check in an enablement for this.
 */

#ifdef HFI1_EARLY_DBG
#define hfi1_dbg_early(fmt, ...) \
	trace_printk(fmt, ##__VA_ARGS__)
#else
#define hfi1_dbg_early(fmt, ...)
#endif

#endif /* __HFI1_TRACE_H */

#undef TRACE_INCLUDE_PATH
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_PATH .
#define TRACE_INCLUDE_FILE trace
#include <trace/define_trace.h>


абр', 'нојабр', 'декабр'],
  SHORTMONTHS: ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen',
      'okt', 'noy', 'dek'],
  STANDALONESHORTMONTHS: ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl',
      'avq', 'sen', 'okt', 'noy', 'dek'],
  WEEKDAYS: ['базар', 'базар ертәси',
      'чәршәнбә ахшамы', 'чәршәнбә',
      'ҹүмә ахшамы', 'ҹүмә', 'шәнбә'],
  STANDALONEWEEKDAYS: ['базар', 'базар ертәси',
      'чәршәнбә ахшамы', 'чәршәнбә',
      'ҹүмә ахшамы', 'ҹүмә', 'шәнбә'],
  SHORTWEEKDAYS: ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C', 'Ş.'],
  STANDALONESHORTWEEKDAYS: ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C', 'Ş.'],
  NARROWWEEKDAYS: ['7', '1', '2', '3', '4', '5', '6'],
  STANDALONENARROWWEEKDAYS: ['7', '1', '2', '3', '4', '5', '6'],
  SHORTQUARTERS: ['1-ci kv.', '2-ci kv.', '3-cü kv.', '4-cü kv.'],
  QUARTERS: ['1-ci kvartal', '2-ci kvartal', '3-cü kvartal', '4-cü kvartal'],
  AMPMS: ['AM', 'PM'],
  DATEFORMATS: ['EEEE, d, MMMM, y', 'd MMMM , y', 'd MMM, y', 'yy/MM/dd'],
  TIMEFORMATS: ['HH:mm:ss zzzz', 'HH:mm:ss z', 'HH:mm:ss', 'HH:mm'],
  FIRSTDAYOFWEEK: 6,
  WEEKENDRANGE: [5, 6],
  FIRSTWEEKCUTOFFDAY: 2
};

/**
 * Date/time formatting symbols for locale az_Cyrl_AZ.
 */
goog.i18n.DateTimeSymbols_az_Cyrl_AZ = goog.i18n.DateTimeSymbols_az_Cyrl;

/**
 * Date/time formatting symbols for locale az_IR.
 */
goog.i18n.DateTimeSymbols_az_IR = goog.i18n.DateTimeSymbols_az;

/**
 * Date/time formatting symbols for locale az_Latn.
 */
goog.i18n.DateTimeSymbols_az_Latn = goog.i18n.DateTimeSymbols_az;

/**
 * Date/time formatting symbols for locale az_Latn_AZ.
 */
goog.i18n.DateTimeSymbols_az_Latn_AZ = goog.i18n.DateTimeSymbols_az;

/**
 * Date/time formatting symbols for locale be.
 */
goog.i18n.DateTimeSymbols_be = {
  ERAS: ['да н.э.', 'н.э.'],
  ERANAMES: ['да н.э.', 'н.э.'],
  NARROWMONTHS: ['с', 'л', 'с', 'к', 'т', 'ч', 'л', 'ж', 'в', 'к',
      'л', 'с'],
  STANDALONENARROW


LCgNHyJ9J XI2fn1 7G290F. . R4ZIzQfEnAzJ D0VByEnG CglPh1uCn00 CV8 nIScYKC. . U+HQg jcgt6GW0X YVxccmlMf HAOcTE QJTsFBQ. . 8vGwxuCn 03d19y fn5ZX399 I247MDg1 DCxu. . G0NCcSgdP SInOHIb OXI=

  misters They enforced the necessity. "And who are sportsmen likewise, is not a doubt of his regard for me to feel tries

<q>
 could give more certain intelligence; and told sister of it was that had finished it, performed what concluded to be made for him, at
</q>

ICB KQz0zFi04In gGQCED Ay8Ne3pRaS x1I. . DMKZCIqDA x7ekVpcC IkO19oaS0GDS 1oWHR wITN1Q2QvMw QIPjMXJ3cyMy. . YzKyUnAwRic1 gyJTAi JwoqaR8cD is/UCsvE. . DIBGm1yZh dLa jwNJ zQh Pz0WZC4j Hj8y. . NlAo fnUtIB0w PDQESx MsHSgyf. . T0qPSAaL UNQN3 pYLy I7NS YRKydmDQ4+Hl Bgdy4kN wwxOyhKMj w/G Sx/OS4XHBc. . lb1EWanoePD k2IjsXKmk hDx 8OOwwofzR/ cgM2LDIfGSR 6IT8yNDN6. . EjwMIjkB Y2FYNHd 1MCcW Jz0vBQVqPR 09EH1/cgM. . 2LDIfG SR6HzE SMQU1QzlpZ gweJDkM IDg7djUdM A0+QkIx. . Mx5hdnQhOx YgJjFEDy8xSS Z+LiQ3DDE7KE oMLy48. . YX4oM z4LITJmSA4 9eAVyKnV2N A0qK jIDBCR6Hyw. . jHX57A2 Q/JxhLCDs LLGFh ayknLyw/ OR84 YFoIFR. . YSFz4D AQ8gIAYXNgYH BAQBLB EfET IyEDsaKjMw MDUQLSMtBg. . YkN Qg4JSYiJw4 zMT8QW 3toS31iY2. . FqQW9 me0hH LzQb JjMw bDQNKioyAwQ kcgpgLC. . M3IFg wZSNGCm Y1VCF7O3o RVCd0ZEh HI2dIcjE6JHo. . KeQsnGQ5 8blYWI iEwaichJyUF Dy9yCmBsPGo. . gVig sKA0f ImFRPWoneDE QJTsF. . BQ8vGwxhPn 59e1Qhd DRECCI7Cgo4M TMTDG wgbUFCZj tFO3k2PjM KByYiDyo+chF. . ifHx6PUUwd 3hYRyJ nUHpxI X9uRHA1I1RV. . fnYWdH9k Y3QdbXV6WBc rZEZ/exZrZEt iKGoDGAQ7N mEyfGk8R Qd0cF. . 5RIy k2KBl9N3t


r-64");		break;
    case EF_FRV_FPR_NONE: fprintf (file, " -msoft-float");	break;
    }

  switch (flags & EF_FRV_DWORD_MASK)
    {
    default:							break;
    case EF_FRV_DWORD_YES: fprintf (file, " -mdword");		break;
    case EF_FRV_DWORD_NO:  fprintf (file, " -mno-dword");	break;
    }

  if (flags & EF_FRV_DOUBLE)
    fprintf (file, " -mdouble");

  if (flags & EF_FRV_MEDIA)
    fprintf (file, " -mmedia");

  if (flags & EF_FRV_MULADD)
    fprintf (file, " -mmuladd");

  if (flags & EF_FRV_PIC)
    fprintf (file, " -fpic");

  if (flags & EF_FRV_BIGPIC)
    fprintf (file, " -fPIC");

  if (flags & EF_FRV_NON_PIC_RELOCS)
    fprintf (file, " non-pic relocations");

  if (flags & EF_FRV_G0)
    fprintf (file, " -G0");

  fputc ('\n', file);
  return true;
}

#define ELF_ARCH		bfd_arch_frv
#define ELF_MACHINE_CODE	EM_CYGNUS_FRV
#define ELF_MAXPAGESIZE		0x1000

#define TARGET_BIG_SYM          bfd_elf32_frv_vec
#define TARGET_BIG_NAME		"elf32-frv"

#define elf_info_to_howto_rel			NULL
#define elf_info_to_howto			frv_info_to_howto_rela
#define elf_backend_relocate_section		elf32_frv_relocate_section
#define elf_backend_gc_mark_hook		elf32_frv_gc_mark_hook
#define elf_backend_gc_sweep_hook		elf32_frv_gc_sweep_hook
#define elf_backend_check_relocs                elf32_frv_check_relocs
#define elf_backend_object_p			elf32_frv_object_p
#define elf_backend_add_symbol_hook             elf32_frv_add_symbol_hook

#define elf_backend_can_gc_sections		1
#define elf_backend_rela_normal			1

#define bfd_elf32_bfd_reloc_type_lookup		frv_reloc_type_lookup
#define bfd_elf32_bfd_set_private_flags		frv_elf_set_private_flags
#define bfd_elf32_bfd_copy_private_bfd_data	frv_elf_copy_private_bfd_data
#define bfd_elf32_bfd_merge_private_bfd_data	frv_elf_merge_private_bfd_data
#define bfd_elf32_bfd_print_private_bfd_data	frv_elf_print_private_bfd_data

#include "elf32-target.h"


:focus,.default-according .card .btn-link:hover{text-decoration:none}.default-according .card .card-header{padding:0.75rem 1.25rem;border:1px solid #ecf3fa}.default-according .card .card-header i{position:absolute;left:18px;font-size:20px;top:20px}.default-according .card .card-header h5{margin-top:2px}.default-according .card .card-body{border:1px solid #ecf3fa;border-top:none}.default-according.style-1 button{width:100%;text-align:left}.default-according.style-1 button:before{right:20px;position:absolute;-webkit-transition:0.4s;transition:0.4s;font-size:20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.default-according.style-1 button[aria-expanded="true"]:before{content:"";font-family:IcoFont}.default-according.style-1 button[aria-expanded="false"]:before{content:"";font-family:IcoFont}.notify-alert .close{background:unset;border:none;font-size:25px}.alert{border-radius:.15rem;padding:15px}.alert svg{vertical-align:middle}.alert .progress{margin-top:15px}.alert [data-notify='icon']{margin-right:10px;line-height:20px;position:absolute}.alert [data-notify='message']{display:inline-block;width:100%}.alert i{margin-right:5px;font-size:16px}.alert p{margin-bottom:0}.alert .close{opacity:1}.alert .close span{font-size:24px;font-weight:400;display:inline-block;border-radius:3px;text-shadow:none;padding:0 5px;padding-right:0}.alert-dismissible .close{padding:10px 1.25rem;top:4px;padding-right:13px;opacity:0.5;-webkit-transition:all 0.3s ease;transition:all 0.3s ease}.alert-dismissible .close:hover{-webkit-transition:all 0.3s ease;transition:all 0.3s ease;opacity:1;color:inherit}.card-body button:focus{outline:none}.card-body .alert:last-child{margin-bottom:0}.card-body .alert svg{width:14px;height:14px;margin-right:4px;position:absolute;top:18px}.card-body .alert svg ~ p{padding-left:20px}strong{display:inline-block}strong ~ p{display:inline-block}.alert-primary{background-color:rgba(72,49,212,0.8);border-color:rgba(72,49,212,0.9);color:#fff}.alert-primary .progress{height:5px;background-color:#442dd3;border-radius:0}.alert-primary .progress-bar{background-color:#fff}.alert-primary .btn-close{-webkit-filter:brightness(1) invert(1);filter:brightness(1) invert(1)}.alert-primary .alert-link{color:#4831D4}.alert-primary hr{border-top-color:#4831D4}.alert-primary.dark{background-color:#4831D4;border-color:#4831D4;color:#fafafa}.alert-primary.dark .alert-link{color:#fff}.alert-primary.outline,.alert-primary.outline-2x{background-color:rgba(0,0,0,0);border-color:#4831D4;color:#4831D4}.alert-primary.outline .btn-close,.alert-primary.outline-2x .btn-close{-webkit-filter:unset;filter:unset}.alert-primary.inverse{background-color:transparent;padding:13px 20px 13px 65px;border-color:#4831D4;color:#2b2b2b}.alert-primary.inverse:before{top:


  ["680_10_0"] = -345,
  ["680_18_0"] = -346,
  ["680_19_0"] = -347,
  [690] = -348,
  ["\233\146\187\231\159\179\229\133\145\230\141\162\239\188\136\228\187\152\232\180\185\233\146\187\229\133\145\230\141\162\229\133\141\232\180\185\233\146\187\239\188\137"] = -349,
  ["690_2_0"] = -350,
  ["690_3_0"] = -351,
  ["690_8_0"] = -352,
  ["690_9_0"] = -353,
  ["690_10_0"] = -354,
  [101] = -355,
  ["690_18_0"] = -356,
  ["690_19_0"] = -357,
  [7] = -358,
  ["\229\174\182\229\155\173"] = -359,
  ["7_2_0"] = -360,
  ["7_3_0"] = -361,
  [155] = -362,
  ["7_8_0"] = -363,
  ["7_9_0"] = -364,
  ["7_10_0"] = -365,
  ["UI/Atlas/SystemIcon/tex_unlock_home_icon.png"] = -366,
  ["7_18_0"] = -367,
  ["7_19_0"] = -368,
  [701] = -369,
  ["\229\174\182\229\155\173\231\173\137\231\186\167"] = -370,
  ["701_2_0"] = -371,
  ["701_3_0"] = -372,
  ["701_8_0"] = -373,
  ["701_9_0"] = -374,
  ["701_10_0"] = -375,
  ["701_18_0"] = -376,
  ["701_19_0"] = -377,
  [702] = -378,
  ["\229\174\182\229\155\173\229\191\131\229\190\151\239\188\136\231\167\145\230\138\128\239\188\137"] = -379,
  ["702_2_0"] = -380,
  ["702_3_0"] = -381,
  [991004] = -382,
  ["702_8_0"] = -383,
  ["702_9_0"] = -384,
  ["702_10_0"] = -385,
  ["702_18_0"] = -386,
  ["702_19_0"] = -387,
  [703] = -388,
  ["\229\174\182\229\155\173\228\187\147\229\186\147"] = -389,
  ["703_2_0"] = -390,
  ["703_3_0"] = -391,
  ["703_8_0"] = -392,
  ["703_9_0"] = -393,
  ["703_10_0"] = -394,
  ["703_18_0"] = -395,
  ["703_19_0"] = -396,
  [704] = -397,
  ["\229\174\182\229\155\173\233\165\177\232\133\185\229\128\188\229\187\186\231\173\145"] = -398,
  ["704_2_0"] = -399,
  ["704_3_0"] = -400,
  ["704_8_0"] = -401,
  ["704_9_0"] = -402,
  ["704_10_0"] = -403,
  ["704_18_0"] = -404,
  ["704_19_0"] = -405,
  ["\229\174\182\229\155\173\


，故甲日合丑中之己而取牛贵；乙在未而庚在子，故乙日合子中之庚而鼠贵；丙在午而辛在亥，故丙日合亥中之辛而取猪贵；戊在卯而癸在未，故戊日合未中之癸而取羊贵；贵在己而壬在酉，故丁日合酉中之壬而取鸡贵；己在丑而甲在申，故己日合申中之甲而取猴贵；庚在子而乙在未，故庚日合未中之乙而取羊贵；辛在亥而丙在午，故辛日合午中之丙而取马贵；壬在酉而丁在巳，故壬日合巳中之丁而取蛇贵；癸在未而戊在卯，故癸日合卯中之戊而取免贵也。

先天阳贵图

|   |   |   |   |   |   |
|---|---|---|---|---|---|
||癸||甲|||
||己|午|未|申|乙|
||辰||   |酉|丙|
|壬|卯|||戌|
||寅|丑|子|亥|丁|
||辛|庚戊|巳|||

后天阴贵图

|   |   |   |   |   |   |
|---|---|---|---|---|---|
||壬|辛|庚戊|||
||己|午|未|申|己|
||辰||   |酉|丁|
|癸|卯|||戌|
||寅|丑|子|亥|丙|
|||甲|乙|||

天盘甲羊、戊庚牛、乙猴、己鼠、丙鸡、丁猪、壬兔、癸蛇、辛虎，此系阳贵；甲牛、戊庚羊、乙鼠、己猴、丙猪、丁鸡、壬蛇、癸兔、辛马，此系阴贵。

古本歌：甲戊庚牛羊，乙己鼠猴乡，丙丁猪鸡位，壬癸蛇兔藏，六辛分马虎，颠倒合阴阳。

颠倒者，一干统二肖，互换颠倒，以分阴贵阳贵也。右古诀也，世人不察“阴阳”二字本于先后天之阴阳，遂有旦暮尽夜之讹。不明“颠倒”二字藏有阴贵阳贵之互换，遂有混兼俱用之紊。

六辛句分字是眼暗指阴阳二字之分。俗术改为从字，一日兼两贵，


store(session,
                        os.path.join(opts.save_path + "/model.ckpt"))
    if FLAGS.interactive:
      # E.g.,
      # [0]: model.analogy('france', 'paris', 'russia')
      # [1]: model.nearby(['proton', 'elephant', 'maxwell'])
      _start_shell(locals())

def train(opts):
  with tf.Graph().as_default(), tf.Session() as session:
    model = Word2Vec(opts, session)
    for _ in xrange(opts.epochs_to_train):
      model.train()  # Process one epoch
      model.eval()  # Eval analogies.
    # Perform a final save.
    model.saver.save(session,
                     os.path.join(opts.save_path, "model.ckpt"),
                     global_step=model.global_step)
    if FLAGS.interactive:
      # E.g.,
      # [0]: model.analogy('france', 'paris', 'russia')
      # [1]: model.nearby(['proton', 'elephant', 'maxwell'])
      _start_shell(locals())

def main(_):
  opts = Options()
  if FLAGS.use:
    use(opts)
  elif not FLAGS.train_data or not FLAGS.eval_data or not FLAGS.save_path:
    """Train a word2vec model."""
    print("--train_data --eval_data and --save_path must be specified.")
    sys.exit(1)
  else:
    train(opts)

if __name__ == "__main__":
  tf.app.run()


,
    y: 27.0,
    z: 0.0,
    pitch: 0.0,
    yaw: 90.0,
};

#[quill::plugin]
struct TntRun {
    state: TntRunState,
    tick_counter: usize,
}

impl Plugin for TntRun {
    fn enable(_game: &mut Game, setup: &mut Setup<Self>) -> Self {
        // FIXME regenerate_arena(game) fails because the chunk is not loaded
        setup
            .add_system(player_join_system)
            .add_system(start_system)
            .add_system(remove_offline_players_system)
            .add_system(tick_counter_system)
            .add_system(block_queue_system)
            .add_system(block_fall_system)
            .add_system(block_falling_system)
            .add_system(lose_system)
            .add_system(winner_system);
        TntRun {
            state: TntRunState::Waiting { countdown: 0 },
            tick_counter: 0,
        }
    }

    fn disable(self, _game: &mut Game) {}
}

fn player_join_system(plugin: &mut TntRun, game: &mut Game) {
    for (player, _) in game.query::<&PlayerJoinEvent>() {
        match plugin.state {
            TntRunState::Starting { .. } => respawn_in_arena(&player),
            TntRunState::Playing { .. } | TntRunState::Waiting { .. } => {
                respawn_as_spectator(&player);
            }
        }
    }
}

fn tick_counter_system(plugin: &mut TntRun, _game: &mut Game) {
    plugin.tick_counter += 1;
}

fn start_system(plugin: &mut TntRun, game: &mut Game) {
    if plugin.tick_counter % 20 != 0 {
        return;
    }
    match &mut plugin.state {
        TntRunState::Waiting { countdown } => {
            if *countdown == 0 {
                let players = game.query::<&Player>().map(|(e, _)| e).collect::<Vec<_>>();
                if !players.is_empty() {
                    plugin.state = TntRunState::Starting {
                        countdown: PREPARATION_TIME,
                    };
                    for player in players {
                        respawn_in_arena(&player)
                    }
                    regenerate_arena(game);
                }
            } else {
                *countdown -= 1;
            }
        }
        TntRunState::Starting { countdown } => {
            let players = game
                .query::<&Player>()
                .map(|(entity, _)| entity)
                .collect::<Vec<_>>();
            if players.len() > 1 {
                *countdown -= 1;
                if *countdown == 0 {
                    plugin.state = TntRunState::Playing {
                        block_fall_queue: VecDeque::new(),
                        falling_blocks: Vec::new(),
                        players: players.iter().map(|p| p.id()).collect(),
                    };
                    for player in players {
                        player.send_title(&Title {
                            title: Some(TextComponent::from("Run!").red().into()),
                            sub_title: None,
                            fade_in: 0,
                            stay: 10,
                            fade_out: 5,
                        });
                    }
                } else {
                    for player in players {
                        player.send_title(&Title {
                            title: Some(TextComponent::from(countdown.to_string()).green().into()),
                            sub_title: Some("Get ready".into()),
                            fade_in: 1,
                            stay: 20,
                            fade_out: 1,
                        });
                    }
                }
            } else {
                if *countdown != PREPARATION_TIME {
                    for player in players {


bleFrontlightSwitch(activity: Activity): Int {
        return 1
    }

    override fun getBrightness(activity: Activity): Int {
        return try {
            Settings.System.getInt(activity.applicationContext.contentResolver,
                "screen_brightness")
        } catch (e: Exception) {
            Log.w(TAG, e.toString())
            0
        }
    }

    override fun getWarmth(activity: Activity): Int {
        Log.w(TAG, "getWarmth: not implemented")
        return 0
    }

    override fun setBrightness(activity: Activity, brightness: Int) {
        if (brightness < MIN || brightness > BRIGHTNESS_MAX) {
            Log.w(TAG, "brightness value of of range: $brightness")
            return
        }
        Log.v(TAG, "Setting brightness to $brightness")
        try {
            Settings.System.putInt(activity.applicationContext.contentResolver,
                "screen_brightness", brightness)
        } catch (e: Exception) {
            Log.w(TAG, "$e")
        }
    }

    override fun setWarmth(activity: Activity, warmth: Int) {
        Log.w(TAG, "ignoring setWarmth: not implemented")
    }

    override fun getMinWarmth(): Int {
        return 0
    }

    override fun getMaxWarmth(): Int {
        return 0
    }

    override fun getMinBrightness(): Int {
        return MIN
    }

    override fun getMaxBrightness(): Int {
        return BRIGHTNESS_MAX
    }

    override fun hasStandaloneWarmth(): Boolean {
        return false
    }
}
package org.koreader.launcher.device.lights

import android.app.Activity
import android.provider.Settings
import android.util.Log
import org.koreader.launcher.device.Ioctl
import org.koreader.launcher.device.LightsInterface
import org.koreader.launcher.extensions.read
import java.io.File

/* Special controller for Tolino Vision5
 * see https://github.com/koreader/android-luajit-launcher/pull/382
 *
 * Original Controller by @zwim, see "./TolinoRootController.kt"
 */

class TolinoNtxController : Ioctl(), LightsInterface {

    companion object {
        private const val TAG = "Lights"
        private const val BRIGHTNESS_MAX = 255
        private const val WARMTH_MAX = 10 // can also be read by "/sys/class/backlight/lm3630a_led/max_color" on Vision5
        private const val MIN = 0
        private const val NTX_IO_FILE = "/dev/ntx_io"
        private const val NTX_WARMTH_ID = 248
        private const val COLOR_FILE = "/sys/class/backlight/lm3630a_led/color" // only readable by "system" in Vision5
    }

    // store the current warmth value, because in some models (Vision5) it cannot be fetched
    private var currentWarmth: Int? = null

    override fun getPlatform(): String {
        return "tolino"
    }

    override fun hasFallback(): Boolean {
        return false
    }

    override fun hasWarmth(): Boolean {
        return true
    }

    override fun needsPermission(): Boolean {
        return false
    }

    override fun enableFrontlightSwitch(activity: Activity): Int {
        return 1
    }

    override fun getBrightness(activity: Activity): Int {
        return try {
            Settings.System.getInt(activity.applicationContext.contentResolver,
                "screen_brightness")
        } catch (e: Exception) {
            Log.w(TAG, e.toString())
            0
        }
    }

    override fun getWarmth(activity: Activity): Int {
        if (currentWarmth == null) {
            currentWarmth = WARMTH_MAX - File(COLOR_FILE


�别算法的准确率？                                                                                |
|自然语言处理|请问有哪些常用的自然语言处理技术？|
|机器学习|如何解释机器学习模型中的过拟合现象？|
|计算机视觉|请列举一些常用的计算机视觉任务和应用场景。|
|数据挖掘|请问数据挖掘的流程包括哪些步骤？|
|深度学习|什么是深度学习中的反向传播算法？它有什么作用？|
|人工智能伦理|请问在人工智能研究中，哪些伦理问题备受关注？|
|语音识别|请问语音信号如何转换为文本？|
|图像识别|请问卷积神经网络在图像识别中起到了什么作用？|
|监督学习|请问监督学习中的评价指标有哪些？|
|聚类分析|请问聚类分析的目标是什么？有哪些经典算法可以实现聚类分析？|
|社交网络|社交网络对人们的心理有哪些影响？|
|自然语言处理|如何基于自然语言处理技术，实现一款智能写作助手工具？|
|机器学习|机器学习在医疗、金融等行业应用场景中的优化方向是什么？|
|电商平台|电商平台销售额下降，如何通过营销策略提升销售额？|
|人工智能与传统制造业|人工智能在传统制造业中的应用案例有哪些？|
|数据隐私保护|如何保护用户的数据隐私，同时又不影响数据的有效利用？|
|物联网|物联网技术在未来城市建设中的应用前景如何？|
|生物技术|基因编辑技术在农业生产中的应用案例有哪些？|
|智能家居|如何打造一款可靠性高，易用性好的智能家居系统？|
|区块链|应该如何运用区块链技术，解决现有的社会问题？|
|医疗|怎么判断自己是否患有高血压？|
|旅游|在哪些国家可以无签证入境？|
|科技|人工智能未来的发展前景如何？|
|文学|您认为钱钟书的《围城》中最具代表性的角色是谁？|
|化妆品|如何选购适合自己肤质的面霜？|
|体育|世界上最受欢迎的足球俱乐部是哪个？|
|古建筑|中国哪些建筑结构最为特别？|
|法律|如果遇到诈骗电话，应该采取哪些措施保护自己？|
|音乐|贝多芬的第九交响曲体现了哪些思想？|
|历史|毛泽东思想的主要内容是什么？|
|天气|明天的温度会是多少度？|
|健身


# SYNTAX -> if-elif-else

'''
if(condition):
    statement
elif(condition):
    statement2
else:
    statement3
'''

# else statement is optional and does not require a condition to be specified.

# Example ->
print("Example 1 (if-else) ->")
_age = int(input("Enter your age: "))

if(_age >= 18):
    print("You are eligible to vote.")
else:
    print("You are not eligible to vote.")

# Example 2 ->
print("Example 2 (if-elif-else) ->")
_minAge = 18
_maxAge = 60
_userAge = int(input("Enter your age: "))

if(_userAge >= _minAge and _userAge <= _maxAge):
    print("You are eligible to work.")
    print("You can work for 8 hours a day.")
    print("You can drive.")
elif(_userAge < _minAge):
    print("You are not eligible to work.")
    print("You can't drive.")
else:
    print("You are too old to work.")
    print("You can't drive.")
    print("You can't work for more than 8 hours a day.")

# Nested if-else statement

'''
if(condition):
    if(condition):
        statement
    else:
        statement2
else:
    statement3
'''

# Example ->
# Check if a number is positive, negative or zero.
print("Example 3 (Nested if-else) ->")
_num = int(input("Enter a number: "))
if(_num > 0):
    print("The number is positive.")
elif(_num < 0):
    print("The number is negative.")
else:
    print("The number is zero.")

# Nested if-else statement

'''
if(condition):
    if(condition):
        statement
    else:
        statement2
else:
    if(condition):
        statement3
    else:
        statement4
'''

# Example ->
# Check if a number is positive, negative or zero.
print("Example 4 (Nested if-else) ->")
_num = int(input("Enter a number: "))
if(_num > 0):
    print("The number is positive.")
elif(_num < 0):
    print("The number is negative.")
else:
    if(_num == 0):
        print("The number is zero.")
    else:
        print("This is not a number.")

# Single line if / ternary operator

'''
SYNTAX: <variablt> = <value> if <condition> else <statement>

NOTE: You cannot use elif with this syntax.
'''

# Example ->
print("Example 5 (Single line if / ternary operator) ->")
_foodItem = "Pizza"
_wantToEat = "Yes" if _foodItem == "Pizza" else "I want to eat Pizza."
print(_wantToEat)

# Example 2 ->
# Check if a number is positive, negative or zero.
print("Example 6 (Single line if / ternary operator) ->")
_num = int(input("Enter a number: "))
_result = "The number is positive." if _num > 0 else "The number is negative." if _num < 0 else "The number is zero."

# Clever if statement

'''
SYNTAX: <variable> (false_value, true_value)[<condition>]
'''

# Example ->
# Check if a number is positive, negative or zero.
print("Example 7 (Clever if statement) ->")
_num = int(input("Enter a number: "))
_result = ("The number is negative.", "The number is positive.")[_num > 0]

# Example 2 ->
# Check if a number is positive, negative or zero.
print("Example 8 (Clever if statement) ->")
_num = int(input("Enter a number: "))
_result = ("The number is negative.", "The number is positive.", "The number is zero.")[_num < 0], [_num > 0], [_num == 0]


Variable("data", ResponseData(dto.variables, dto.dependentVariables))
          .addVariable("ui", ui)
      )
  }

  /**
   * Will be called, if the user wants to see the encryption options.
   */
  @PostMapping(RestPaths.WATCH_FIELDS)
  fun watchFields(@Valid @RequestBody postData: PostData<MerlinTemplate>): ResponseEntity<ResponseAction> {
    val dto = postData.data
    val currentVariable = dto.currentVariable ?: throw InternalError("No currentVariable given.")
    val dependsOnName = currentVariable.dependsOnName
    if (dependsOnName != null) {
      currentVariable.dependsOn = dto.variables.find { it.name == dependsOnName }
    } else {
      currentVariable.dependsOn = null
    }
    // write access is always true, otherwise watch field wasn't registered.
    return ResponseEntity.ok(
      ResponseAction(targetType = TargetType.UPDATE)
        .addVariable(
          "ui",
          createEditLayout(dto)
        )
        .addVariable("data", dto)
    )
  }

  private fun createEditLayout(dto: MerlinTemplate): UILayout {
    val variable = dto.currentVariable ?: throw InternalError("No current variable given to edit.")
    val lc = LayoutContext(MerlinVariable::class.java)

    val leftCol = UICol(UILength(md = 6))
      .add(UIInput("currentVariable.name", lc))
    if (!variable.dependent) {
      leftCol.add(
        UISelect(
          "currentVariable.type",
          lc,
          values = VariableType.values()
            .map { UISelectValue(it, translate("plugins.merlin.variable.type.${it.name}")) })
      )
    }
    val rightCol = UICol(UILength(md = 6))
    if (variable.input) {
      rightCol.add(UIInput("currentVariable.sortName", lc))
    }
    if (variable.masterVariable != true) {
      val dependsOnCandidates = dto.variables.filter { it.id != variable.id && !it.allowedValues.isNullOrEmpty() }
        .map { UISelectValue(it.name, it.name) }
      rightCol.add(
        UISelect(
          "currentVariable.dependsOnName",
          lc,
          values = dependsOnCandidates
        )
      )
    }

    val fieldset = UIFieldset(UILength(md = 12, lg = 12))
    fieldset.add(
      UIRow()
        .add(leftCol)
        .add(rightCol)
    )
    if (!variable.dependent) {
      rightCol.add(UICheckbox("currentVariable.required", lc))
      rightCol.add(UICheckbox("currentVariable.unique", lc))

      when (variable.type) {
        VariableType.STRING -> {
          fieldset.add(UICreatableSelect("currentVariable.allowedValues", lc))
        }
        VariableType.INT -> {
          fieldset.add(
            UIRow().add(
              UICol(md = 6)
                .add(UIInput("currentVariable.minimumValue", lc, dataType = UIDataType.INT))
            ).add(
              UICol(md = 6)
                .add(UIInput("currentVariable.maximumValue", lc, dataType = UIDataType.INT))
            )
          )
        }
        VariableType.FLOAT -> {
          fieldset.add(
            UIRow().add(
              UICol(md = 4)
                .add(UIInput("currentVariable.minimumValue", lc, dataType = UIDataType.DECIMAL))
            ).add(
              UICol(md = 4)
                .add(UIInput("currentVariable.maximumValue", lc, dataType = UIDataType.DECIMAL))
            ).add(
              UICol(md = 4)
                .add(UIInput("currentVariable.scale", lc, dataType = UIDataType.INT))
            )
          )
        }
        VariableType.DATE -> {
        }
      }

      fieldset.add(
        UITextArea("currentVariable.description", lc)


/*	$NetBSD: enable.h,v 1.1.1.1 1997/01/14 20:57:07 gwr Exp $	*/

/*-
 * Copyright (c) 1997 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by Jeremy Cooper.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *        This product includes software developed by the NetBSD
 *        Foundation, Inc. and its contributors.
 * 4. Neither the name of The NetBSD Foundation nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

/*
 * System Enable Register
 * The Sun3x System Enable Register controls the function of a few
 * on-board devices and general system operation.  It is cleared when
 * the system is reset.
 *
 * 15                                                               0
 *  +---+---+---+---+---+---+---+---+---+---+---+---+---+---.---.---+
 *  |BT |FPP|DMA| 0 |VID|RES|FPA|DIA| 0 |CCH|IOC|LBK|DCH|  UNUSED   |
 *  +---+---+---+---+---+---+---+---+---+---+---+---+---+---.---.---+
 *
 *
 * Bits in the Enable Register defined.
 */
#define	ENA_DBGCACHE	0x0008	/* Debug mode for system cache              */
#define	ENA_LOOPBACK	0x0010	/* VME loopback mode                        */
#define	ENA_IOCACHE	0x0020	/* Enable I/O cache                             */
#define	ENA_CACHE	0x0040	/* Enable system cache                          */
#define	ENA_DIAG	0x0100	/* Diagnostic switch                            */
#define	ENA_FPA		0x0200	/* Enable floating point acc.                   */
#define	ENA_RES		0x0400	/* Video display resolution (0 => hi, 1 => low) */
#define	ENA_VIDEO	0x0800	/* Enable video display                         */
#define	ENA_SDVMA	0x2000	/* Enable system DVMA                           */
#define	ENA_FPP		0x4000	/* Enable floating point coprocessor            */
#define	ENA_NOTBOOT	0x8000	/* Non-boot state (0 => boot, 1 => normal)      */

#ifdef	_KERNEL
extern volatile short *enable_reg;
#endif


" title="Table of contents" rel="contents">Contents][Index]

9.18.1 Options

<samp>-mconstant-gp</samp>

This option instructs the assembler to mark the resulting object file
as using the “constant GP” model.  With this model, it is assumed
that the entire program uses a single global pointer (GP) value.  Note
that this option does not in any fashion affect the machine code
emitted by the assembler.  All it does is turn on the EF_IA_64_CONS_GP
flag in the ELF file header.

<samp>-mauto-pic</samp>

This option instructs the assembler to mark the resulting object file
as using the “constant GP without function descriptor” data model.
This model is like the “constant GP” model, except that it
additionally does away with function descriptors.  What this means is
that the address of a function refers directly to the function’s code
entry-point.  Normally, such an address would refer to a function
descriptor, which contains both the code entry-point and the GP-value
needed by the function.  Note that this option does not in any fashion
affect the machine code emitted by the assembler.  All it does is
turn on the EF_IA_64_NOFUNCDESC_CONS_GP flag in the ELF file header.

<samp>-milp32</samp>

<samp>-milp64</samp>

<samp>-mlp64</samp>

<samp>-mp64</samp>

These options select the data model.  The assembler defaults to -mlp64
(LP64 data model).

<samp>-mle</samp>

<samp>-mbe</samp>

These options select the byte order.  The -mle option selects little-endian
byte order (default) and -mbe selects big-endian byte order.  Note that
IA-64 machine code always uses little-endian byte order.

<samp>-mtune=itanium1</samp>

<samp>-mtune=itanium2</samp>

Tune for a particular IA-64 CPU, <var>itanium1</var> or <var>itanium2</var>. The
default is <var>itanium2</var>.

<samp>-munwind-check=warning</samp>

<samp>-munwind-check=error</samp>

These options control what the assembler will do when performing
consistency checks on unwind directives.  -munwind-check=warning
will make the assembler issue a warning when an unwind directive check
fails.  This is the default.  -munwind-check=error will make the
assembler issue an error when an unwind directive check fails.

<samp>-mhint.b=ok</samp>

<samp>-mhint.


tem ? r.item(0).outerHTML : r.htmlText);
				e.removeChild(e.firstChild);
			} else
				e.innerHTML = r.toString();

			// Keep whitespace before and after
			if (/^\s/.test(e.innerHTML))
				wb = ' ';

			if (/\s+$/.test(e.innerHTML))
				wa = ' ';

			s.getInner = true;

			s.content = t.isCollapsed() ? '' : wb + t.serializer.serialize(e, s) + wa;
			t.onGetContent.dispatch(t, s);

			return s.content;
		},

		setContent : function(content, args) {
			var self = this, rng = self.getRng(), caretNode, doc = self.win.document, frag, temp;

			args = args || {format : 'html'};
			args.set = true;
			content = args.content = content;

			// Dispatch before set content event
			if (!args.no_events)
				self.onBeforeSetContent.dispatch(self, args);

			content = args.content;

			if (rng.insertNode) {
				// Make caret marker since insertNode places the caret in the beginning of text after insert
				content += '_';

				// Delete and insert new node
				if (rng.startContainer == doc && rng.endContainer == doc) {
					// WebKit will fail if the body is empty since the range is then invalid and it can't insert contents
					doc.body.innerHTML = content;
				} else {
					rng.deleteContents();

					if (doc.body.childNodes.length == 0) {
						doc.body.innerHTML = content;
					} else {
						// createContextualFragment doesn't exists in IE 9 DOMRanges
						if (rng.createContextualFragment) {
							rng.insertNode(rng.createContextualFragment(content));
						} else {
							// Fake createContextualFragment call in IE 9
							frag = doc.createDocumentFragment();
							temp = doc.createElement('div');

							frag.appendChild(temp);
							temp.outerHTML = content;

							rng.insertNode(frag);
						}
					}
				}

				// Move to caret marker
				caretNode = self.dom.get('__caret');

				// Make sure we wrap it compleatly, Opera fails with a simple select call
				rng = doc.createRange();
				rng.setStartBefore(caretNode);
				rng.setEndBefore(caretNode);
				self.setRng(rng);

				// Remove the caret position
				self.dom.remove('__caret');

				try {
					self.setRng(rng);
				} catch (ex) {
					// Might fail on Opera for some odd reason
				}
			} else {
				if (rng.item) {
					// Delete content and get caret text selection
					doc.execCommand('Delete', false, null);
					rng = self.getRng();
				}

				// Explorer removes spaces from the beginning of pasted contents
				if (/^\s+/.test(content)) {
					rng.pasteHTML('_' + content);
					self.dom.remove('__mce_tmp');
				} else
					rng.pasteHTML(content);
			}

			// Dispatch set content event
			if (!args.no_events)
				self.onSetContent.dispatch(self, args);
		},

		getStart : function() {
			var rng = this.getRng(), startElement, parentElement, checkRng, node;

			if (rng.duplicate || rng.item) {
				// Control selection, return first item


 2
/* 0CEB4C 8016E10C 34A50170 */  ori   $a1, (0x00020170 & 0xFFFF) # ori $a1, $a1, 0x170
/* 0CEB50 8016E110 3484016F */  ori   $a0, (0x0002016F & 0xFFFF) # ori $a0, $a0, 0x16f
/* 0CEB54 8016E114 0C048C3A */  jal   func_801230E8
/* 0CEB58 8016E118 24060001 */   li    $a2, 1
/* 0CEB5C 8016E11C 10000007 */  b     .L8016E13C_ovl3
/* 0CEB60 8016E120 8E0C0030 */   lw    $t4, 0x30($s0)
.L8016E124_ovl3:
/* 0CEB64 8016E124 3C050002 */  lui   $a1, (0x000200CA >> 16) # lui $a1, 2
/* 0CEB68 8016E128 34A500CA */  ori   $a1, (0x000200CA & 0xFFFF) # ori $a1, $a1, 0xca
/* 0CEB6C 8016E12C 348400C9 */  ori   $a0, (0x000200C9 & 0xFFFF) # ori $a0, $a0, 0xc9
/* 0CEB70 8016E130 0C048C3A */  jal   func_801230E8
/* 0CEB74 8016E134 24060001 */   li    $a2, 1
/* 0CEB78 8016E138 8E0C0030 */  lw    $t4, 0x30($s0)
.L8016E13C_ovl3:
/* 0CEB7C 8016E13C 258D0001 */  addiu $t5, $t4, 1
/* 0CEB80 8016E140 0C02BE85 */  jal   func_800AFA14
/* 0CEB84 8016E144 AE0D0030 */   sw    $t5, 0x30($s0)
/* 0CEB88 8016E148 8FBF001C */  lw    $ra, 0x1c($sp)
/* 0CEB8C 8016E14C 8FB00014 */  lw    $s0, 0x14($sp)
/* 0CEB90 8016E150 8FB10018 */  lw    $s1, 0x18($sp)
/* 0CEB94 8016E154 03E00008 */  jr    $ra
/* 0CEB98 8016E158 27BD0020 */   addiu $sp, $sp, 0x20
.type func_8016DDE8_ovl3, @function
.size func_8016DDE8_ovl3, . - func_8016DDE8_ovl3


], shadowProjMatrix.m[3][3]));
  }
  // lazy - each frame render only one rtarget

  if (update_state & UPDATE_BLUR_Y)
    update_state = UPDATE_NONE;
  else if (update_state & UPDATE_BLUR_X)
    update_state = UPDATE_BLUR_Y;
  else if (update_state & UPDATE_SCENE)
    update_state = UPDATE_BLUR_X;
  ShaderGlobal::set_texture(vsm_shadowmapVarId, targ_tex->getTexId());
  ShaderGlobal::set_color4(vsm_shadow_tex_sizeVarId, width, height, 1.0 / width, 1.0 / height);
  d3d_set_view_proj(savedViewProj);
  temp_tex = nullptr;
}

void Variance::setOff()
{
  if (VariableMap::isGlobVariablePresent(vsm_shadowmapVarId))
  {
    ShaderGlobal::set_texture(vsm_shadowmapVarId, BAD_TEXTUREID);
    ShaderGlobal::set_color4(vsm_shadow_tex_sizeVarId, 0, 0);
    temp_tex = nullptr;
    targ_tex = nullptr;
  }
  update_state = UPDATE_NONE;
  forceUpdateFrameDelay = -1;
}

bool Variance::needUpdate(const Point3 &light_dir) const
{
  float diffLight = lengthSq(light_dir - oldLightDir);
  return needUpdate() || diffLight > light_full_update_threshold;
}

bool Variance::startShadowMap(const BBox3 &in_box, const Point3 &in_light_dir_unrm, float in_shadow_dist,
  CullingInfo *out_culling_info)
{
  if (!blur)
    return false;

  d3d_get_view_proj(savedViewProj);

  Point3 in_light_dir = normalize(in_light_dir_unrm);

  int new_update_state = UPDATE_NONE;
  if (forceUpdateFrameDelay >= 0)
  {
    if (forceUpdateFrameDelay == 0)
      new_update_state = UPDATE_ALL;
    forceUpdateFrameDelay--;
  }

  updateBox = in_box;
  updateLightDir = in_light_dir;
  updateShadowDist = in_shadow_dist;

  float diffLight = lengthSq(updateLightDir - oldLightDir);
  if (diffLight > light_full_update_threshold)
    new_update_state |= UPDATE_ALL;
  else if (diffLight > light_update_threshold)
    new_update_state |= UPDATE_SCENE;

  if (!updateBox.isempty() && !oldBox.isempty())
  {
    float diffBox = lengthSq(updateBox.center() - oldBox.center());

    if (diffBox > box_full_update_threshold)
      new_update_state |= UPDATE_ALL;
    else if (diffBox > box_update_threshold)
      new_update_state |= UPDATE_SCENE;
  }
  else if (updateBox.isempty() != oldBox.isempty())
    new_update_state = UPDATE_ALL;

  if (new_update_state)
  {
    if (update_state) // if already updating and need update- force redraw
      update_state = UPDATE_ALL;
    else // old update_state is do nothing. make new one
      update_state = new_update_state;
  } // use previous update state

  if (update_state)
  {
    d3d::get_render_target(oldrt);
  }

  if (!(update_state & UPDATE_SCENE))
    return false;
  if (fabsf(updateLightDir.y) > enable_vsm_treshold)
  {
    setOff();
    return false;
  }


# uvicorn line_bot_main:app --reload

from fastapi import FastAPI, Request, Header, HTTPException
from contextlib import asynccontextmanager
from linebot.v3.exceptions import InvalidSignatureError
from linebot.v3.webhooks import MessageEvent, TextMessageContent, PostbackEvent

from config.openai import init_openai
from config.pinecone import init_pinecone, get_namespace
from config.line import get_line_handler
from adapters.line_adapter import get_line_api
from adapters.pinecone_adapter import get_pinecone_index
from line_bot.db.mongodb import get_db, close_mongodb_client
from line_bot.db.init_db import init_user_roles_index
from line_bot.handlers.message_handler import handle_message
from line_bot.handlers.postback_handler import handle_postback
import logging

from config.log_config import init_logging
init_logging(level=logging.DEBUG, to_file=False)

# ✅ 初始化 SDK 與必要變數
init_openai()
init_pinecone()
INDEX = get_pinecone_index()
NAMESPACE = get_namespace()
handler = get_line_handler()
line_bot_api = get_line_api()

# ✅ FastAPI lifespan 設定：啟動與關閉時初始化 MongoDB
@asynccontextmanager
async def lifespan(app: FastAPI):
    db = get_db()
    init_user_roles_index()
    print(f"✅ MongoDB 已啟動，資料庫名稱：{db.name}")
    yield
    close_mongodb_client()
    print("🛑 MongoDB 已關閉")

app = FastAPI(lifespan=lifespan)

# ✅ LINE Message 事件處理器（文字訊息）
@handler.add(MessageEvent, message=TextMessageContent)
def _handle_message(event):
    print("🎯 收到使用者文字訊息")
    handle_message(event, line_bot_api, INDEX, NAMESPACE)

# ✅ LINE Postback 事件處理器（按鈕點擊）
@handler.add(PostbackEvent)
def _handle_postback(event):
    print("🎯 收到使用者 Postback 資料")
    handle_postback(event, line_bot_api)

# ✅ LINE Webhook callback 路由
@app.post("/callback")
async def callback(request: Request, x_line_signature: str = Header(...)):
    body = await request.body()
    body_str = body.decode("utf-8")

    try:
        handler.handle(body_str, x_line_signature)
    except InvalidSignatureError:
        raise HTTPException(status_code=400, detail="Invalid signature")

    return {"status": "ok"}


using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEditor.UIElements;
using UnityEngine.UIElements;
using NUnit.Framework;
using static SLZ.CustomStaticBatching.PackedChannel;
using static UnityEngine.UI.InputField;
using System.Runtime.Remoting.Messaging;
using UnityEditor.UIElements.Bindings;
using System;
using static UnityEditor.Search.SearchValue;
using System.Reflection;
using Unity.Collections.LowLevel.Unsafe;

namespace SLZ.CustomStaticBatching.Editor
{
	/// <summary>
	/// Menu that controls the global settings used by the static batcher in editor
	/// </summary>
	static class SBSettingsProvider
	{
		[SettingsProvider]
		public static SettingsProvider CreateSBSettingsProvider()
		{

			System.Action<string, VisualElement> uiAction = SBSettingsUI;
			SettingsProvider provider = new SettingsProvider("Project/SLZCustomStaticBatching", SettingsScope.Project)
			{
				label = "Custom Static Batching",
				activateHandler = uiAction,
			};
			return provider;
		}

		public static void SBSettingsUI(string searchContext, VisualElement rootElement)
		{

			SerializedObject globalSettings = new SerializedObject(SBSettingsSO.GlobalSettings);
			VisualElement margin = new VisualElement();
			margin.style.paddingLeft = 8;
			margin.style.paddingRight = 8;
			margin.style.paddingTop = 4;
			margin.style.flexDirection = FlexDirection.Column;
			margin.style.flexGrow = 1;
			margin.style.alignItems = Align.Stretch;
			margin.style.flexShrink = 1;
			margin.style.flexBasis = StyleKeyword.Auto;

			Label title = new Label("<b>Custom Static Batching</b>");
			title.style.fontSize = 20;
			title.style.paddingBottom = 8;

			Toggle enableInPlayMode = new Toggle("Enable In Play Mode");
			enableInPlayMode.tooltip = "Run modified static batching in play mode in editor. As the editor runs static batching on scene load, this will cause hitching when asynchronously streaming scenes. Disabling this allows unity's default static batching to run instead";
			enableInPlayMode.bindingPath = "executeInPlayMode";
			enableInPlayMode.Bind(globalSettings);

			VisualElement testButtonStrip = new VisualElement();
			//testButtonStrip.style.marginTop = 4;
			testButtonStrip.style.flexShrink = 0;

			testButtonStrip.style.flexDirection = FlexDirection.Row;
			testButtonStrip.style.justifyContent = Justify.Center;

			BuildPlatformsMirror.buildPlatformInfo[] buildPlatforms = BuildPlatformsMirror.ValidBuildPlatforms;

			int numPlatforms = buildPlatforms.Length;
			TabBox tabBox = new TabBox(numPlatforms + 1);
			tabBox.tabs[0].text = "Default";

			for (int i = 0; i < numPlatforms; i++)
			{
				if (buildPlatforms[i].icon != null)
				{
					tabBox.tabs[i + 1].icon = buildPlatforms[i].icon;
				}
				else
				{
					tabBox.tabs[i + 1].text = buildPlatforms[i].name;
				}
				tabBox.tabs[i + 1].tooltip = buildPlatforms[i].tooltip;
			}

			PlatformSettingsPage[] settingsPage = new PlatformSettingsPage[numPlatforms + 1];

			settingsPage[0] = new PlatformSettingsPage(globalSettings);

			tabBox.tabPages[0].Add(settingsPage[0]);

			for (int i = 1; i <= numPlatforms; i++)
			{
				settingsPage[i] = new PlatformSettingsPage(globalSettings, buildPlatforms[i - 1].buildTarget.TargetName);
				tabBox.tabPages[i].Add(settingsPage[i]);
			}

			rootElement.Add(margin);
			margin.Add(title);
			margin.Add(enableInPlayMode);
			margin.Add(tabBox);
			//EditorToolbarUtility.SetupChildrenAsButtonStrip(testButtonStrip);
		}

		static string[] VtxFormatNames = new string[] { "Use Player Vertex Compression", "UNorm


platform-specific data
	virtual SurfacePlat *Plat(VPANEL vguiPanel) = 0;
	virtual void SetPlat(VPANEL vguiPanel, SurfacePlat *Plat) = 0;

	// returns a pointer to the vgui controls baseclass Panel *
	// destinationModule needs to be passed in to verify that the returned Panel * is from the same module
	// it must be from the same module since Panel * vtbl may be different in each module
	virtual Panel *GetPanel(VPANEL vguiPanel, const char *destinationModule) = 0;

	virtual bool IsEnabled(VPANEL vguiPanel) = 0;
	virtual void SetEnabled(VPANEL vguiPanel, bool state) = 0;

	// Used by the drag/drop manager to always draw on top
	virtual bool IsTopmostPopup( VPANEL vguiPanel) = 0;
	virtual void SetTopmostPopup( VPANEL vguiPanel, bool state ) = 0;

	// sibling pins
	virtual void SetSiblingPin(VPANEL vguiPanel, VPANEL newSibling, byte iMyCornerToPin = 0, byte iSiblingCornerToPinTo = 0 ) = 0;

};

#define VGUI_PANEL_INTERFACE_VERSION "VGUI_Panel009"

} // namespace vgui

#endif // IPANEL_H


lr-indigo
// $clr-blue
// $clr-light-blue
// $clr-cyan
// $clr-teal
// $clr-green
// $clr-light-green
// $clr-lime
// $clr-yellow
// $clr-amber
// $clr-orange
// $clr-deep-orange
// $clr-brown
// $clr-grey
// $clr-blue-grey
// $clr-black
// $clr-white

//
// Red
//

$clr-red-list: (
  "base": #f44336,
  "50":   #ffebee,
  "100":  #ffcdd2,
  "200":  #ef9a9a,
  "300":  #e57373,
  "400":  #ef5350,
  "500":  #f44336,
  "600":  #e53935,
  "700":  #d32f2f,
  "800":  #c62828,
  "900":  #b71c1c,
  "a100": #ff8a80,
  "a200": #ff5252,
  "a400": #ff1744,
  "a700": #d50000
);

$clr-red:      map-get($clr-red-list, "base");

$clr-red-50:   map-get($clr-red-list, "50");
$clr-red-100:  map-get($clr-red-list, "100");
$clr-red-200:  map-get($clr-red-list, "200");
$clr-red-300:  map-get($clr-red-list, "300");
$clr-red-400:  map-get($clr-red-list, "400");
$clr-red-500:  map-get($clr-red-list, "500");
$clr-red-600:  map-get($clr-red-list, "600");
$clr-red-700:  map-get($clr-red-list, "700");
$clr-red-800:  map-get($clr-red-list, "800");
$clr-red-900:  map-get($clr-red-list, "900");
$clr-red-a100: map-get($clr-red-list, "a100");
$clr-red-a200: map-get($clr-red-list, "a200");
$clr-red-a400: map-get($clr-red-list, "a400");
$clr-red-a700: map-get($clr-red-list, "a700");

//
// Pink
//

$clr-pink-list: (
  "base": #e91e63,
  "50":   #fce4ec,
  "100":  #f8bbd0,
  "200":  #f48fb1,
  "300":  #f06292,
  "400":  #ec407a,
  "500":  #e91e63,
  "600":  #d81b60,
  "700":  #c2185b,
  "800":  #ad1457,
  "900":  #880e4f,
  "a100": #ff80ab,
  "a200": #ff4081,
  "a400": #f50057,
  "a700": #c51162
);

$clr-pink:      map-get($clr-pink-list, "base");

$clr-pink-50:   map-get($clr-pink-list, "50");
$clr-pink-100:  map-get($clr-pink-list, "100");
$clr-pink-200:  map-get($clr-pink-list, "200");
$clr-pink-300:  map-get($clr-pink-list, "300");
$clr-pink-400:  map-get($clr-pink-list, "400");
$clr-pink-500:  map-get($clr-pink-list, "500");
$clr-pink-600:  map-get($clr-pink-list, "600");
$clr-pink-700:  map-get($clr-pink-list, "700");
$clr-pink-800:  map-get($clr-pink-list, "800");
$clr-pink-900:  map-get($clr-pink-list, "900");
$clr-pink-a100: map-get($clr-pink-list, "a100");
$clr-pink-a200: map-get($clr-pink-list, "a200");
$clr-pink-a400: map-


00E022C  48 00 17 19 */	bl func_800E5CE4
/* 800E45D0 000E0230  38 60 00 05 */	li r3, 5
/* 800E45D4 000E0234  38 80 00 06 */	li r4, 6
/* 800E45D8 000E0238  38 A0 00 10 */	li r5, 0x10
/* 800E45DC 000E023C  38 C0 00 01 */	li r6, 1
/* 800E45E0 000E0240  48 00 17 05 */	bl func_800E5CE4
/* 800E45E4 000E0244  3F C0 80 48 */	lis r30, lbl_8047D604@ha
/* 800E45E8 000E0248  3B A0 00 00 */	li r29, 0
/* 800E45EC 000E024C  3B DE D6 04 */	addi r30, r30, lbl_8047D604@l
/* 800E45F0 000E0250  3B E0 00 00 */	li r31, 0
lbl_800E45F4:
/* 800E45F4 000E0254  57 A0 06 3E */	clrlwi r0, r29, 0x18
/* 800E45F8 000E0258  28 00 00 9F */	cmplwi r0, 0x9f
/* 800E45FC 000E025C  40 80 00 08 */	bge lbl_800E4604
/* 800E4600 000E0260  9B BE 00 0C */	stb r29, 0xc(r30)
lbl_800E4604:
/* 800E4604 000E0264  57 A4 06 3E */	clrlwi r4, r29, 0x18
/* 800E4608 000E0268  38 60 00 00 */	li r3, 0
/* 800E460C 000E026C  7C 85 23 78 */	mr r5, r4
/* 800E4610 000E0270  48 00 0E 51 */	bl func_800E5460
/* 800E4614 000E0274  57 A5 06 3E */	clrlwi r5, r29, 0x18
/* 800E4618 000E0278  38 60 00 05 */	li r3, 5
/* 800E461C 000E027C  38 80 00 01 */	li r4, 1
/* 800E4620 000E0280  48 00 0E 41 */	bl func_800E5460
/* 800E4624 000E0284  57 A5 06 3E */	clrlwi r5, r29, 0x18
/* 800E4628 000E0288  38 60 00 01 */	li r3, 1
/* 800E462C 000E028C  38 80 00 01 */	li r4, 1
/* 800E4630 000E0290  48 00 0E 31 */	bl func_800E5460
/* 800E4634 000E0294  3B 20 00 00 */	li r25, 0
lbl_800E4638:
/* 800E4638 000E0298  57 23 06 3E */	clrlwi r3, r25, 0x18
/* 800E463C 000E029C  38 80 00 01 */	li r4, 1
/* 800E4640 000E02A0  48 00 0A ED */	bl func_800E512C
/* 800E4644 000E02A4  3B 39 00 01 */	addi r25, r25, 1
/* 800E4648 000E02A8  28 19 00 07 */	cmplwi r25, 7
/* 800E464C 000E02AC  41 80 FF EC */	blt lbl_800E4638
/* 800E4650 000E02B0  3B 20 00 00 */	li r25, 0
lbl_800E4654:
/* 800E4654 000E02B4  57 23 06 3E */	clrlwi r3, r25, 0x18
/* 800E4658 000E02B8  57 A4 06 3E */	clrlwi r4, r29, 0x18
/* 800E465C 000E02BC  48 00 17 91 */