tate(11)
		end
	end
	if changingstate then
		lplayer.Character.Humanoid:ChangeState(statechosen)
	end
end)
game:GetService('RunService').Stepped:connect(function()
	if droppinghats then
		for i,v in pairs(lplayer.Character:GetChildren()) do
			if (v:IsA("Accessory")) or (v:IsA("Hat")) then
				v.Parent = workspace
			end
		end
	end
	if droppingtools then
		for i,v in pairs(lplayer.Character:GetChildren()) do
			if (v:IsA("Tool")) then
				v.Parent = workspace
			end
		end
	end
	if removingmeshhats then
		for i,v in pairs(lplayer.Character:GetChildren()) do
			if (v:IsA("Accessory")) or (v:IsA("Hat")) then
				v.Handle.Mesh:Destroy()
			end
		end
	end
	if removingmeshtool then
		for i,v in pairs(lplayer.Character:GetChildren()) do
			if (v:IsA("Tool")) then
				v.Handle.Mesh:Destroy()
			end
		end
	end
end)
game:GetService('RunService').Stepped:connect(function()
	if banpl then
		lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[bplrr].Character.HumanoidRootPart.CFrame
	end
end)
game:GetService('RunService').Stepped:connect(function()
	if stopsitting then
		lplayer.Character.Humanoid.Sit = false
	end
end)

plr = lplayer
hum = plr.Character.HumanoidRootPart
mouse = plr:GetMouse()
mouse.KeyDown:connect(function(key)
	if key == "e" then
		if mouse.Target then
			if clickgoto then
				hum.CFrame = CFrame.new(mouse.Hit.x, mouse.Hit.y + 5, mouse.Hit.z)
			elseif clickdel then
				mouse.Target:Destroy()
			end
		end
	end
end)

game:GetService("Workspace").ChildAdded:connect(function(part)
	if gettingtools then
		if part:IsA("Tool") then
			part.Handle.CFrame = lplayer.Character.HumanoidRootPart.CFrame
		end
	end
end)

lplayer.Chatted:Connect(function(msg)
	if string.sub(msg, 1, 6) == (prefix.."kill ") then
		if string.sub(msg, 7) == "me" then
			lplayer.Character.HumanoidRootPart.CFrame = CFrame.new(100000,0,100000)
		else
			for i,v in pairs(GetPlayer(string.sub(msg, 7)))do
				local NOW = lplayer.Character.HumanoidRootPart.CFrame
				lplayer.Character.Humanoid.Name = 1
				local l = lplayer.Character["1"]:Clone()
				l.Parent = lplayer.Character
				l.Name = "Humanoid"
				wait(0.1)
				lplayer.Character["1"]:Destroy()
				game:GetService("Workspace").CurrentCamera.CameraSubject = lplayer.Character
				lplayer.Character.Animate.Disabled = true
				wait(0.1)
				lplayer.Character.Animate.Disabled = false
				lplayer.Character.Humanoid.DisplayDistanceType = "None"
				for i,v in pairs(game:GetService'Players'.LocalPlayer.Backpack:GetChildren())do
				lplayer.Character.Humanoid:EquipTool(v)
				end
				local function tp(player,player2)
				local char1,char2=player.Character,player2.Character
				if char1 and char2 then
				char1:MoveTo(char2.Head.Position)
				end
				end
				wait(0.1)
				lplayer.Character.HumanoidRootPart.CFrame = game:GetService("Players")[v.Name].Character.HumanoidRootPart.CFrame
				wait(0.2)
				lplayer.Character.HumanoidRootPart.C


on node")
			return nil
		}
		return err
	}

	if v.emitAccountMetrics {
		// There is no distinction between unknown and pending validators here.
		// The balance is recorded as 0, as this metric is the effective balance of a participating validator.
		for _, missingPubKey := range resp.MissingValidators {
			fmtKey := fmt.Sprintf("%#x", missingPubKey)
			ValidatorBalancesGaugeVec.WithLabelValues(fmtKey).Set(0)
		}
	}

	prevEpoch := primitives.Epoch(0)
	if slot >= params.BeaconConfig().SlotsPerEpoch {
		prevEpoch = primitives.Epoch(slot/params.BeaconConfig().SlotsPerEpoch) - 1
		if uint64(v.voteStats.startEpoch) == ^uint64(0) { // Handles unknown first epoch.
			v.voteStats.startEpoch = prevEpoch
		}
	}
	v.prevEpochBalancesLock.Lock()
	for i, pubKey := range resp.PublicKeys {
		v.logForEachValidator(i, pubKey, resp, slot, prevEpoch)
	}
	v.prevEpochBalancesLock.Unlock()

	v.UpdateLogAggregateStats(resp, slot)
	return nil
}

func (v *validator) logForEachValidator(index int, pubKey []byte, resp *ethpb.ValidatorPerformanceResponse, slot primitives.Slot, prevEpoch primitives.Epoch) {
	truncatedKey := fmt.Sprintf("%#x", bytesutil.Trunc(pubKey))
	pubKeyBytes := bytesutil.ToBytes48(pubKey)
	if slot < params.BeaconConfig().SlotsPerEpoch {
		v.prevEpochBalances[pubKeyBytes] = params.BeaconConfig().MaxEffectiveBalance
	}

	// Safely load data from response with slice out of bounds checks. The server should return
	// the response with all slices of equal length, but the validator could panic if the server
	// did not do so for whatever reason.
	var balBeforeEpoch uint64
	var balAfterEpoch uint64
	var correctlyVotedSource bool
	var correctlyVotedTarget bool
	var correctlyVotedHead bool
	if index < len(resp.BalancesBeforeEpochTransition) {
		balBeforeEpoch = resp.BalancesBeforeEpochTransition[index]
	} else {
		log.WithField("pubkey", truncatedKey).Warn("Missing balance before epoch transition")
	}
	if index < len(resp.BalancesAfterEpochTransition) {
		balAfterEpoch = resp.BalancesAfterEpochTransition[index]
	}
	if index < len(resp.CorrectlyVotedSource) {
		correctlyVotedSource = resp.CorrectlyVotedSource[index]
	} else {
		log.WithField("pubkey", truncatedKey).Warn("Missing correctly voted source")
	}
	if index < len(resp.CorrectlyVotedTarget) {
		correctlyVotedTarget = resp.CorrectlyVotedTarget[index]
	} else {
		log.WithField("pubkey", truncatedKey).Warn("Missing correctly voted target")
	}
	if index < len(resp.CorrectlyVotedHead) {
		correctlyVotedHead = resp.CorrectlyVotedHead[index]
	} else {
		log.WithField("pubkey", truncatedKey).Warn("Missing correctly voted head")
	}

	if _, ok := v.startBalances[pubKeyBytes]; !ok {
		v.startBalances[pubKeyBytes] = balBeforeEpoch
	}

	fmtKey := fmt.Sprintf("%#x", pubKey)
	gweiPerEth := float64(params.BeaconConfig().GweiPerEth)
	if v.prevEpochBalances[pubKeyBytes] > 0 {
		newBalance := float64(balAfterEpoch) / gweiPerEth
		prevBalance := float64(balBeforeEpoch) / gweiPerEth
		startBalance := float64(v.startBalances[pubKeyBytes]) / gweiPerEth
		percentNet := (newBalance - prevBalance) / prevBalance
		percentSinceStart :=


STRINGS.SKILLTREE.WINONA.WINONA_BATTERY_IDLEDRAIN_DESC,
            icon = "winona_battery_idledrain",
            pos = {ORIGIN_LOW_SHELF_X + 125, ORIGIN_LOW_SHELF_Y + 0},
            group = "lowshelf",
            tags = {"lowshelf"},
            root = true,
        },
        winona_lowshelf_lock = {
            desc = STRINGS.SKILLTREE.WINONA.WINONA_LOWSHELF_LOCK_DESC,
            pos = {ORIGIN_LOW_SHELF_X - SHELF_WIDTH_SKILLS, ORIGIN_LOW_SHELF_Y + SHELF_SKILL_HEIGHT * 0.75},
            group = "lowshelf",
            tags = {"lock"},
            root = true,
            lock_open = function(prefabname, activatedskills, readonly)
                return SkillTreeFns.CountTags(prefabname, "lowshelf", activatedskills) > 2
            end,
            button_decorations = WINONA_SHELF_LOCK_DECOR_LOW,
            connects = {
                "winona_catapult_speed_1",
                "winona_catapult_aoe_1",
                "winona_battery_efficiency_1",
            },
            forced_focus = {
                down = "winona_spotlight_heated",
            },
        },
        -- Mid shelf.
        winona_catapult_speed_1 = {
            title = STRINGS.SKILLTREE.WINONA.WINONA_CATAPULT_SPEED_1_TITLE,
            desc = STRINGS.SKILLTREE.WINONA.WINONA_CATAPULT_SPEED_1_DESC,
            icon = "winona_catapult_speed_1",
            pos = {ORIGIN_MID_SHELF_X - 100, ORIGIN_MID_SHELF_Y + 0},
            group = "midshelf",
            tags = {"midshelf"},
            connects = {
                "winona_catapult_speed_2",
            },
        },
        winona_catapult_speed_2 = {
            title = STRINGS.SKILLTREE.WINONA.WINONA_CATAPULT_SPEED_2_TITLE,
            desc = STRINGS.SKILLTREE.WINONA.WINONA_CATAPULT_SPEED_2_DESC,
            icon = "winona_catapult_speed_2",
            pos = {ORIGIN_MID_SHELF_X - 150, ORIGIN_MID_SHELF_Y + 0},
            group = "midshelf",
            tags = {"midshelf"},
            connects = {
                "winona_catapult_speed_3",
            },
        },
        winona_catapult_speed_3 = {
            title = STRINGS.SKILLTREE.WINONA.WINONA_CATAPULT_SPEED_3_TITLE,
            desc = STRINGS.SKILLTREE.WINONA.WINONA_CATAPULT_SPEED_3_DESC,
            icon = "winona_catapult_speed_3",
            pos = {ORIGIN_MID_SHELF_X - 200, ORIGIN_MID_SHELF_Y + 0},
            group = "midshelf",
            tags = {"midshelf"},
        },
        winona_catapult_aoe_1 = {
            title = STRINGS.SKILLTREE.WINONA.WINONA_CATAPULT_AOE_1_TITLE,
            desc = STRINGS.SKILLTREE.WINONA.WINONA_CATAPULT_AOE_1_DESC,
            icon = "winona_catapult_aoe_1",
            pos = {ORIGIN_MID_SHELF_X - 100, ORIGIN_MID_SHELF_Y + SHELF_SKILL_HEIGHT},
            group = "midshelf"


art';
import 'package:platform/platform.dart';
import 'package:pub_semver/pub_semver.dart';
import 'package:snippets/snippets.dart';
import 'package:test/test.dart' hide TypeMatcher, isInstanceOf;

import 'fake_process_manager.dart';

const String testVersionInfo = r'''
{
  "frameworkVersion": "2.5.0-2.0.pre.63",
  "channel": "master",
  "repositoryUrl": "git@github.com:flutter/flutter.git",
  "frameworkRevision": "9b2f6f7f9ab96bb3302f81b814a094f33023e79a",
  "frameworkCommitDate": "2021-07-28 13:03:40 -0700",
  "engineRevision": "0ed62a16f36348e97b2baadd8ccfec3825f80c5d",
  "dartSdkVersion": "2.14.0 (build 2.14.0-360.0.dev)",
  "flutterRoot": "/home/user/flutter"
}
''';

void main() {
  group('FlutterInformation', () {
    late FakeProcessManager fakeProcessManager;
    late FakePlatform fakePlatform;
    late MemoryFileSystem memoryFileSystem;
    late FlutterInformation flutterInformation;

    setUp(() {
      fakeProcessManager = FakeProcessManager();
      memoryFileSystem = MemoryFileSystem();
      fakePlatform = FakePlatform(environment: <String, String>{});
      flutterInformation = FlutterInformation(
        filesystem: memoryFileSystem,
        processManager: fakeProcessManager,
        platform: fakePlatform,
      );
    });

    test('calls out to flutter if FLUTTER_VERSION is not set', () async {
      fakeProcessManager.stdout = testVersionInfo;
      final Map<String, dynamic> info = flutterInformation.getFlutterInformation();
      expect(fakeProcessManager.runs, equals(1));
      expect(info['frameworkVersion'], equals(Version.parse('2.5.0-2.0.pre.63')));
    });
    test("doesn't call out to flutter if FLUTTER_VERSION is set", () async {
      fakePlatform.environment['FLUTTER_VERSION'] = testVersionInfo;
      final Map<String, dynamic> info = flutterInformation.getFlutterInformation();
      expect(fakeProcessManager.runs, equals(0));
      expect(info['frameworkVersion'], equals(Version.parse('2.5.0-2.0.pre.63')));
    });
    test('getFlutterRoot calls out to flutter if FLUTTER_ROOT is not set', () async {
      fakeProcessManager.stdout = testVersionInfo;
      final Directory root = flutterInformation.getFlutterRoot();
      expect(fakeProcessManager.runs, equals(1));
      expect(root.path, equals('/home/user/flutter'));
    });
    test("getFlutterRoot doesn't call out to flutter if FLUTTER_ROOT is set", () async {
      fakePlatform.environment['FLUTTER_ROOT'] = '/home/user/flutter';
      final Directory root = flutterInformation.getFlutterRoot();
      expect(fakeProcessManager.runs, equals(0));
      expect(root.path, equals('/home/user/flutter'));
    });
    test('parses version properly', () async {
      fakePlatform.environment['FLUTTER_VERSION'] = testVersionInfo;
      final Map<String, dynamic> info = flutterInformation.getFlutterInformation();
      expect(info['frameworkVersion'], isNotNull);
      expect(info['frameworkVersion'], equals(Version.parse('2.5.0-2.0.pre.63')));
      expect(info['dartSdkVersion'], isNotNull);
      expect(info['dartSdkVersion'], equals(Version.parse('2.14.0-360.0.dev')));
    });
  });
}
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.d


(mode == "BLEND") { alphaMode = 2; }
        }

        int zWrite = 0;
        if (extensionDefinition.TryGetValue("transparentWithZWrite", TokenType.Double, out DataToken transparentWithZWriteToken))
        {
            zWrite = (int)(double)transparentWithZWriteToken;
        }

        int renderQueueOffset = 0;
        if (extensionDefinition.TryGetValue("renderQueueOffsetNumber", TokenType.Double, out DataToken renderQueueNumberToken))
        {
            renderQueueOffset = (int)(double)renderQueueNumberToken;
        }

        switch (alphaMode)
        {
            case 0:
                material.SetOverrideTag("RenderType", "Opaque");
                material.SetInt(unitySrcBlend, (int)BlendMode.One);
                material.SetInt(unityDstBlend, (int)BlendMode.Zero);
                material.SetInt(unityZWrite, 1);
                material.SetInt(unityAlphaToMask, 0);

                material.renderQueue = (int)RenderQueue.Geometry;
                break;
            case 1:
                material.SetOverrideTag("RenderType", "TransparentCutout");
                material.SetInt(unitySrcBlend, (int)BlendMode.One);
                material.SetInt(unityDstBlend, (int)BlendMode.Zero);
                material.SetInt(unityZWrite, 1);
                material.SetInt(unityAlphaToMask, 1);

                material.renderQueue = (int)RenderQueue.AlphaTest;
                break;
            case 2:
                material.SetOverrideTag("RenderType", "Transparent");
                material.SetInt(unitySrcBlend, (int)BlendMode.SrcAlpha);
                material.SetInt(unityDstBlend, (int)BlendMode.OneMinusSrcAlpha);
                material.SetInt(unityZWrite, zWrite);
                material.SetInt(unityAlphaToMask, 0);

                if (zWrite == 0)
                {
                    renderQueueOffset = Mathf.Clamp(renderQueueOffs


xWH = maxWH
    }

    /**
     * 开始动画
     */
    fun startAnim() {
        isStartAnim = true
        updateEnergyHandler.removeMessages(MSG_UPDATE_ENERGY)
        updateEnergyHandler.sendEmptyMessage(MSG_UPDATE_ENERGY)
    }

    /**
     * 停止动画
     */
    fun stopAnim() {
        isStartAnim = false
        updateEnergyHandler.removeMessages(MSG_UPDATE_ENERGY)
    }

    private fun destroyView() {
        stopAnim()
        spectrumList.clear()
    }

    /**
     * 设置频谱柱状条个数
     *
     */
    fun setSpectrumCount(spectrumCount: Int) {
        if (spectrumCount < 1) {
            return
        }
        this.spectrumCount = spectrumCount
        spectrumList.clear()
        paint.isAntiAlias = true
        val randList = mutableListOf<Float>()
        val nRandCount = spectrumCount
        for (i in 0 until nRandCount) {
            randList.add(1.0f * i / nRandCount)
        }
        for (i in 0 until spectrumCount) {
            spectrumList.add(DrawSpectrumRect(i, nextFloatNotRe(randList)))
        }
    }

    private fun nextFloatNotRe(randList: MutableList<Float>): Float {
        val rand = Random(System.currentTimeMillis())
        if (randList.size == 0) {
            return rand.nextFloat()
        }
        val nId = abs(rand.nextInt(Int.MAX_VALUE)) % randList.size
        if (nId >= 0 && nId < randList.size) {
            val randNum = randList[nId]
            randList.removeAt(nId)
            return randNum
        }
        return rand.nextFloat()
    }

    /**
     * 设置动画单方向缓动总时间（柱形条高度单次从0->maxHeight渐变的时间）
     */
    fun setTweenTime(time: Int) {
        mTweenTime = time
        computerRefeshFrameTime()
    }

    /**
     * 设置圆形背景颜色
     */
    fun setBgColor(color: Int) {
        bgColor = color
    }

    /**
     * 设置频谱柱状条颜色
     */
    fun setSpectrumColor(color: Int) {
        spectrumColor = color
    }

    override fun onDraw(canvas: Canvas) {
        super.onDraw(canvas)
        drawSpectrum(canvas)
    }

    internal class DrawSpectrumRect(var index: Int, var deltT: Float) {
        fun nextFloat(): Float {
            var h: Float = tweenInOut(deltT)
            if (h <= 0.0f) {
                h = 0.0f
            } else if (h >= 1.0f) {
                h = 1.0f
            }
            return h
        }

        var bOut = true

        private fun tweenIn(t: Float): Float {
            return (-cos(t * (PI / 2).toDouble())).toFloat() + 1
        }

        private fun tweenOut(t: Float): Float {
            return sin(t * (PI / 2).toDouble()).toFloat()
        }

        private fun tweenInOut(t: Float): Float {
            return if (bOut) tweenOut(t) else tweenIn(1 - t)
        }

        fun deltT(t: Float) {
            deltT += t
            if (deltT >= 1.0f) {
                deltT -= 1.0f
                bOut = !bOut
            }
        }
    }

    private val borderCount = 0
    private fun drawSpectrum(canvas: Canvas) {
        // 这里检测一下spectrumCount和spectrumList数量上是否一致,不一致的话进行纠错
        // 因为在2.3手机上会莫名其妙走


     searchKeys: const [
          'wherigo',
          'urwigo',
          'urwigo_textdeobfuscation'
        ],
        licenses: [
          ToolLicensePortedCode(
              context: context,
              author: 'François "Krevo" Crevola',
              title: 'Wherigo Tools',
              sourceUrl:
                  'https://web.archive.org/web/20240722202750/https://github.com/Krevo/WherigoTools',
              licenseType: ToolLicenseType.MIT),
        ]),
    GCWTool(
        tool: const EarwigoTextDeobfuscation(),
        id: 'earwigo_textdeobfuscation',
        searchKeys: const ['wherigo', 'earwigo', 'urwigo_textdeobfuscation']),

    // ZodiacSelection ******************************************************************************************
    GCWTool(tool: const Zodiac(), id: 'zodiac', searchKeys: const [
      'symbol_alchemy',
      'symbol_planets',
      'symbol_zodiacsigns',
      'symbol_zodiacsigns_latin',
    ], licenses: const []),
  ].map((toolWidget) {
    toolWidget.toolName = i18n(context, toolWidget.id + '_title');
    toolWidget.defaultLanguageToolName =
        i18n(context, toolWidget.id + '_title', useDefaultLanguage: true);

    try {
      toolWidget.description = i18n(context, toolWidget.id + '_description');
    } catch (e) {}

    try {
      toolWidget.example = i18n(context, toolWidget.id + '_example');
    } catch (e) {}

    return toolWidget;
  }).toList();

  createIndexedSearchStrings();
}

void refreshRegistry() {
  registeredTools = [];
}
import 'dart:math';

import 'package:gc_wizard/tools/images_and_files/_common/logic/rgb_pixel.dart';
import 'package:gc_wizard/tools/science_and_technology/colors/logic/colors_hue.dart';
import 'package:gc_wizard/tools/science_and_technology/colors/logic/colors_rgb.dart';

// https://www.dfstudios.co.uk/articles/programming/image-programming-algorithms/
RGBPixel contrast(RGBPixel pxl, double contrast) {
  final double factor = 259.0 * (contrast + 255.0) / 255.0 / (259.0 - contrast);
  pxl.red = (factor * (pxl.red - 128.0) + 128.0).clamp(0.0, 255.0);
  pxl.green = (factor * (pxl.green - 128.0) + 128.0).clamp(0.0, 255.0);
  pxl.blue = (factor * (pxl.blue - 128.0) + 128.0).clamp(0.0, 255.0);

  return pxl;
}

// https://www.dfstudios.co.uk/articles/programming/image-programming-algorithms/
RGBPixel brightness(RGBPixel pxl, double brightness) {
  pxl.red = (pxl.red + brightness).clamp(0.0, 255.0);
  pxl.green = (pxl.green + brightness).clamp(0.0, 255.0);
  pxl.blue = (pxl.blue + brightness).clamp(0.0, 255.0);

  return pxl;
}

// https://www.dfstudios.co.uk/articles/programming/image-programming-algorithms/
RGBPixel grayscale(RGBPixel pxl) {
  var value = 0.299 * pxl.red + 0.587 * pxl.green + 0.114 * pxl.blue;

  pxl.red = value;
  pxl.green = value;
  pxl.blue = value;

  return pxl;
}

// https://www.dfstudios.co.uk/articles/programming/image-programming-algorithms/
RGBPixel invert(RGBPixel pxl) {
  pxl.red = 255.0 - pxl.red;
  pxl.green = 255.0 - pxl.green;
  pxl.blue = 255.0 - pxl.blue;

  return pxl;
}

// https://www.dfstudios.co.uk/articles/programming/


keep away from) / (法律上)〈抗弁など〉\'を\'無効にする'],
  ['avoidable', '避けられる'],
  ['avoidance', '(…を)避けること,(…の)回避《+『of』+『名』(do『ing』)》'],
  ['avoirdupois', '=avoirdupois weight(《略》『avdp』)'],
  ['avoirdupois weight', '常衡(16オンスを1ポンドと定めた衡量;貴金属・宝石・薬品外のものの衡量用)'],
  ['Avon', 'エイボン川(イングランドの中部を流れる川) / エイボン(イングランド中部の州)'],
  ['avouch', '…\'を\'公然と認める,公言する,断言する'],
  ['avow', '…\'を\'率直に言う,率直に認める'],
  ['avowal', '公言,言明'],
  ['avowed', '公言した,みずから認めた'],
  ['avuncular', 'おじ(uncle)の,おじらしい'],
  ['aw', '(抗議・嫌悪などを表して)おお,うわあ'],
  ['await', '〈人が〉…\'を\'『待つ』 / 〈物・事が〉〈人〉\'を\'待ちうける,待ちかまえる'],
  ['awake', '(…から)…‘の\'『目をさまさせる』,\'を\'起こす《+『名』+『from』+『名』》(wake) / 〈記憶・感情など〉\'を\'呼び起こす,喚起する / (…を)〈人〉‘に\'気づかせる,自覚させる《+『名』〈人〉+『to』+『名』》 / 目をさます / (周囲の事情などに)気がつく《+『to』+『名』》 / 『眠らずに』,『目がさめて』 / (…に)気づいている《+『to』+『名』》'],
  ['awaken', '=awake'],
  ['awakening', '(…に)目ざめること,気づくこと《+『to』+『名』》 / 目ざめさせる,目ざめつつある'],
  ['award', '《『award』+『名』〈人〉+『名』=『award』+『名』+『to』+『名』〈人〉》(審査して)〈人〉‘に\'〈賞など〉\'を\'『与える』,『授ける』 / 『賞』,『賞品』(prize) / (判事・調停者の)審判,裁定'],
  ['aware', '《補語にのみ用いて》『知っている』,『気づいている』,感づいている / 見聞の広い,世事に通じた'],
  ['awareness', '(…に)気づいていること《+『of』+『名』(do『ing,wh-節』)》,(…であることに)気づいていること《+『that節』》'],
  ['awash', '水面すれすれで,水をかぶって / 波にもまれて / 水面すれすれに / 波にもまれながら'],
  ['away', '(位置が)『離れて』,遠くに / (…から)不在で,るすで《+『from


FORMAT_COMPATIBILITY_TYPE = TexParameter(GL42.GL_IMAGE_FORMAT_COMPATIBILITY_TYPE)
        val BASE_LEVEL = TexParameter(GL12.GL_TEXTURE_BASE_LEVEL)
        val BORDER_COLOR = TexParameter(GL11.GL_TEXTURE_BORDER_COLOR)
        val COMPARE_MODE = TexParameter(GL14.GL_TEXTURE_COMPARE_MODE)
        val COMPARE_FUNC = TexParameter(GL14.GL_TEXTURE_COMPARE_FUNC)
        val IMMUTABLE_FORMAT = TexParameter(GL42.GL_TEXTURE_IMMUTABLE_FORMAT)
        val IMMUTABLE_LEVELS = TexParameter(GL43.GL_TEXTURE_IMMUTABLE_LEVELS)
        val LOD_BIAS = TexParameter(GL14.GL_TEXTURE_LOD_BIAS)
        val MAG_FILTER = TexParameter(GL11.GL_TEXTURE_MAG_FILTER)
        val MAX_LEVEL = TexParameter(GL12.GL_TEXTURE_MAX_LEVEL)
        val MAX_LOD = TexParameter(GL12.GL_TEXTURE_MAX_LOD)
        val MIN_FILTER = TexParameter(GL11.GL_TEXTURE_MIN_FILTER)
        val MIN_LOD = TexParameter(GL12.GL_TEXTURE_MIN_LOD)
        val SWIZZLE_R = TexParameter(GL33.GL_TEXTURE_SWIZZLE_R)
        val SWIZZLE_G = TexParameter(GL33.GL_TEXTURE_SWIZZLE_G)
        val SWIZZLE_B = TexParameter(GL33.GL_TEXTURE_SWIZZLE_B)
        val SWIZZLE_A = TexParameter(GL33.GL_TEXTURE_SWIZZLE_A)
        val SWIZZLE_RGBA = TexParameter(GL33.GL_TEXTURE_SWIZZLE_RGBA)
        val TARGET = TexParameter(GL45.GL_TEXTURE_TARGET)
        val VIEW_MIN_LAYER = TexParameter(GL43.GL_TEXTURE_VIEW_MIN_LAYER)
        val VIEW_MIN_LEVEL = TexParameter(GL43.GL_TEXTURE_VIEW_MIN_LEVEL)
        val VIEW_NUM_LAYERS = TexParameter(GL43.GL_TEXTURE_VIEW_NUM_LAYERS)
        val VIEW_NUM_LEVELS = TexParameter(GL43.GL_TEXTURE_VIEW_NUM_LEVELS)
        val WRAP_S = TexParameter(GL11.GL_TEXTURE_WRAP_S)
        val WRAP_T = TexParameter(GL11.GL_TEXTURE_WRAP_T)
        val WRAP_R = TexParameter(GL12.GL_TEXTURE_WRAP_R)
    }
}

@JvmInline
value class SamplerParameter(val i: Int) {
    companion object {
        val BORDER_COLOR = SamplerParameter(GL11.GL_TEXTURE_BORDER_COLOR)
        val COMPARE_MODE = SamplerParameter(GL14.GL_TEXTURE_COMPARE_MODE)
        val COMPARE_FUNC = SamplerParameter(GL14.GL_TEXTURE_COMPARE_FUNC)
        val LOD_BIAS = SamplerParameter(GL14.GL_TEXTURE_LOD_BIAS)
        val MAG_FILTER = SamplerParameter(GL11.GL_TEXTURE_MAG_FILTER)
        val MAX_LOD = SamplerParameter(GL12.GL_TEXTURE_MAX_LOD)
        val MIN_FILTER = SamplerParameter(GL11.GL_TEXTURE_MIN_FILTER)
        val MIN_LOD = SamplerParameter(GL12.GL_TEXTURE_MIN_LOD)
        val WRAP_S = SamplerParameter(GL11.GL_TEXTURE_WRAP_S)
        val WRAP_T = SamplerParameter(GL11.GL_TEXTURE_WRAP_T)
        val WRAP_R = SamplerParameter(GL12.GL_TEXTURE_WRAP_R)
    }
}

//###############################################################################

@JvmInline
value class HintMode(val i: Int) {
    companion object {
        val DONT_CARE = HintMode(GL11.GL_


ck(edje_obj, rects[0], 0, 0, 1, 2))
     fprintf(stderr, "Cannot add the rectangle 1 to table\n");

   if (!codegen_example_part_four_pack(edje_obj, rects[1], 0, 1, 1, 1))
     fprintf(stderr, "Cannot add the rectangle 2 to table\n");

   if (!codegen_example_part_four_pack(edje_obj, rects[2], 1, 0, 1, 1))
     fprintf(stderr, "Cannot add the rectangle 3 to table\n");

   if (!codegen_example_part_four_pack(edje_obj, rects[3], 1, 1, 1, 1))
     fprintf(stderr, "Cannot add the rectangle 4 to table\n");

   _columns_rows_print(edje_obj);
   ecore_evas_show(ee);

   ecore_main_loop_begin();

   ecore_evas_free(ee);
   ecore_evas_shutdown();
   edje_shutdown();

   return EXIT_SUCCESS;

 shutdown_edje:
   edje_shutdown();
 shutdown_ecore_evas:
   ecore_evas_shutdown();

   return EXIT_FAILURE;
}


0070FB
/* 00C70 80B5C420 0C042DA0 */  jal     func_8010B680
/* 00C74 80B5C424 00003025 */  or      $a2, $zero, $zero          ## $a2 = 00000000
.L80B5C428:
/* 00C78 80B5C428 92020208 */  lbu     $v0, 0x0208($s0)           ## 00000208
.L80B5C42C:
/* 00C7C 80B5C42C 24010007 */  addiu   $at, $zero, 0x0007         ## $at = 00000007
/* 00C80 80B5C430 14410003 */  bne     $v0, $at, .L80B5C440
/* 00C84 80B5C434 8FB00014 */  lw      $s0, 0x0014($sp)
/* 00C88 80B5C438 10000002 */  beq     $zero, $zero, .L80B5C444
/* 00C8C 80B5C43C 24030001 */  addiu   $v1, $zero, 0x0001         ## $v1 = 00000001
.L80B5C440:
/* 00C90 80B5C440 00001825 */  or      $v1, $zero, $zero          ## $v1 = 00000000
.L80B5C444:
/* 00C94 80B5C444 8FBF001C */  lw      $ra, 0x001C($sp)
/* 00C98 80B5C448 8FB10018 */  lw      $s1, 0x0018($sp)
/* 00C9C 80B5C44C 27BD0020 */  addiu   $sp, $sp, 0x0020           ## $sp = 00000000
/* 00CA0 80B5C450 03E00008 */  jr      $ra
/* 00CA4 80B5C454 00601025 */  or      $v0, $v1, $zero            ## $v0 = 00000000


 to zero.
 *
 * @receiver Date/time string in RFC3339 format
 * @throws NumberFormatException if `str` doesn't match the RFC3339 standard format; an
 * exception is thrown if `str` doesn't match `Rfc3339Pattern` or if it contains a time zone shift but no time.
 */
// Magic numbers accepted as very much linked to the pattern
@Suppress("MagicNumber")
internal fun String.toRfc3339Long(): Long {
    val results = Rfc3339Pattern.matchEntire(this) ?: throw NumberFormatException("Invalid RFC3339 date/time format: $this")

    val year = results.groupValues[1].toInt() // yyyy
    val month = results.groupValues[2].toInt() - 1 // MM
    val day = results.groupValues[3].toInt() // dd
    val isTimeGiven = results.groupValues[4].isNotEmpty() // 'T'HH:mm:ss.milliseconds
    val tzShiftRegexGroup = results.groupValues[9] // 'Z', or time zone shift HH:mm following '+'/'-'
    val isTzShiftGiven = tzShiftRegexGroup.isNotEmpty()
    var hourOfDay = 0
    var minute = 0
    var second = 0
    var milliseconds = 0

    if (isTzShiftGiven && !isTimeGiven) {
        throw NumberFormatException("Invalid RFC33339 date/time format, cannot specify time zone shift without specifying time: $this")
    }

    if (isTimeGiven) {
        hourOfDay = results.groupValues[5].toInt() // HH
        minute = results.groupValues[6].toInt() // mm
        second = results.groupValues[7].toInt() // ss
        if (results.groupValues[8].isNotEmpty()) { // contains .milliseconds?
            milliseconds = results.groupValues[8].substring(1).toInt() // milliseconds
            // The number of digits after the dot may not be 3. Need to renormalize.
            val fractionDigits = results.groupValues[8].substring(1).length - 3
            milliseconds = (milliseconds.toDouble() / 10.0.pow(fractionDigits.toDouble())).toInt()
        }
    }
    val dateTime = GregorianCalendar(GMT)
    dateTime.set(year, month, day, hourOfDay, minute, second)
    dateTime.set(Calendar.MILLISECOND, milliseconds)
    var value = dateTime.timeInMillis

    if (isTimeGiven && isTzShiftGiven) {
        if (tzShiftRegexGroup[0].toUpperCase() != 'Z') {
            var tzShift = (results.groupValues[11].toInt() * 60 + // time zone shift HH
                    results.groupValues[12].toInt()) // time zone shift mm
            if (results.groupValues[10][0] == '-') { // time zone shift + or -
                tzShift = -tzShift
            }
            value -= tzShift * 60000L // e.g. if 1 hour ahead of UTC, subtract an hour to get UTC time
        }
    }

    return value
}
/*
 * Copyright 2019 Babylon Partners Limited
 *
 * 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.
 */

package com.babylon.certificatetransparency.internal.verifier

import com.babylon.certificatetransparency.CTLogger
import com.babylon.certificatetransparency.CTPolicy
import com.babylon.certificatetransparency.VerificationResult
import com.babylon.certificatetransparency.cache.DiskCache
import com.babylon.certificatetransparency.chaincleaner.CertificateChainCleanerFactory
import com


\u515a\u8bb2\u8bdd\uff0c\u6076\u6bd2\u653b\u51fb\u674e\u5148\u5ff5\u526f\u603b\u7406\u2026\u2026\uff0857\uff09", "type": "paragraph"}, {"text": "\u7b2c\u4e09\u90e8\u5206\t\u590f\u3001\u6731\u3001\u80e1\u7b49\u4eba\u81ea\u6210\u4f53\u7cfb\uff0c\u53e6\u641e\u4e00\u5957\uff0c\u9634\u8c0b\u7be1\u593a\u6211\u7701\u5404\u7ea7\u9886\u5bfc\u6743\u7684\u7f6a\u8bc1\u2026 \uff0858\uff09", "type": "subtitle"}, {"text": "\u4e00\u3001\u81ea\u6210\u4f53\u7cfb\uff0c\u53e6\u7acb\u4e2d\u5fc3\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026 \uff0859\uff09", "type": "subtitle"}, {"text": "1.\u590f\u3001\u8c22\u3001\u6731\u3001\u80e1\u7b49\u4eba\u4ee5\u201c\u4e2d\u592e\u59d4\u5458\u201d\u3001\u201c\u7701\u5e02\u9769\u59d4\u4f1a\u90e8\u5206\u6210\u5458\u201d\u7684\u540d\u4e49\u6563\u53d1\u7684\u4f20\u5355\u8282\u5f55\u2026  \uff0859\uff09", "type": "paragraph"}, {"text": "2.\u6731\u9e3f\u971e\u5173\u4e8e\u81ea\u6210\u4f53\u7cfb\uff0c\u53e6\u7acb\u4e2d\u5fc3\u7684\u4ea4\u4ee3\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\uff0860\uff09", "type": "paragraph"}, {"text": "3.\u590f\u90a6\u94f6\u4eb2\u7b14\u8bb0\u5f55\u7684\u201c\u4eba\u5458\u5206\u5de5\u201d\u539f\u6587\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\uff0861\uff09", "type": "paragraph"}, {"text": "4.\u5b59\u539a\u667a\u5173\u4e8e\u201c\u78b0\u5934\u4f1a\u201d\u201c\u4eba\u5458\u5206\u5de5\u201d\u7684\


    pretty_env_logger::init();

    // For this example, we assume no DNS was used,
    // so the Host header should be an address.
    let host = warp::header::<SocketAddr>("host");

    // Match when we get `accept: */*` exactly.
    let accept_stars = warp::header::exact("accept", "*/*");

    let routes = host.and(accept_stars)
        .map(|addr| {
            format!("accepting stars on {}", addr)
        });

    warp::serve(routes)
        .run(([127, 0, 0, 1], 3030));
}

<gh_stars>10-100
use cosmwasm_std::{Addr, Coin, Decimal, Uint128};
use cw20::Cw20Contract;

use terra_multi_test::{App, ContractWrapper};
use terraswap::asset::AssetInfo;

use crate::tests::integration_tests::common_integration::{
    init_contracts, mint_some_whale, mock_app,
};
use astroport::pair::PoolResponse;
use terra_multi_test::Executor;
use white_whale::dapps::astroport::msg::ExecuteMsg;
use white_whale::memory::msg as MemoryMsg;
use white_whale::treasury::dapp_base::common_test::TEST_CREATOR;
use white_whale::treasury::msg as TreasuryMsg;

use white_whale::treasury::dapp_base::msg::BaseInstantiateMsg as InstantiateMsg;

use super::common_integration::{whitelist_dapp, BaseContracts};
const MILLION: u64 = 1_000_000u64;

fn init_astroport_dapp(app: &mut App, owner: Addr, base_contracts: &BaseContracts) -> Addr {
    // Upload astroport DApp Contract
    let astro_dapp_contract = Box::new(ContractWrapper::new(
        crate::contract::execute,
        crate::contract::instantiate,
        crate::contract::query,
    ));

    let astro_dapp_code_id = app.store_code(astro_dapp_contract);

    let astro_dapp_instantiate_msg = InstantiateMsg {
        trader: owner.to_string(),
        treasury_address: base_contracts.treasury.to_string(),
        memory_addr: base_contracts.memory.to_string(),
    };

    // Init contract
    let astro_dapp_instance = app
        .instantiate_contract(
            astro_dapp_code_id,
            owner.clone(),
            &astro_dapp_instantiate_msg,
            &[],
            "astro_dapp",
            None,
        )
        .unwrap();

    whitelist_dapp(app, &owner, &base_contracts.treasury, &astro_dapp_instance);
    astro_dapp_instance
}

#[test]
fn proper_initialization() {
    let mut app = mock_app();
    let sender = Addr::unchecked(TEST_CREATOR);
    let base_contracts = init_contracts(&mut app);
    let astro_dapp = init_astroport_dapp(&mut app, sender.clone(), &base_contracts);

    let resp: TreasuryMsg::ConfigResponse = app
        .wrap()
        .query_wasm_smart(&base_contracts.treasury, &TreasuryMsg::QueryMsg::Config {})
        .unwrap();

    // Check config, astro dapp is added
    assert_eq!(1, resp.dapps.len());

    // Add whale and whale_ust token to the memory assets
    // Is tested on unit-test level
    app.execute_contract(
        sender.clone(),
        base_contracts.memory.clone(),
        &MemoryMsg::ExecuteMsg::UpdateAssetAddresses {
            to_add: vec![
                (
                    "whale".to_string(),
                    AssetInfo::Token {
                        contract_addr: base_contracts.whale.to_string(),
                    },
                ),
                (
                    "whale_ust".to_string(),
                    AssetInfo::T


00FB1E0_ovl2:
/* 083C50 800FB1E0 3C014100 */  li    $at, 0x41000000 # 8.000000
/* 083C54 800FB1E4 44810000 */  mtc1  $at, $f0
/* 083C58 800FB1E8 3C014080 */  li    $at, 0x40800000 # 4.000000
/* 083C5C 800FB1EC 44811000 */  mtc1  $at, $f2
/* 083C60 800FB1F0 3C068013 */  lui   $a2, %hi(D_801293B4) # $a2, 0x8013
/* 083C64 800FB1F4 3C088013 */  lui   $t0, %hi(D_801293CC) # $t0, 0x8013
/* 083C68 800FB1F8 3C098013 */  lui   $t1, %hi(D_801293C8) # $t1, 0x8013
/* 083C6C 800FB1FC 3C0A8013 */  lui   $t2, %hi(D_801293B8) # $t2, 0x8013
/* 083C70 800FB200 254A93B8 */  addiu $t2, %lo(D_801293B8) # addiu $t2, $t2, -0x6c48
/* 083C74 800FB204 252993C8 */  addiu $t1, %lo(D_801293C8) # addiu $t1, $t1, -0x6c38
/* 083C78 800FB208 250893CC */  addiu $t0, %lo(D_801293CC) # addiu $t0, $t0, -0x6c34
/* 083C7C 800FB20C 24C693B4 */  addiu $a2, %lo(D_801293B4) # addiu $a2, $a2, -0x6c4c
/* 083C80 800FB210 3C028005 */  lui   $v0, %hi(gPlayerControllers) # $v0, 0x8005
/* 083C84 800FB214 E4C00000 */  swc1  $f0, ($a2)
/* 083C88 800FB218 E5400000 */  swc1  $f0, ($t2)
/* 083C8C 800FB21C E5000000 */  swc1  $f0, ($t0)
/* 083C90 800FB220 E4A20000 */  swc1  $f2, ($a1)
/* 083C94 800FB224 E5220000 */  swc1  $f2, ($t1)
/* 083C98 800FB228 94428F20 */  lhu   $v0, %lo(gPlayerControllers)($v0)
/* 083C9C 800FB22C 00001825 */  move  $v1, $zero
/* 083CA0 800FB230 304F0100 */  andi  $t7, $v0, 0x100
/* 083CA4 800FB234 11E00002 */  beqz  $t7, .L800FB240_ovl2
/* 083CA8 800FB238 30580200 */   andi  $t8, $v0, 0x200
/* 083CAC 800FB23C 24030001 */  li    $v1, 1
.L800FB240_ovl2:
/* 083CB0 800FB240 13000002 */  beqz  $t8, .L800FB24C_ovl2
/* 083CB4 800FB244 304E0800 */   andi  $t6, $v0, 0x800
/* 083CB8 800FB248 2463FFFF */  addiu $v1, $v1, -1
.L800FB24C_ovl2:
/* 083CBC 800FB24C 11C00002 */  beqz  $t6, .L800FB258_ovl2
/* 083CC0


];

  const monthUpdated = monthToUpdate.map((monthElement) => {
    if (monthElement.day === chosenDay) {
      // caso já foi agendado o máximo do dia
      if (
        monthElement.click >= total_people ||
        monthElement.status === "unavailable"
      ) {
        Object.assign(monthElement, {
          status: "unavailable",
        });
        return monthElement;
      }

      // caso resta horários disponíveis
      if (monthElement.click < total_people) {
        Object.assign(monthElement, {
          click: monthElement.click + 1,
        });

        // se for o único, marca como encerrado após o agendamento
        if (monthElement.click === total_people) {
          Object.assign(monthElement, {
            status: "unavailable",
          });
        }
      }
    }

    return monthElement;
  });

  return JSON.stringify(monthUpdated, null, 2);
}

export { updateChosenMonth };
import * as PIXI from 'pixi.js';
// 4-point gradient filter immitating lighting

export class GradientLightingFilter extends PIXI.Filter {
    constructor() {
        const gradShaderVert: string = `
        attribute vec2 aVertexPosition;
        attribute vec2 aTextureCoord;

        uniform mat3 projectionMatrix;

        varying vec2 vTextureCoord;

        void main(void)
        {
            gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);

            vTextureCoord = aTextureCoord;
        }`;

        const gradShaderFrag: string = `
        precision highp float;

        varying vec2 vTextureCoord;

        uniform sampler2D uSampler;
        uniform vec4 color0;
        uniform vec4 color1;
        uniform vec4 color2;
        uniform vec4 color3;
        uniform float c0pos;
        uniform float c1pos;
        uniform float c2pos;
        uniform float c3pos;
        uniform float minReflection;
        uniform float reflectionCoef;
        uniform float avgBrightness;
        void main() {
            vec4 texture = texture2D(uSampler, vTextureCoord);

            vec4 colorA;
            vec4 colorB ;
            float mixValue;
            float dist = vTextureCoord.y - c3pos;
            if(dist >= 0.0){
                colorA = color3;
                colorB = color3;
                mixValue = 1.0;
            }else{
                dist = vTextureCoord.y - c2pos;
                if(dist >= 0.0){
                    colorA = color2;
                    colorB = color3;
                    mixValue = dist/(c3pos - c2pos);
                }else{
                    dist = vTextureCoord.y - c1pos;
                    if(dist >= 0.0){
                        colorA = color1;
                        colorB = color2;
                        mixValue = dist/(c2pos - c1pos);
                    }else{
                        dist = vTextureCoord.y - c0pos;
                        if(dist >= 0.0){
                            colorA = color0;
                            colorB = color1;
                            mixValue = dist/(c1pos - c0pos);
                        }else{
                            colorA = color0;
                            colorB = color0;


应；再调整",
"re-orientate":"vt. 使重定向",
"re-orientated":"(re-orientate 的过去分词) vt. 使重定向",
"re-orientating":"(re-orientate 的现在分词) vt. 使重定向",
"re-orientation":" [医]重新定向",
"re-oriented":"(re-orient 的过去分词) vt. 使适应；再调整",
"re-package":"vt. 重新包装；重新装配",
"re-packaged":"(re-package 的过去分词) vt. 重新包装；重新装配",
"re-paint":"vt. 重画；重新绘制；重漆\\nn. 重新油漆的东西；重画的画",
"re-painted":"(re-paint 的过去分词) vt. 重画；重新绘制；重漆\\nn. 重新油漆的东西；重画的画",
"re-painting":"(re-paint 的现在分词) vt. 重画；重新绘制；重漆\\nn. 重新油漆的东西；重画的画",
"re-pair":"vi. 修理；修复\\nvt. 修理；恢复；补救, 纠正\\nn. 修理, 修补；修补部位",
"re-pairs":"(re-pair 的第三人称 -s形式) vi. 修理；修复\\nvt. 修理；恢复；补救, 纠正\\nn. 修理, 修补；修补部位",
"re-pass":"vi. 再经过；重新通过\\nvt. 再通过；再经过",
"re-passed":"(re-pass 的过去时) vi. 再经过；重新通过\\nvt. 再通过；再经过",
"re-people":"移民于…",
"re-peopled":"(re-people 的过去分词) 移民于…",
"re-petition":"n. 重复；背诵；副本",
"re-petitioner":"[网络] 再请愿者",
"re-photograph":"景或物的再次拍摄",
"re-photographed":"(re-photograph 的过去分词) 景或物的再次拍摄",
"re-photographing":"(re-photograph 的现在分词) 景或物的再次拍摄",
"re-phrase":"vt. 改述；重新措辞",
"re-phrased":"(re-phrase 的过去分词) vt. 改述；重新措辞",
"re-phrasing":"(re-phrase 的现在分词) vt. 改述；重新措辞",
"re-place":"vt. 取代, 代替；替换, 更换；归还, 偿还；把…放回原处",
"re-placed":"(re-place 的过去分词) vt. 取代, 代替；替换, 更换；归还, 偿还；把…放回原处",
"re-placing":"(re-place 的现在分词) vt. 取代


  _mem_chan.offsetDir = FLAGS1_OFFSET_MINUS
            _mem_chan.offset = _mem_chan.freq
        # set band

#        _mem_attr.is_free = 0
        _mem_attr.band = band

        # channels >200 are the 14 VFO chanells and don't have names
        if number < 200:
            _mem_chname = self._memobj.channelname[number]
            tag = memory.name.ljust(10) + "\x00"*6
            _mem_chname.name = tag  # Store the alpha tag

        # tone data
        self._set_tone(memory, _mem_chan)

        # step
        _mem_chan.step = STEPS.index(memory.tuning_step)

        # tx power
        if str(memory.power) == str(UVK5_POWER_LEVELS[2]):
            _mem_chan.txpower = POWER_HIGH
        elif str(memory.power) == str(UVK5_POWER_LEVELS[1]):
            _mem_chan.txpower = POWER_MEDIUM
        else:
            _mem_chan.txpower = POWER_LOW

        # -------- EXTRA SETTINGS

        def get_setting(name, def_val):
            if name in memory.extra:
                return int(memory.extra[name].value)
            return def_val

        _mem_chan.busyChLockout = get_setting("busyChLockout", False)
        _mem_chan.dtmf_pttid = get_setting("pttid", 0)
        _mem_chan.freq_reverse = get_setting("frev", False)
        _mem_chan.dtmf_decode = get_setting("dtmfdecode", False)
        _mem_chan.scrambler = get_setting("scrambler", 0)
        _mem_attr.compander = get_setting("compander", 0)
        if number < 200:
            tmp_val = get_setting("scanlists", 0)
            _mem_attr.is_scanlistx = tmp_val

        return memory


"1F3FC": {
				unified: "1F6B4-1F3FC",
				non_qualified: null,
				image: "1f6b4-1f3fc.png",
				sheet_x: 35,
				sheet_y: 25,
				added_in: "2.0",
				has_img_apple: true,
				has_img_google: true,
				has_img_twitter: true,
				has_img_facebook: false
			},
			"1F3FD": {
				unified: "1F6B4-1F3FD",
				non_qualified: null,
				image: "1f6b4-1f3fd.png",
				sheet_x: 35,
				sheet_y: 26,
				added_in: "2.0",
				has_img_apple: true,
				has_img_google: true,
				has_img_twitter: true,
				has_img_facebook: false
			},
			"1F3FE": {
				unified: "1F6B4-1F3FE",
				non_qualified: null,
				image: "1f6b4-1f3fe.png",
				sheet_x: 35,
				sheet_y: 27,
				added_in: "2.0",
				has_img_apple: true,
				has_img_google: true,
				has_img_twitter: true,
				has_img_facebook: false
			},
			"1F3FF": {
				unified: "1F6B4-1F3FF",
				non_qualified: null,
				image: "1f6b4-1f3ff.png",
				sheet_x: 35,
				sheet_y: 28,
				added_in: "2.0",
				has_img_apple: true,
				has_img_google: true,
				has_img_twitter: true,
				has_img_facebook: false
			}
		},
		obsoleted_by: "1F6B4-200D-2642-FE0F",
		a: "Bicyclist",
		b: "1F6B4",
		d: true,
		e: true,
		f: true,
		h: false,
		k: [
			35,
			23
		],
		o: 2
	},
	"flag-scotland": {
		a: "Scotland Flag",
		b: "1F3F4-E0067-E0062-E0073-E0063-E0074-E007F",
		d: true,
		e: true,
		f: true,
		h: true,
		k: [
			11,
			15
		],
		o: 5
	},
	"flag-wales": {
		a: "Wales Flag",
		b: "1F3F4-E0067-E0062-E0077-E006C-E0073-E007F",
		d: true,
		e: true,
		f: true,
		h: true,
		k: [
			11,
			16
		],
		o: 5
	},
	"man-biking": {
		skin_variations: {
			"1F3FB": {
				unified: "1F6B4-1F3FB-200D-2642-FE0F",
				non_qualified: "1F6B4-1F3FB-200D-2642",
				image: "1f6b4-1f3fb-200d-2642-fe0f.png",
				sheet_x: 35,
				sheet_y: 18,
				added_in: "4.0",
				has_img_apple: true,
				has_img_google: true,
				has_img_twitter: true,
				has_img_facebook: true
			},
			"1F3FC": {
				unified: "1F6B4-1F3FC-200D-2642-FE0F",
				non_


 nx_loc)] + Earray[j]) +
        cy * (uarray[IDX(i, j - 1, nx_loc)] + Narray[i]);
    }
  }

  // South face (excludes corners)
  if (udata->HaveNbrS)
  {
    j = 0;
    for (i = 1; i < nx_loc - 1; i++)
    {
      farray[IDX(i, j, nx_loc)] +=
        cc * uarray[IDX(i, j, nx_loc)] +
        cx * (uarray[IDX(i - 1, j, nx_loc)] + uarray[IDX(i + 1, j, nx_loc)]) +
        cy * (Sarray[i] + uarray[IDX(i, j + 1, nx_loc)]);
    }
  }

  // North face (excludes corners)
  if (udata->HaveNbrN)
  {
    j = udata->ny_loc - 1;
    for (i = 1; i < nx_loc - 1; i++)
    {
      farray[IDX(i, j, nx_loc)] +=
        cc * uarray[IDX(i, j, nx_loc)] +
        cx * (uarray[IDX(i - 1, j, nx_loc)] + uarray[IDX(i + 1, j, nx_loc)]) +
        cy * (uarray[IDX(i, j - 1, nx_loc)] + Narray[i]);
    }
  }

  // Stop timer
  double t2 = MPI_Wtime();

  // Update timer
  udata->rhstime += t2 - t1;

  // Return success
  return 0;
}

// Jacobian-vector product function
static int JTimes(N_Vector v, N_Vector Jv, sunrealtype t, N_Vector y,
                  N_Vector fy, void* user_data, N_Vector tmp)
{
  int flag;

  // Start timer
  double t1 = MPI_Wtime();

  // Access problem data
  UserData* udata = (UserData*)user_data;

  // Insert input N_Vector entries into HYPRE vector and assemble
  flag = HYPRE_StructVectorSetBoxValues(udata->vvec, udata->ilower,
                                        udata->iupper, N_VGetArrayPointer(v));
  if (flag != 0) { return -1; }

  flag = HYPRE_StructVectorAssemble(udata->vvec);
  if (flag != 0) { return -1; }

  // Initialize output HYPRE vector and assemble
  flag = HYPRE_StructVectorSetConstantValues(udata->Jvvec, ZERO);
  if (flag != 0) { return -1; }

  flag = HYPRE_StructVectorAssemble(udata->Jvvec);
  if (flag != 0) { return -1; }

  // Compute the matrix-vector product
  flag = HYPRE_StructMatrixMatvec(ONE, udata->Jmatrix, udata->vvec, ZERO,
                                  udata->Jvvec);
  if (flag != 0) { return -1; }

  // Extract matrix-vector product values
  flag = HYPRE_StructVectorGetBoxValues(udata->Jvvec, udata->ilower,
                                        udata->iupper, N_VGetArrayPointer(Jv));
  if (flag != 0) { return -1; }

  // Stop timer
  double t2 = MPI_Wtime();

  // Update timer
  udata->jvtime += t2 - t1;

  // Return success
  return 0;
}

// Preconditioner setup routine
static int PSetup(sunreal


time-txt-box").innerHTML = "Loading..." fetch("/cdn-cgi/trace").then((res) => res.text()).then((txt) => { let ts = txt.match(/ts=([0-9\.]+)/)[1] let str = new Date(parseFloat(ts) * 1000) document.getElementById("time-txt-box").innerHTML = str }) .catch((err) => { console.log(err) document.getElementById("time-txt-box").innerHTML = "Request failed." }) }

Get Time!

Subscribe to the blog for daily updates on our announcements.

6 min read

Cloudflare employs more than 1,200 people in 13 different offices and maintains a network that operates in 200 cities. To do that, we used to suffer through a traditional corporate VPN that backhauled traffic through a physical VPN appliance. It was, frankly, horrible to work with as a user or IT person.

With today’s mix of on-prem, public cloud and SaaS and a workforce that needs to work from anywhere, be it a coffee shop or home, that model is no longer sustainable. As we grew in headcount, we were spending too much time resolving VPN helpdesk tickets. As offices around the world opened, we could not ask our workforce to sit as every connection had to go back through a central location.

We also had to be ready to scale. We could not let a single physical appliance constrain our ability to deliver 26M Internet properties to audiences around the world.

To run a network like Cloudflare, we needed to use Cloudflare’s network to stay fast and secure.

We built Cloudflare Access, part of Cloudflare for Teams, as an internal project several years ago to start replacing our VPN with a faster, safer, alternative that made internal applications, no matter where they live ,seamless for our users.

To address the scale challenge, we built Cloudflare Access to run on Workers, Cloudflare’s serverless platform. Each data center in the Cloudflare network becomes a comprehensive identity proxy node, giving us the scale to stay productive from any location - and to do it for our customers as well.

Over the last two years, we’ve continued to expand its feature set by prioritizing the use cases we had to address to remove our reliance on a VPN. We’re excited to help customers stay online and productive with the same tools and services we use to run Cloudflare.

How does Cloudflare Access work?

			<svg width="16" height="16" viewBox="0 0 24 24">
				<path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88


State.danceState != DV_TURN_R) {
                    val sprite = bccad.sprites[currentStep.spriteIndex.toInt()]
                    val part = sprite.parts.last()
                    vocalistFaceState.danceState.vocalist.render(batch, sheet, bccad.sprites, (currentFrame - vocalistFaceState.startFrame).coerceIn(0, vocalistFaceState.danceState.durationFrames), x + part.regionW.toInt() / 2f + (part.posX - 512f) + stageX, y - (part.posY - 512f) - (part.regionH.toInt() / 2f) + stageY)
                }
            }
            run {
                val x = camera.viewportWidth / 2 + 38f
                val y = 48f
                val currentAnimation = vocalistState.danceState.lead
                val frame = (currentFrame - leadState.startFrame).coerceIn(0, leadState.danceState.durationFrames - 1)
                val currentStep = currentAnimation.render(batch, sheet, bccad.sprites, frame, x + stageX, y + stageY)
                if (currentStep != null && leadState.danceState != D_TURN_L && leadState.danceState != D_TURN_R) {
                    val sprite = bccad.sprites[currentStep.spriteIndex.toInt()]
                    val part = sprite.parts.last()
                    leadFaceState.danceState.lead.render(batch, sheet, bccad.sprites, (currentFrame - leadFaceState.startFrame).coerceIn(0, leadFaceState.danceState.durationFrames), x + part.regionW.toInt() / 2f + (part.posX - 512f) + stageX, y - (part.posY - 512f) - (part.regionH.toInt() / 2f) + stageY)
                }
            }

            microphone.render(batch, sheet, bccad.sprites, 0, camera.viewportWidth / 2 - 38f + stageX, 38f + stageY)
        }

        frontArea()

        batch.end()
        frameBuffer.begin()
        Gdx.gl.glClearColor(0f, 0f, 0f, 0f)
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT)
        batch.begin()
        batch.setBlendFunction(GL20.GL_ONE, GL20.GL_ONE)
        frontArea()
        batch.flush()
        batch.end()
        frameBuffer.end()
        batch.begin()
        batch.setBlendFunction(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA)

        if (lightingOnFront) {
            // Set up blending for lights
            batch.setColor(0f, 0f, 0f, 0.5f)
            batch.fillRect(0f, 0f, camera.viewportWidth, camera.viewportHeight)
            batch.setColor(1f, 1f, 1f, 1f)
            batch.flush()
            batch.setBlendFunction(GL20.GL_DST_COLOR, GL20.GL_SRC_ALPHA)
            val lightsRegion = twoLightsRegion
            batch.draw(lightsRegion, camera.viewportWidth / 2 - lightsRegion.regionWidth / 2 + stageX, camera.viewportHeight - lightsRegion.regionHeight + 28f + stageY)
            batch.setBlendFunction(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA)
        } else {
            batch.setColor(0f, 0f, 0f, 0.5f)
            batch.draw(frameBuffer.colorBufferTexture, 0f, 0f, frameBuffer.width.toFloat(), frameBuffer.height.toFloat(), 0, 0, frameBuffer.width, frameBuffer.height, false, true)
            batch.setColor(1f, 1f, 1f, 1f)
        }

        val font = main.defaultFont
        font.scaleFont()
        font.setColor(0f, 0f, 0f, 1f)

        // kururin
        if (


() or pread() to avoid iovec allocation and copying.
		dst := dsts.Head()
		if offset == -1 {
			n, _, e = unix.Syscall(unix.SYS_READ, uintptr(fd), dst.Addr(), uintptr(dst.Len()))
		} else {
			n, _, e = unix.Syscall6(unix.SYS_PREAD64, uintptr(fd), dst.Addr(), uintptr(dst.Len()), uintptr(offset), 0 /* pos_h */, 0 /* unused */)
		}
	} else {
		n, e = iovecsReadWrite(unix.SYS_PREADV2, fd, safemem.IovecsFromBlockSeq(dsts), offset, flags)
	}
	if e != 0 {
		return 0, e
	}
	if n == 0 {
		return 0, io.EOF
	}
	return uint64(n), nil
}

// Pwritev2 writes up to srcs.NumBytes() from srcs into host file descriptor
// fd. offset and flags are interpreted as for pwritev2(2).
//
// Preconditions: !srcs.IsEmpty().
func Pwritev2(fd int32, srcs safemem.BlockSeq, offset int64, flags uint32) (uint64, error) {
	// No buffering is necessary regardless of safecopy; host syscalls will
	// return EFAULT if appropriate, instead of raising SIGBUS.
	var (
		n uintptr
		e unix.Errno
	)
	if flags == 0 && srcs.NumBlocks() == 1 {
		// Use write() or pwrite() to avoid iovec allocation and copying.
		src := srcs.Head()
		if offset == -1 {
			n, _, e = unix.Syscall(unix.SYS_WRITE, uintptr(fd), src.Addr(), uintptr(src.Len()))
		} else {
			n, _, e = unix.Syscall6(unix.SYS_PWRITE64, uintptr(fd), src.Addr(), uintptr(src.Len()), uintptr(offset), 0 /* pos_h */, 0 /* unused */)
		}
	} else {
		n, e = iovecsReadWrite(unix.SYS_PWRITEV2, fd, safemem.IovecsFromBlockSeq(srcs), offset, flags)
	}
	if e != 0 {
		return 0, e
	}
	return uint64(n), nil
}
// Copyright 2018 The gVisor Authors.
//
// 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.

package memmap

import (
	"slices"
	"testing"

	"gvisor.dev/gvisor/pkg/hostarch"
)

type testMappingSpace struct {
	// Ideally we'd store the full ranges that were invalidated, rather
	// than individual calls to Invalidate, as they are an implementation
	// detail, but this is the simplest way for now.
	inv []hostarch.AddrRange
}

func (n *testMappingSpace) reset() {
	n.inv = []hostarch.AddrRange{}
}

func (n *testMappingSpace) Invalidate(ar hostarch.AddrRange, opts InvalidateOpts) {
	n.inv = append(n.inv, ar)
}

func TestAddRemoveMapping(t *testing.T) {
	set := MappingSet{}
	ms := &testMappingSpace{}

	mapped := set.AddMapping(ms, hostarch.AddrRange{0x10000, 0x12000}, 0x1000, true)
	if got, want := mapped, []MappableRange{{0x1000, 0x3000}}; !slices.Equal(got, want) {
		t.Errorf("AddMapping: got %+v, wanted %+v", got, want)
	}

	// Mappings (hostarch.Addr


行inode本身的一些操作

   文件和进程的联系：`task_struct`结构中的files数组，包含所有的打开文件（file结构），文件描述符作为数组的索引，同时file对象总包含一个指针指向用于**加速查找操作的目录项缓存dentry对象**

<img src="D:\Tech\学习笔记\Linux学习笔记\image-20200618084630339.png" width="800">

2. **文件系统和超级块信息**

   超级块包含了文件系统的关键信息（块长度、最大文件长度等），还有读、写、操作inode的函数指针

   内核建立了一个链表，包含了**所有活动的文件系统超级块实例**

   超级块结构中包含一个列表，包含相关文件系统**所有修改过的inode**（*脏inode*），用于回写到存储介质（磁盘等）

#### 13.2.2 Unix文件系统

> 四个基本要素：文件、目录项、索引节点和安装点（挂载点）

* 目录项：路径中的每一部分都被称为目录条目，统称为目录项
* 索引节点：Unix系统将文件的相关信息和文件本身这两个概念加以区分（如访问控制权限、大小、创建时间等），文件的相关信息（文件的元数据信息）被存储在一个单独的数据结构，称为索引节点（inode）
* 超级块：是一种包含文件系统控制信息的数据结构，这些信息称为文件系统数据元

![img](https://static001.geekbang.org/resource/image/32/47/328d942a38230a973f11bae67307be47.png)

### 13.3 VFS对象及数据结构

VFS的四个对象类型：

* 超级块对象：代表具体的文件系统
* 索引节点对象：代表具体文件
* 目录项对象：代表目录项，是路径的一个组成部分
* 文件对象：代表进程打开的文件

**注意**：VFS将目录作为一个文件来处理，不存在目录对象；目录项不同于目录

> 每个对象中都包含一个操作对象，其中描述了内核针对主要对象可以使用的方法

* `super_operations`对象：内核针对特定文件系统调用的方法，如`write_inode(), sync_fs()`
* `inode_operations`对象：内核针对特定文件调用的方法，如`create(), link()`
* `dentry_operations`对象：内核针对特定目录项所能调用的方法，如`d_compare(), d_delete()`
* `file_operations`对


-toc-item md-toc-h2" data-ref="n301">饼图看板图甘特图用户旅程地图

关于脚本化

关于 Mermaid

Mermaid 是一个用于画流程图、状态机图、顺序图、甘特图的库，使用 JS 进行本地渲染，广泛集成于许多 Markdown 编辑器中。

前往 Mermaid 官网了解更多内容 ❯

关于 Markdown

 Markdown 是什么？

2004 年，John Gruber 创造了  Markdown，一种专门针对网络写作的 文本标记语言 。使用 Markdown，你只需在写作过程中插入少量的标记符号，就能很轻松地进行排版（例如设置标题、加粗、列表、引用块等）；

Markdown 文档以 纯文本格式存储 ，这意味着，它们可以用几乎任一种文本编辑器打开。同时，又能通过 Markdown 编辑器导出为带排版的富文本文档、HTML 网页等等。纯粹、简洁、易用、灵活，都是人们喜欢 Markdown 的原因；

目前 Markdown 的标准化项目是 CommonMark 。

60 秒学会、10 分钟深入学习 Markdown 语法

推荐 Github Flavored Markdown (GFM) 语法参考：Typora 目前采用该标准 详细；

标准化 <strong


, 23);

        Kulit.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Normal", "Abnormal", "Tidak Diperiksa" }));
        Kulit.setName("Kulit"); // NOI18N
        Kulit.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                KulitKeyPressed(evt);
            }
        });
        FormInput.add(Kulit);
        Kulit.setBounds(157, 940, 129, 23);

        KeteranganKulit.setFocusTraversalPolicyProvider(true);
        KeteranganKulit.setName("KeteranganKulit"); // NOI18N
        KeteranganKulit.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                KeteranganKulitKeyPressed(evt);
            }
        });
        FormInput.add(KeteranganKulit);
        KeteranganKulit.setBounds(289, 940, 160, 23);

        jLabel61.setText("Kepala :");
        jLabel61.setName("jLabel61"); // NOI18N
        FormInput.add(jLabel61);
        jLabel61.setBounds(0, 970, 153, 23);

        Kepala.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Normal", "Abnormal", "Tidak Diperiksa" }));
        Kepala.setName("Kepala"); // NOI18N
        Kepala.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                KepalaKeyPressed(evt);
            }
        });
        FormInput.add(Kepala);
        Kepala.setBounds(157, 970, 129, 23);

        KeteranganKepala.setFocusTraversalPolicyProvider(true);
        KeteranganKepala.setName("KeteranganKepala"); // NOI18N
        KeteranganKepala.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                KeteranganKepalaKeyPressed(evt);
            }
        });
        FormInput.add(KeteranganKepala);
        KeteranganKepala.setBounds(289, 970, 160, 23);

        jLabel62.setText("Mata :");
        jLabel62.setName("jLabel62"); // NOI18N
        FormInput.add(jLabel62);
        jLabel62.setBounds(0, 1000, 153, 23);

        Mata.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Normal", "Abnormal", "Tidak Diperiksa" }));
        Mata.setName("Mata"); // NOI18N
        Mata.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                MataKeyPressed(evt);
            }
        });
        FormInput.add(Mata);
        Mata.setBounds(157, 1000, 129, 23);

        KeteranganMata.setFocusTraversalPolicyProvider(true);
        KeteranganMata.setName("KeteranganMata"); // NOI18N
        KeteranganMata.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                KeteranganMataKeyPressed(evt);
            }
        });
        FormInput.add(KeteranganMata);
        KeteranganMata.setBounds(289, 1000, 160, 23);


{
                    for (int i = v2.Count - 1; i >= 0; i--)
                    {
                        if (v2[i].func2 == func)
                        {
                            v2.RemoveAt(i);
                        }
                    }
                }
            }
        }

        /// <summary>
        /// 清空指定事件
        /// </summary>
        /// <param name="key1">一级指令


2 f){return min(f.x,f.y);}float e(vec3 f){return min(min(f.x,f.y),f.z);}float g(vec3 f){return max(max(f.x,f.y),f.z);}vec3 h(inout vec3 i,vec3 j){vec3 k=floor((i+j*0.5)/j);i=mod(i+j*0.5,j)-j*0.5;return k;}float l(vec3 i,vec2 m){vec2 n=abs(vec2(length(i.xz),i.y))-m;return min(max(n.x,n.y),0.0)+length(max(n,0.0));}float o(vec3 i,vec3 p){return g(abs(i)-p);}float q(vec3 i,float r){return length(i)-r;}float s(vec3 t){return texture2D(mapT,vec2((t[2]+mapDim[2]*(t[1]+mapDim[1]*t[0])+0.5)/(mapDim[0]*mapDim[1]*mapDim[2]),0.5)).r;}vec3 u;vec2 v(vec3 i,float f,vec3 t){f*=2.;float w=floor(f);f-=w;f*=2.;float x=floor(f);f-=x;f*=2.;float y=floor(f);f-=y;f*=2.;float z=floor(f);f-=z;f*=2.;float A=floor(f);f-=A;f*=2.;float B=floor(f);float C=0.03*hurry;float D=0.18;float E=D;float F=0.3;i-=C*u;float r=q(i,E);r=mix(r,b(r,l(i-vec3(0.0,0.25,0.0),vec2(D,0.25))),y);r=mix(r,b(r,l(i-vec3(0.0,-0.25,0.0),vec2(D,0.25))),z);r=mix(r,b(r,l(i.yxz-vec3(0.0,-0.25,0.0),vec2(D,0.25))),x);r=mix(r,b(r,l(i.yxz-vec3(0.0,0.25,0.0),vec2(D,0.25))),w);r=mix(r,b(r,l(i.yzx-vec3(0.0,0.25,0.0),vec2(D,0.25))),A);r=mix(r,b(r,l(i.yzx-vec3(0.0,-0.25,0.0),vec2(D,0.25))),B);return vec2(r,0.99*smoothstep(0.6,0.3,length((i+t-marble)/mapDim)));}vec2 G(vec3 i){float H=o(i-mapDim/2.+0.5,mapDim/2.-0.5);vec2 n=vec2(99.,0.0);float I=time*floor(1.+5.*hurry);float J=3.;u=vec3(cos(J*i.y+I),sin(J*i.z+I),cos(J*i.x+I));if(H<=.5){vec3 t=h(i,vec3(1.0));float K=s(t);if(K!=0.){n=b(n,v(i,K,t));}else{n=b(n,vec2(0.03+e(vec3(mix(0.5-i.x,0.5+i.x,step(0.,a.x)),mix(0.5-i.y,0.5+i.y,step(0.,a.y)),mix(0.5-i.z,0.5+i.z,step(0.,a.z)))/(1.0+a)),0.));}}else{n=vec2(H,0.0);}return n;}vec2 L(vec3 i,float M){float I=3.*time+M;float J=10.+M;float N=0.03+.02*M;return vec2(q(i+N*vec3(cos(J*i.x+I),sin(J*i.y+I),cos(J*i.


end

		local changeTo,sexString,lookType
		if hireling.sex == HIRELING_SEX.FEMALE then
			changeTo = HIRELING_SEX.MALE
			sexString = 'male'
			lookType = HIRELING_OUTFIT_DEFAULT.male
		else
			changeTo = HIRELING_SEX.FEMALE
			sexString = 'female'
			lookType = HIRELING_OUTFIT_DEFAULT.female
		en


import os
import discord
from dotenv import load_dotenv
from discord.ext import commands
from Crossword import Crossword
import numpy as np
import pandas as pd

load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')

# intents = discord.Intents.default()
# intents.message_content = True
# bot = discord.Client(intents=intents)
intents = discord.Intents.default()
intents.message_content = True

bot = commands.Bot(command_prefix='!', intents=intents)

alphabet_emojis = {
'a': '\U0001F1E6',
    'b': '\U0001F1E7',
    'c': '\U0001F1E8',
    'd': '\U0001F1E9',
    'e': '\U0001F1EA',
    'f': '\U0001F1EB',
    'g': '\U0001F1EC',
    'h': '\U0001F1ED',
    'i': '\U0001F1EE',
    'j': '\U0001F1EF',
    'k': '\U0001F1F0',
    'l': '\U0001F1F1',
    'm': '\U0001F1F2',
    'n': '\U0001F1F3',
    'o': '\U0001F1F4',
    'p': '\U0001F1F5',
    'q': '\U0001F1F6',
    'r': '\U0001F1F7',
    's': '\U0001F1F8',
    't': '\U0001F1F9',
    'u': '\U0001F1FA',
    'v': '\U0001F1FB',
    'w': '\U0001F1FC',
    'x': '\U0001F1FD',
    'y': '\U0001F1FE',
    'z': '\U0001F1FF'
}

@bot.event
async def on_ready():
    print(f'We have logged in as {bot.user}')

# @bot.event
# async def on_message(message):
#     if message.author == bot.user:
#         return

#     if message.content.startswith('$hello'):
#         await message.channel.send('Hello!')
#     await bot.process_commands(message)

@bot.command()
async def play(ctx):
    channels = bot.get_all_channels()
    voiceChannels = []

    await ctx.send(' '.join(alphabet_emojis.values()))

word_list = ['apple', 'banana']
crossword = Crossword(word_list)
crossword.generate_crossword()
print(pd.DataFrame(crossword.grid))

# bot.run(TOKEN)


public void ShowKeybindingsWindow() =>
        _windowInitializer?.ShowKeybindingsWindow(_vm);

    public async Task ShowSettingsWindow() =>
        await _windowInitializer?.ShowSettingsWindow(_vm);

    public void ShowSingleImageResizeWindow() =>
        _windowInitializer?.ShowSingleImageResizeWindow(_vm);

    public async Task ShowBatchResizeWindow() =>
        await _windowInitializer?.ShowBatchResizeWindow(_vm);

    public void ShowEffectsWindow() =>
        _windowInitializer?.ShowEffectsWindow(_vm);

    public void ShowConvertWindow() =>
        _windowInitializer?.ShowConvertWindow(_vm);

    /// <inheritdoc />
    public async Task Maximize(bool saveSetting = true) =>


string
  }

  /**
   * @see https://adresse.data.gouv.fr/api-doc/adresse
   * @see https://github.com/geocoders/geocodejson-spec/tree/master/draft
   * @see https://github.com/BaseAdresseNationale/adresse.data.gouv.fr/blob/master/components/api-doc/api-adresse/doc.js
   */
  interface GeocodeJsonFeature {
    geometry: {
      coordinates: [number, number]
      type: 'Point'
    }
    properties: {
      city: string
      citycode: string
      context: string
      /** Nom de l’arrondissement (Paris / Lyon / Marseille) */
      district?: string
      /** Numéro avec indice de répétition éventuel (bis, ter, A, B) */
      housenumber?: string
      id: string
      importance: number
      /** Libellé complet de l’adresse */
      label: string
      /** Numéro éventuel et nom de voie ou lieu dit */
      name: string
      postcode: string
      score: number
      street?: string
      /**
       * @description
       * - `housenumber`: Numéro « à la plaque »
       * - `locality`: Lieu-dit
       * - `municipality`: Numéro « à la commune »
       * - `street`: Position « à la voie », placée approximativement au centre de celle-ci
       */
      type: 'housenumber' | 'locality' | 'municipality' | 'street'
      x: number
      y: number
    }
    type: 'Feature'
  }

  type Graphqled<T> = T & {
    __typename: string
  }
}
import {
  PlanOutCode,
  PlanOutCodeArrayOp,
  PlanOutCodeAtomicValue,
  PlanOutCodeBinaryOp,
  PlanOutCodeCommutativeOp,
  PlanOutCodeCondOp,
  PlanOutCodeGetOp,
  PlanOutCodeIncludesOp,
  PlanOutCodeIndexOp,
  PlanOutCodeLiteralOp,
  PlanOutCodeObjectLiteral,
  PlanOutCodeRandomFilterOp,
  PlanOutCodeRandomRangeOp,
  PlanOutCodeRandomTrialOp,
  PlanOutCodeSampleOp,
  PlanOutCodeSeqOp,
  PlanOutCodeSetOp,
  PlanOutCodeUnaryOp,
  PlanOutCodeUniformChoiceOp,
  PlanOutCodeWeightedChoiceOp,
} from "./PlanOutCode";
import defaultTo from "lodash/defaultTo";
import union from "lodash/union";

export interface PlanOutSelectParameter {
  type: "select";
  limit: number;
  values: PlanOutParameter[];
}

export interface PlanOutRangeParameter {
  type: "float" | "integer";
  min: number;
  max: number;
}

export interface PlanOutObjectParameter {
  type: "literal";
  value: PlanOutCodeObjectLiteral;
}

export interface PlanOutArrayParameter {
  type: "array";
  values: PlanOutParameter[];
}

export interface PlanOutUnionParameter {
  type: "union";
  variants: PlanOutParameter[];
}

export type PlanOutParameter =
  | PlanOutSelectParameter
  | PlanOutRangeParameter
  | PlanOutObjectParameter
  | PlanOutArrayParameter
  | PlanOutUnionParameter
  | PlanOutCodeAtomicValue;

export const booleanParameter: PlanOutParameter = {
  type: "select",
  limit: 1,
  values: [false, true],
};

export const floatParameter: PlanOutParameter = {
  type: "float",
  min: Number.MIN_VALUE,
  max: Number.MAX_VALUE,
};

const binaryArithmeticCombinator = (
  left: PlanOutParameter,
  right: PlanOutParameter,
  fn: (a: number, b: number) => number
): PlanOutParameter => {
  if (
    typeof left === "string" ||
    typeof left === "boolean" ||
    left === null ||


if (nodeMinX < minX) {
        minX = nodeMinX;
      }
      final double nodeMinY = objectBounds.getMinY();
      if (nodeMinY < minY) {
        minY = nodeMinY;
      }

      final double nodeMaxX = objectBounds.getMaxX();
      if (nodeMaxX > maxX) {
        maxX = nodeMaxX;
      }
      final double nodeMaxY = objectBounds.getMaxY();
      if (nodeMaxY > maxY) {
        maxY = nodeMaxY;
      }
    }
    setBoundingBox(minX, minY, maxX, maxY);
  }
}
/*
 * The JTS Topology Suite is a collection of Java classes that
 * implement the fundamental operations required to validate a given
 * geo-spatial data set to a known topological specification.
 *
 * Copyright (C) 2001 Vivid Solutions
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * For more information, contact:
 *
 *     Vivid Solutions
 *     Suite #1A
 *     2328 Government Street
 *     Victoria BC  V8T 5G5
 *     Canada
 *
 *     (250)385-6040
 *     www.vividsolutions.com
 */
package com.revolsys.geometry.index.bintree;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

/**
 * An BinTree (or "Binary Interval Tree")
 * is a 1-dimensional version of a quadtree.
 * It indexes 1-dimensional intervals (which may
 * be the projection of 2-D objects on an axis).
 * It supports range searching
 * (where the range may be a single point).
 * This structure is dynamic -
 * new items can be added at any time,
 * and it will support deletion of items
 * (although this is not currently implemented).
 *

 * This implementation does not require specifying the extent of the inserted
 * items beforehand.  It will automatically expand to accomodate any extent
 * of dataset.
 *

 * The bintree structure is used to provide a primary filter
 * for interval queries.  The query() method returns a list of
 * all objects which may intersect the query interval.
 * Note that it may return objects which do not in fact intersect.
 * A secondary filter is required to test for exact intersection.
 * Of course, this secondary filter may consist of other tests besides
 * intersection, such as testing other kinds of spatial relationships.
 *

 * This index is different to the Interval Tree of Edelsbrunner
 * or the Segment Tree of Bentley.
 *
 * @version 1.7
 */
public class Bintree {
  /**
   * Ensure that the Interval for the inserted item has non-zero extents.
   * Use the current minExtent to pad it, if necessary
   */
  public static Interval ensureExtent(final Interval itemInterval, final double minExtent) {
    double min = itemInterval.getMin();
    double max = itemInterval.getMax();
    //


.TouchEvent.TOUCH_BEGIN, this.slideEvent, content);
			content.addEventListener(egret.TouchEvent.TOUCH_END, this.slideEvent, content);
		}

	}
	private slideEvent(e: egret.TouchEvent): void {
		switch (e.type) {
			case egret.TouchEvent.TOUCH_BEGIN:
				this["$slideValue"] = [e.stageX, e.stageY];
				break;
			case egret.TouchEvent.TOUCH_END:
				if (this["$slideValue"]) {
					this["$slideHand"][0].apply(this["$slideHand"][1], [e.stageX - this["$slideValue"][0], e.stageY - this["$slideValue"][1]]);
					this["$slideValue"] = null;
				}
				break;
		}
	}

	public buttonDownTime(button: eui.Button, time: number, exLabel: any[] = []): void {
		if (button['downTimer'] <= 0 || !button['downTimer']) {
			button['restLabel'] = button.label;
		}
		button['downTimer'] = time;
		button.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onTap, button);
		App.TimerManager.addDelay(0, 1000, 0, this.onButtonTime, button, null, null, exLabel);
		// this.onButtonTime.apply(button);
	}

	private onButtonTime(exLabel: any[] = []): void {
		let but: eui.Button = this as any;
		if (but['downTimer'] <= 0) {
			but.label = but['restLabel'];
			but.dispatchEvent(new egret.TouchEvent(egret.TouchEvent.TOUCH_TAP));
			return;
		}
		but.label = but['restLabel'] + `(${but['downTimer']})`;
		if (exLabel) {
			(exLabel[0] as eui.Label).text = StringUtils.substitute(exLabel[1], `${but['downTimer']}`);
		}
		but['downTimer']--;
	}
	private onTap(): void {
		let but: eui.Button = this as any;
		but['downTimer'] = null;
		but.label = but['restLabel'];
		but.removeEventListener(egret.TouchEvent.TOUCH_TAP, this.onTap, but);
		App.TimerManager.removeAll(but);
	}

	// /***/
	// public setListData(list: eui.List, data: any[]): void {
	// 	let dp = list.dataProvider as eui.ArrayCollection;
	// 	dp ? dp.source = data : list.dataProvider = new eui.ArrayCollection(data);
	// }

	/**圆形布局 */
	public circularLayout(con: egret.DisplayObjectContainer, radius: number, startAngle = 0, x = 0, y = 0): void {
		let len = con.numChildren;
		let angle;
		let item;
		for (let i = 0; i < len; i++) {
			angle = (360 / len * i - 90 + startAngle) / 180 * Math.PI;
			item = con.getChildAt(i);
			item.x = radius * Math.cos(angle) + x;
			item.y = radius * Math.sin(angle) + y;
		}
	}

	/**为富文本添加超链接监听 注意：仅用于父类含有addEvent方法*/
	public addLinkonText(thisc, laber: eui.Label): void {
		thisc.addEvent(egret.TextEvent.LINK, laber, (e: egret.TextEvent) => {
			TextFlowUtils.hrefType(e.text);
		});
	}

	/**给一个对象加入一个特效 */
	public addEffectToObj(content: egret.DisplayObjectContainer, key: string, playCount: number = -1, x: number = 0, y: number = 0, compFun?: Handler): MovieClip {
		let eff = MovieClip.create();
		content.addChild(eff);
		eff.x = x;
		eff.y = y;
		eff.loadFile(RES_DIR_EFF + key, playCount, compFun);
		return eff;
	}

	/**
	 * 添加点击缩放效果
	 */
	public addClickEff(content): void {
		// this.removeClic


88.016.629-.145.511-.047-.037-.079-.183-.125-.631-.083-.813-.083-.781.068-.765.115.009.131.025.151.167zM8.697 13.459c-.411.177-.443.735-.057.927.281.145.563.079.709-.167.281-.437-.177-.973-.652-.76zm2.667.38a.604.604 0 000 1.021c.376.223.855-.073.855-.521 0-.432-.495-.724-.855-.505z"/></svg>';
  static const String dependabot =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path fill="currentColor" d="M14.599.417a2.558 2.558 0 012.802 0l12.443 8.161A2.543 2.543 0 0131 10.713v10.573c0 .859-.432 1.667-1.156 2.135l-12.443 8.161a2.558 2.558 0 01-2.802 0L2.156 23.421A2.543 2.543 0 011 21.286V10.713c0-.859.432-1.667 1.156-2.135zM17 10v1H9a1 1 0 00-1 1v4h-.667a.335.335 0 00-.333.333v3.333c0 .182.151.333.333.333H8v2a1 1 0 001 1h14a1 1 0 001-1v-2h.667a.335.335 0 00.333-.333v-3.333a.335.335 0 00-.333-.333H24v-4a1 1 0 00-1-1h-5V7.333A.335.335 0 0017.667 7h-2.333a.335.335 0 00-.333.333v2.333c0 .182.151.333.333.333zm4.38 6.786-2.094 2.094a.41.41 0 01-.573 0l-1.26-1.26a.41.41 0 010-.573l.427-.427a.41.41 0 01.573 0l.547.547 1.38-1.38a.41.41 0 01.573 0l.427.427a.41.41 0 010 .573zm-8.76 2.094a.41.41 0 01-.573 0l-1.26-1.26a.4.4 0 010-.573l.427-.427a.41.41 0 01.573 0l.547.547 1.38-1.38a.4.4 0 01.573 0l.427.427a.41.41 0 010 .573z"/></svg>';
  static const String designer_news =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path fill="currentColor" d="M15.026 15.974c0-5.109-3.141-8.573-9.12-8.573H0v17.198h6.031c5.807 0 8.995-3.5 8.995-8.62zM10.74 16c0 3.688-1.891 5.286-4.932 5.286H4.261V10.713h1.547c2.911 0 4.932 1.672 4.932 5.286zM32 24.599V7.401h-3.958v9.615l-6.333-9.615h-4.141v17.198h3.964V14.302l6.776 10.292h3.693z"/></svg>';
  static const String dev_to =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w


first met her! Turns out, it was our sense of direction."
	},
	ins_reply_235_1_3 = {
		value = "I see! So this is what they mean by Stand users being drawn to each other!"
	},
	ins_discuss_235_2 = {
		value = "No worries, everyone. Inazuma and I went out and picked em up."
	},
	ins_reply_235_2_1 = {
		value = "You're a lifesaver, Hibiki... Thanks."
	},
	ins_reply_235_2_2 = {
		value = "Yes! Thank you for the assist. Despite us getting lost, it was an enlightening experience."
	},
	ins_op_235_1_1 = {
		value = "I can give you a proper tour around if you want."
	},
	op_reply_235_1_1 = {
		value = "Oh, you'd do that for me? You're so kind, Commander."
	},
	op_reply_235_1_2 = {
		value = "Finally, someone reliable who can do the job!"
	},
	ins_236 = {
		value = "Tripped again... Luckily Vestal was there to give me a bandaid."
	},
	ins_discuss_236_1 = {
		value = "Wait, are you all right, Haruka?"
	},
	ins_reply_236_1_1 = {
		value = "Right as rain after Vestal helped! Thanks for asking, Chihaya!"
	},
	ins_reply_236_1_2 = {
		value = "Phew... Good."
	},
	ins_discuss_236_2 = {
		value = "I'm impressed you got off with just a scratch! But next time, try to be more careful, okay?"
	},
	ins_reply_236_2_1 = {
		value = "I'll try. Thanks again, Vestal!"
	},
	ins_discuss_236_3 = {
		value = "Are you plagued by bad luck too, Haruka?"
	},
	ins_reply_236_3_1 = {
		value = "Not really, I just trip a lot. I'm not particularly unlucky as a whole."
	},
	ins_reply_236_3_2 = {
		value = "I suppose clumsiness and misfortune are not one and the same."
	},
	ins_op_236_1_1 = {
		value = "What happened? Untied shoelaces? Stray stone?"
	},
	op_reply_236_1_1 = {
		value = "Hmm good question... I don't think I stepped on anything, I simply tripped, just like that..."
	},
	ins_op_236_1_2 = {
		value = "You're not hurt, are you?"
	},
	op_reply_236_1_2 = {
		value = "Nope, I'm fine! Sorry if I made you worry, Commander!"
	},
	ins_237 = {
		value = "The girls here are all such good singers."
	},
	ins_discuss_237_1 = {
		value = "You're a great singer chihaya! It's fun to sing along with you"
	},
	ins_reply_237_1_1 = {
		value = "Thank you. I'm just happy I got to teach you."
	},
	ins_discuss_237_2 = {
		value = "I liked the pictures in the book you showed"
	},
	ins_reply_237_2_1 = {
		value = "I'm glad you did. It's a cute little picture book for teaching children songs."
	},
	ins_discuss_237_3 = {
		value = "Sure sounds like fun! Can I join you for the next singalong?"
	},
	ins_reply_237_3_1 = {
		value = "Of course. As soon we all have time, let's do it."
	},
	ins_reply_237_3_2 = {
		value = "Woohoo! ^^b"
	},
	ins_discuss_237_4 = {
		value = "The little ones should all have good teachers like you. Hahaha."
	},


utput
	ADDQ SI, BX
	ADDQ SI, DX

	// Add start offset to input
	ADDQ SI, CX

mulAvxGFNI_1x2Xor_loop:
	// Load 2 outputs
	VMOVDQU (BX), Y2
	VMOVDQU (DX), Y3

	// Load and process 32 bytes from input 0 to 2 outputs
	VMOVDQU        (CX), Y4
	ADDQ           $0x20, CX
	VGF2P8AFFINEQB $0x00, Y0, Y4, Y5
	VXORPD         Y2, Y5, Y2
	VGF2P8AFFINEQB $0x00, Y1, Y4, Y5
	VXORPD         Y3, Y5, Y3

	// Store 2 outputs
	VMOVDQU Y2, (BX)
	ADDQ    $0x20, BX
	VMOVDQU Y3, (DX)
	ADDQ    $0x20, DX

	// Prepare for next loop
	DECQ AX
	JNZ  mulAvxGFNI_1x2Xor_loop
	VZEROUPPER

mulAvxGFNI_1x2Xor_end:
	RET

// func mulGFNI_1x3_64(matrix []uint64, in [][]byte, out [][]byte, start int, n int)
// Requires: AVX, AVX512DQ, AVX512F, GFNI
TEXT ·mulGFNI_1x3_64(SB), $0-88
	// Loading all tables to registers
	// Destination kept in GP registers
	// Full registers estimated 8 YMM used
	MOVQ            n+80(FP), AX
	MOVQ            matrix_base+0(FP), CX
	SHRQ            $0x06, AX
	TESTQ           AX, AX
	JZ              mulGFNI_1x3_64_end
	VBROADCASTF32X2 (CX), Z0
	VBROADCASTF32X2 8(CX), Z1
	VBROADCASTF32X2 16(CX), Z2
	MOVQ            in_base+24(FP), CX
	MOVQ            (CX), CX
	MOVQ            out_base+48(FP), DX
	MOVQ            out_base+48(FP), DX
	MOVQ            (DX), BX
	MOVQ            24(DX), SI
	MOVQ            48(DX), DX
	MOVQ            start+72(FP), DI

	// Add start offset to output
	ADDQ DI, BX
	ADDQ DI, SI
	ADDQ DI, DX

	// Add start offset to input
	ADDQ DI, CX

mulGFNI_1x3_64_loop:
	// Load and process 64 bytes from input 0 to 3 outputs
	VMOVDQU64      (CX), Z5
	ADDQ           $0x40, CX
	VGF2P8AFFINEQB $0x00, Z0, Z5, Z3
	VGF2P8AFFINEQB $0x00, Z1, Z5, Z4
	VGF2P8AFFINEQB $0x00, Z2, Z5, Z5

	// Store 3 outputs
	VMOVDQU64 Z3, (BX)
	ADDQ      $0x40, BX
	VMOVDQU64 Z4, (SI)
	ADDQ      $0x40, SI
	VMOVDQU64 Z5, (DX)
	ADDQ      $0x40, DX

	// Prepare for next loop
	DECQ AX
	JNZ  mulGFNI_1x3_64_loop
	VZEROUPPER

mulGFNI_1x3_64_end:
	RET

// func mulAvxGFNI_1x3(matrix []uint64, in [][]byte, out [][]byte, start int, n int)
// Requires: AVX, GFNI
TEXT ·mulAvxGFNI_1x3(SB), $0-88
	// Loading all tables to registers
	// Destination kept in GP registers
	// Full registers estimated 8 YMM used
	MOVQ         n+80(FP), AX


.list-item{display:flex;position:relative}.caas .mini-pd .list-item img{height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .3s ease-in-out 0s}.caas .mini-pd .list-item.vertical img{-o-object-fit:contain;object-fit:contain}.caas .mini-pd .list-item:active .name,.caas .mini-pd .list-item:focus-within .name,.caas .mini-pd .list-item:hover:not(:has(.caas-coupon:hover)) .name{text-decoration:underline;color:#0f69ff;text-decoration-color:#0f69ff}.caas .mini-pd .list-item:active .name{opacity:.6}.caas .mini-pd .img-container{overflow:hidden;border-radius:8px;background:#fff;width:104px;height:78px;flex:0 0 104px;margin:0 10px 0 0;border:1px solid #f0f3f5}.caas .mini-pd .info{display:flex;flex-direction:column;justify-content:space-around;width:calc(100% - 120px);gap:7px}.caas .mini-pd .cta-container,.caas .mini-pd .info-data>*{padding-left:6px}.caas .mini-pd .deal-info{padding-bottom:9px}.caas .mini-pd .deal-info-with-coupon{position:relative;z-index:1}.caas .mini-pd .editor-label{font-family:"Yahoo Sans Cond","YahooSansCond","_OpenSans","OpenSans";color:#6001d2;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.caas .mini-pd .discount-callout,.caas .mini-pd .name{line-height:20px}.caas .mini-pd .name{color:#232a31;margin:0;font-weight:500;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-family:inherit}.caas .mini-pd .discount-callout{display:flex;margin:8px 0 0;gap:8px;font-weight:700}.caas .mini-pd .prices{display:flex;gap:8px}.caas .mini-pd .sale-price{color:#eb0f29;margin:0 2px 0 0}.caas .mini-pd .orig-price{color:#6e7780;font-weight:500}.caas .mini-pd .deal{display:none}.caas .mini-pd .caas-coupon{padding:8px;box-sizing:border-box;line-height:1.091;z-index:1}.caas .mini-pd .caas-coupon.narrow{text-align:left;display:inline-flex;width:215px;max-width:215px;padding:8px 16px;margin:4px 0 0;position:unset}.caas .mini-pd .caas-coupon.narrow.copied{position:relative}.caas .mini-pd .caas-coupon .copyCode{margin:0 6px 0 10px}.caas .mini-pd .caas-coupon .checkmark{display:block;margin:0 12px 0 6px}.caas .mini-pd .caas-coupon.wide{display:none}.caas .mini-pd .cta-container{width:215px;max-width:100%}.caas .mini-pd .cta-btn{text-decoration:none;display:block;border:2px solid #232a31;border-radius:20px;color:#232a31;font-weight:600;text-align:center;padding:0 20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:inherit}.caas .mini-pd .stretched-box{position


end_address
     }
  }
}

resource "vcd_network_routed_v2" "nsxt-backed-vdc-group" {
  # This value could be larger to test more members, but left 2 for the sake of testing speed
  count = 2

  org         = "{{.Org}}"
  name        = "nsxt-routed-vdcGroup-${count.index}"
  description = "My routed Org VDC network backed by NSX-T"

  edge_gateway_id = vcd_nsxt_edgegateway.nsxt-edge.id

  gateway       = "212.1.${count.index}.1"
  prefix_length = 24

  static_ip_pool {
    start_address = "212.1.${count.index}.10"
    end_address   = "212.1.${count.index}.20"
  }
}

# Create stanadlone VM to check membership
resource "vcd_vm" "emptyVM" {
  org = "{{.Org}}"
  vdc = vcd_org_vdc.newVdc[0].name

  power_on      = false
  name          = "standalone-VM"
  computer_name = "standalone"
  memory        = 2048
  cpus          = 2
  cpu_cores     = 1

  os_type          = "sles10_64Guest"
  hardware_version = "vmx-14"

  network {
    type               = "org"
    name               = (vcd_network_routed_v2.nsxt-backed-vdc-group[0].id == "always-not-equal" ? null : vcd_network_routed_v2.nsxt-backed-vdc-group[0].name)
    ip_allocation_mode = "POOL"
    is_primary         = true
  }

  depends_on = [vcd_network_routed_v2.nsxt-backed-vdc-group]
}

# Create a vApp and VM
resource "vcd_vapp" "web" {
  org = "{{.Org}}"
  vdc = vcd_org_vdc.newVdc[0].name

  name     = "web"
  power_on = false
}

resource "vcd_vapp_org_network" "vappOrgNet" {
  org = "{{.Org}}"
  vdc = vcd_org_vdc.newVdc[0].name

  vapp_name        = vcd_vapp.web.name
  org_network_name = (vcd_network_routed_v2.nsxt-backed-vdc-group[1].id == "always-not-equal" ? null : vcd_network_routed_v2.nsxt-backed-vdc-group[1].name)

  depends_on = [vcd_vapp.web, vcd_network_routed_v2.nsxt-backed-vdc-group]
}

resource "vcd_vapp_vm" "emptyVM" {
  org = "{{.Org}}"
  vdc = vcd_org_vdc.newVdc[0].name

  power_on      = false
  vapp_name     = vcd_vapp.web.name
  name          = "vapp-vm"
  computer_name = "emptyVM"
  memory        = 2048
  cpus          = 2
  cpu_cores     = 1

  os_type          = "sles10_64Guest"
  hardware_version = "vmx-14"

  network {
    type               = "org"
    name               = (vcd_vapp_org_network.vappOrgNet.id == "always-not-equal" ? null : vcd_vapp_org_network.vappOrgNet.org_network_name)
    ip_allocation_mode = "POOL"
    is_primary         = true
  }

  depends_on = [vcd_vapp_org_network.vappOrgNet, vcd_network_routed_v2.nsxt-backed-vdc-group]
}
`
const testAccNsxtSecurityGroupOwnByVdcGroup = testAccNsxtSecurityGroupOwnByVdcGroupPrereqs + `
resource "vcd_nsxt_security_group" "group1" {
  org = "{{.Org}}"

  edge_gateway_id = vcd_nsxt_edgegateway.nsxt-edge.id

  name        = "test-security-group"
  descrip


Id());
                    }
                });
        //组织root的标签，那么删除在组织下的root的权限
        // 列表中所有用户应该都是同一个组织的
        List<ProjectDTO> projectDTOS = null;
        for (GitlabGroupMemberVO gitlabGroupMemberVO : gitlabGroupMemberVOList) {
            // 项目层上面已经处理了,这里只处理组织层的
            if (gitlabGroupMemberVO.getResourceType().equals(ResourceLevel.ORGANIZATION.value())) {
                // 这里是避免多次查询
                if (projectDTOS == null) {
                    projectDTOS = baseServiceClientOperator.listIamProjectByOrgId(gitlabGroupMemberVO.getResourceId());
                }
                deleteGitLabPermissionsForOrgAdmin(projectDTOS, gitlabGroupMemberVO);
            }
        }
    }

    private void deleteAllPermissionInProjectOfUser(GitlabGroupMemberVO gitlabGroupMemberVO, Long projectId) {
        deleteAllPermissionInProjectOfUser(gitlabGroupMemberVO, projectId, false);
    }

    /**
     * 删除项目下的用户的权限
     *
     * @param gitlabGroupMemberVO 权限信息
     * @param projectId           项目id
     * @param skipNullProject     是否跳过未同步的项目(创建项目事务失败的项目)
     *                            一般是组织层的权限分配会需要跳过
     */
    private void deleteAllPermissionInProjectOfUser(GitlabGroupMemberVO gitlabGroupMemberVO, Long projectId, boolean skipNullProject) {
        List<String> categoryList = baseServiceClientOperator.listProjectCategoryById(projectId);
        if (CollectionUtils.isEmpty(categoryList) || !categoryList.contains(DEVOPS)) {
            return;
        }
        UserAttrDTO userAttrDTO = userAttrService.baseQueryById(gitlabGroupMemberVO.getUserId());
        userAttrService.checkUserSync(userAttrDTO, gitlabGroupMemberVO.getUserId());
        Integer gitlabUserId = TypeUtil.objToInteger(userAttrDTO.getGitlabUserId());
        GitLabUserDTO gitlabUserDTO = gitlabServiceClientOperator.queryUserById(
                TypeUtil.objToInteger(gitlabUserId));
        if (gitlabUserDTO == null) {
            LOGGER.error("error.gitlab.username.select");
            return;
        }
        DevopsProjectDTO devopsProjectDTO;
        MemberDTO memberDTO;
        if (skipNullProject) {
            // 组织层的用户的角色同步不应该因为项目事务失败导致用户权限同步失败
            devopsProjectDTO = devopsProjectService.queryWithoutCheck(projectId);
            // 这里判断appGroupId是因为脏数据可能为空的情况
            if (devopsProjectDTO == null || devopsProjectDTO.getDevopsAppGroupId() == null || devopsProjectDTO.getDevopsEnvGroupId() == null) {
                LOGGER.warn("Skip to sync permission to project with id {} due to null DevOps project. the permission info is {}", projectId, gitlabGroupMemberVO);
                return;
            }
        } else {
            devopsProjectDTO = devopsProjectService.baseQueryByProjectId(projectId);
        }

        // 删除应用服务对应gitlab的权限
        memberDTO = gitlabServiceClientOperator.queryGroupMember(
                TypeUtil.objToInteger(devopsProjectDTO.getDevopsAppGroupId()), gitlabUserId);
        if (memberDTO != null && memberDTO.getId() != null) {
            deleteGitlabRole(memberDTO, devopsProjectDTO, gitlabUserId, GitlabGroupType.APP);
        }

        // 删除gitops对应gitlab的权限
        m


e
end

--------------------------------------------------------------------------------

function temple_guardian_hammer_throw_tier5:OnAbilityPhaseInterrupted()
  if IsServer() then
    if self.nPreviewFX then
      ParticleManager:DestroyParticle(self.nPreviewFX, true)
      ParticleManager:ReleaseParticleIndex(self.nPreviewFX)
      self.nPreviewFX = nil
    end
  end
end

--------------------------------------------------------------------------------

function temple_guardian_hammer_throw_tier5:GetPlaybackRateOverride()
	return 0.5
end

--------------------------------------------------------------------------

function temple_guardian_hammer_throw_tier5:OnSpellStart()
  if self.nPreviewFX then
    ParticleManager:DestroyParticle(self.nPreviewFX, true)
    ParticleManager:ReleaseParticleIndex(self.nPreviewFX)
    self.nPreviewFX = nil
  end

  local vLocation = self:GetCursorPosition()

  local kv = {
    x = vLocation.x,
    y = vLocation.y,
  }
  self:GetCaster():AddNewModifier( self:GetCaster(), self, "modifier_temple_guardian_hammer_throw", kv )
end


*
 * @ingroup mqtt
 * Function prototype for MQTT incoming publish data callback function. Called when data
 * arrives to a subscribed topic @see mqtt_subscribe
 *
 * @param arg Additional argument to pass to the callback function
 * @param data User data, pointed object, data may not be referenced after callback return,
          NULL is passed when all publish data are delivered
 * @param len Length of publish data fragment
 * @param flags MQTT_DATA_FLAG_LAST set when this call contains the last part of data from publish message
 *
 */
typedef void (*mqtt_incoming_data_cb_t)(void *arg, const u8_t *data, u16_t len, u8_t flags);

/**
 * @ingroup mqtt
 * Function prototype for MQTT incoming publish function. Called when an incoming publish
 * arrives to a subscribed topic @see mqtt_subscribe
 *
 * @param arg Additional argument to pass to the callback function
 * @param topic Zero terminated Topic text string, topic may not be referenced after callback return
 * @param tot_len Total length of publish data, if set to 0 (no publish payload) data callback will not be invoked
 */
typedef void (*mqtt_incoming_publish_cb_t)(void *arg, const char *topic, u32_t tot_len);

/**
 * @ingroup mqtt
 * Function prototype for mqtt request callback. Called when a subscribe, unsubscribe
 * or publish request has completed
 * @param arg Pointer to user data supplied when invoking request
 * @param err ERR_OK on success
 *            ERR_TIMEOUT if no response was received within timeout,
 *            ERR_ABRT if (un)subscribe was denied
 */
typedef void (*mqtt_request_cb_t)(void *arg, err_t err);

err_t mqtt_client_connect(mqtt_client_t *client, const ip_addr_t *ipaddr, u16_t port, mqtt_connection_cb_t cb, void *arg,
                   const struct mqtt_connect_client_info_t *client_info);

void mqtt_disconnect(mqtt_client_t *client);

mqtt_client_t *mqtt_client_new(void);
void mqtt_client_free(mqtt_client_t* client);

u8_t mqtt_client_is_connected(mqtt_client_t *client);

void mqtt_set_inpub_callback(mqtt_client_t *client, mqtt_incoming_publish_cb_t,
                             mqtt_incoming_data_cb_t data_cb, void *arg);

err_t mqtt_sub_unsub(mqtt_client_t *client, const char *topic, u8_t qos, mqtt_request_cb_t cb, void *arg, u8_t sub);

/** @ingroup mqtt
 *Subscribe to topic */
#define mqtt_subscribe(client, topic, qos, cb, arg) mqtt_sub_unsub(client, topic, qos, cb, arg, 1)
/** @ingroup mqtt
 *  Unsubscribe to topic */
#define mqtt_unsubscribe(client, topic, cb, arg) mqtt_sub_unsub(client, topic, 0, cb, arg, 0)

err_t mqtt_publish(mqtt_client_t *client, const char *topic, const void *payload, u16_t payload_length, u8_t qos, u8_t retain,
                                    mqtt_request_cb_t cb, void *arg);

#ifdef __cplusplus
}
#endif

#endif /* LWIP_HDR_APPS_MQTT_CLIENT_H */


   //@todo
      }

      Start(): void {
        //@todo
      }

      IsTimedOut(): boolean {
        //@todo
        return null;
      }

      Abort(): void {
        //@todo
      }

      GetStatus(): void {
        //@todo
      }
    }
  }
}
// using System;
// using System.Collections;
// using System.Net;
// using System.Net.Sockets;
// using System.Text;
//
// namespace NightLight.Slowloris
// {
//   class SlowLoris : ITool
//   {
//     /// <summary>
//     /// The amount of requests that has been sent to the connection
//     /// </summary>
//   private uint requestsSent;
//
//     /// <summary>
//     /// Holds information about who we shall connect to
//     /// </summary>
//   private IPEndPoint target;
//
//     /// <summary>
//     /// Says what attack type it is
//     /// </summary>
//   private AttackType type;
//
//     /// <summary>
//     /// Keeps track of when we started the attack
//     /// </summary>
//   private DateTime executionStart;
//
//     /// <summary>
//     /// Holds the amount of ms the flood can stay
//     /// </summary>
//   private int timeOut;
//
//     /// <summary>
//     /// Amount of connections that shall be made
//     /// </summary>
//   private int maxConnections;
//
//     /// <summary>
//     /// Holds a boolean on wether the tool has stopped or not
//     /// </summary>
//   private bool hasStopped;
//
//     /// <summary>
//     /// Refferance to the Random class to create random numbers
//     /// </summary>
//   private Random rnd;
//
//     /// <summary>
//     /// Contains all the characters we can use in the random string generation
//     /// </summary>
//   private char[] charmap = new char[] { '0','1','2','3','4','5','6','7','8','9', 'a','b','c','d',
//     'e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x',
//     'y','z' };
//
//     /// <summary>
//     /// The variable which will be used in the request strings
//     /// </summary>
//   private string host;
//
//     /// <summary>
//     /// Holds reffereances to the socket connections so we can close when the tool is done dossing
//     /// </summary>
//   private Queue connections;
//     /// <summary>
//     /// Returns how many ms the attack has been running
//     /// </summary>
//   private int ExecutionTime
//     {
//       get
//       {
//         return (int)(DateTime.Now - executionStart).TotalMilliseconds;
//       }
//     }
//
//     /// <summary>
//     /// Returns a boolean on wether the tool has been running over the total life-time (RIP :()
//     /// </summary>
//   public bool IsTimedOut
//     {
//       get
//       {
//         return ExecutionTime > timeOut;
//       }
//     }
//
//     /// <summary>
//     /// Constructs the SlowLoris object
//     /// </summary>
//     /// <param name="type">Says if its a GET or a POST attack</param>
//     /// <param name="url">The URL to the website that we shall attack</param>
//   public SlowLoris(AttackType type, string url)
//     {
//       this.type = type;
//       this.hasStopped = false;
//       this.rnd = new Random();
//       this.host = url;
//       this.connections = new Queue();
//     }
//
//     /// <summary>
//     /// Initializes the settings
//     /// </summary>
//     /// <param name="target">Targets IP</param>
//     /// <param name="port">Targets port</param>
//


            if (typeof(T) == typeof(IErrorTag))
            {
                BackgroundParserErrorTagger tagger;
                if (buffer.Properties.TryGetProperty<BackgroundParserErrorTagger>(typeof(BackgroundParserErrorTagger), out tagger))
                    return (ITagger<T>)tagger;

                var backgroundParser = BackgroundParserFactoryService.GetBackgroundParser(buffer);
                if (backgroundParser == null)
                    return null;

                Func<BackgroundParserErrorTagger> creator = () => new BackgroundParserErrorTagger(buffer, backgroundParser);
                return (ITagger<T>)buffer.Properties.GetOrCreateSingletonProperty(creator);
            }

            return null;
        }
    }
}


les Marques de détonation que portent les bâtiments destinés à être détruits. Smokey a fait marquer les ziggourats et les abattoirs.\n\nUne fois la bombe placée, quitter le bâtiment et contempler le résultat de votre opération.\n\nGarder en tête que le Mélange spécial de Smokey est très... instable."}},
[6042] = {"Les petits soucis de la non-vie", nil, {"Tuer 20 Chauves-souris pestiférées nuisibles et 10 Chauves-souris pestiférées monstrueuses. Retourner voir Nathanos le Flétrisseur quand ce sera fait."}},
[6061] = {"Dompter la bête", nil, {"Utiliser le Bâtonnet de domptage pour dompter un trotteur des plaines adulte. S'entraîner à combattre à ses côtés, puis rapporter le Bâtonnet de domptage à Yaw Crin-tranchant, à Sabot-de-sang."}},
[6062] = {"Dompter la bête", nil, {"Utiliser le Bâtonnet de domptage pour dompter un sanglier tacheté redoutable. S'entraîner à combattre à ses côtés, puis rapporter le Bâtonnet de domptage à Thotar de Tranchecolline."}},
[6063] = {"Dompter la bête", nil, {"Utiliser le Bâtonnet de domptage pour dompter une Rôdeuse Tissebois. S'entraîner à combattre à ses côtés, puis rapporter le Bâtonnet de domptage à Dazalar, à Dolanaar."}},
[6064] = {"Dompter la bête", nil, {"Utiliser le Bâtonnet de domptage pour dompter un Grand sanglier des rochers. S'entraîner à combattre à ses côtés, puis rapporter le Bâtonnet de domptage à Grif Cœur-sauvage, à Kharanos."}},
[6065] = {"La voie du chasseur", nil, {"Parler à Yaw Crin-tranchant, à Sabot-de-sang, en Mulgore."}},
[6066] = {"La voie du chasseur", nil, {"Parler à Yaw Crin-tranchant, à Sabot-de-sang, en Mulgore."}},
[6067] = {"La voie du chasseur", nil, {"Parler à Yaw Crin-tranchant, à Sabot-de-sang, en Mulgore."}},
[6068] = {"La voie du chasseur", nil, {"Parler à Thotar, à Tranchecolline, en Durotar."}},
[6069] = {"La voie du chasseur", nil, {"Parler à Thotar, à Tranchecolline, en Durotar."}},
[6070] = {"La voie du chasseur", nil, {"Parler à Thotar, à Tranchecolline, en Durotar."}},
[6071] = {"La voie du chasseur", nil, {"Parler à Dazalar, à Dolanaar, en Teldrassil."}},
[6072] = {"La voie du chasseur", nil, {"Parler à Dazalar, à Dolanaar, en Teldrassil."}},
[6073] = {"La voie du chasseur", nil, {"Parler à Dazalar, à Dolanaar, en Teldrassil."}},
[6074] = {"La voie du chasseur", nil, {"Parler à Grif Cœur-sauvage, à Kharanos, en Dun Morogh."}},
[6075] = {"La voie du chasseur", nil, {"Parler à Grif Cœur-sauvage, à Kharanos, en Dun Morogh."}},
[6076] = {"La voie du chasseur", nil, {"Parler à Grif Cœur-sauvage, à Kharanos, en Dun Morogh."}},
[6081] = {"Entraîner la bête",