DefenseRecoverySpeedModifier);
	WRAPPER_READ(wrapper, "CvCity", &m_iModifiedBuildingDefenseRecoverySpeedCap);
	WRAPPER_READ(wrapper, "CvCity", &m_iExtraCityDefenseRecoverySpeedModifier);
	WRAPPER_READ_CLASS_ARRAY(wrapper, "CvCity", REMAPPED_CLASS_TYPE_COMBATINFOS, GC.getNumUnitCombatInfos(), m_paiUnitCombatRepelAgainstModifier);
	WRAPPER_READ_CLASS_ARRAY(wrapper, "CvCity", REMAPPED_CLASS_TYPE_COMBATINFOS, GC.getNumUnitCombatInfos(), m_paiUnitCombatDefenseAgainstModifier);
	WRAPPER_READ_CLASS_ARRAY(wrapper, "CvCity", REMAPPED_CLASS_TYPE_COMBATINFOS, GC.getNumUnitCombatInfos(), m_paiDamageAttackingUnitCombatCount);
	WRAPPER_READ_CLASS_ARRAY(wrapper, "CvCity", REMAPPED_CLASS_TYPE_COMBATINFOS, GC.getNumUnitCombatInfos(), m_paiHealUnitCombatTypeVolume);
	//TB Combat Mod (Buildings) end

	WRAPPER_READ(wrapper, "CvCity", &m_iZoCCount);
	WRAPPER_READ(wrapper, "CvCity", &m_iExtraInsidiousness);
	WRAPPER_READ(wrapper, "CvCity", &m_iExtraInvestigation);
	WRAPPER_READ(wrapper, "CvCity", &m_iSpecialistInsidiousness);
	WRAPPER_READ(wrapper, "CvCity", &m_iSpecialistInvestigation);
	WRAPPER_READ(wrapper, "CvCity", &iNumElts);
	m_aPropertySpawns.clear();
	for (unsigned int i = 0; i < iNumElts; ++i)
	{
		PropertySpawns kChange;
		kChange.read(pStream);
		m_aPropertySpawns.push_back(kChange);
	}
	WRAPPER_READ_ARRAY(wrapper, "CvCity", NUM_COMMERCE_TYPES, m_aiExtraSpecialistCommerce);
	for (int i = 0; i < wrapper.getNumClassEnumValues(REMAPPED_CLASS_TYPE_SPECIALISTS); ++i)
	{
		int	iI = wrapper.getNewClassEnumValue(REMAPPED_CLASS_TYPE_SPECIALISTS, i, true);

		if (iI != -1)
		{
			WRAPPER_READ_ARRAY(wrapper, "CvCity", NUM_COMMERCE_TYPES, m_ppaaiLocalSpecialistExtraCommerce[iI]);
		}
		else
		{
			//	Consume the values
			WRAPPER_SKIP_ELEMENT(wrapper, "CvCity", m_ppaaiLocalSpecialistExtraCommerce[iI], SAVE_VALUE_TYPE_INT_ARRAY);
		}
	}
	WRAPPER_READ_ARRAY(wrapper, "CvCity", NUM_YIELD_TYPES, m_aiBaseYieldPerPopRate);
	WRAPPER_READ(wrapper, "CvCity", &m_bVisibilitySetup);
	m_bVisibilitySetup = false;

	WRAPPER_READ_CLASS_ARRAY(wrapper, "CvCity", REMAPPED_CLASS_TYPE_PROMOTIONLINES, GC.getNumPromotionLineInfos(), m_paiNewAfflictionTypeCount);
	WRAPPER_READ_CLASS_ARRAY(wrapper, "CvCity", REMAPPED_CLASS_TYPE_PROMOTIONLINES, GC.getNumPromotionLineInfos(), m_paiNewExtraAfflictionOutbreakLevelChange);
	WRAPPER_READ_CLASS_ARRAY(wrapper, "CvCity", REMAPPED_CLASS_TYPE_PROMOTIONLINES, GC.getNumPromotionLineInfos(), m_paiNewAfflictionToleranceChange);
	WRAPPER_READ_CLASS_ARRAY(wrappe


2 Control
    pub const REG_BG3CNT: Addr = 0x0400_000E;       //  2    R/W    BG3 Control
    pub const REG_BG0HOFS: Addr = 0x0400_0010;      //  2    W      BG0 X-Offset
    pub const REG_BG0VOFS: Addr = 0x0400_0012;      //  2    W      BG0 Y-Offset
    pub const REG_BG1HOFS: Addr = 0x0400_0014;      //  2    W      BG1 X-Offset
    pub const REG_BG1VOFS: Addr = 0x0400_0016;      //  2    W      BG1 Y-Offset
    pub const REG_BG2HOFS: Addr = 0x0400_0018;      //  2    W      BG2 X-Offset
    pub const REG_BG2VOFS: Addr = 0x0400_001A;      //  2    W      BG2 Y-Offset
    pub const REG_BG3HOFS: Addr = 0x0400_001C;      //  2    W      BG3 X-Offset
    pub const REG_BG3VOFS: Addr = 0x0400_001E;      //  2    W      BG3 Y-Offset
    pub const REG_BG2PA: Addr = 0x0400_0020;        //  2    W      BG2 Rotation/Scaling Parameter A (dx)
    pub const REG_BG2PB: Addr = 0x0400_0022;        //  2    W      BG2 Rotation/Scaling Parameter B (dmx)
    pub const REG_BG2PC: Addr = 0x0400_0024;        //  2    W      BG2 Rotation/Scaling Parameter C (dy)
    pub const REG_BG2PD: Addr = 0x0400_0026;        //  2    W      BG2 Rotation/Scaling Parameter D (dmy)
    pub const REG_BG2X_L: Addr = 0x0400_0028;       //  4    W      BG2 Reference Point X-Coordinate, lower 16 bit
    pub const REG_BG2X_H: Addr = 0x0400_002A;       //  4    W      BG2 Reference Point X-Coordinate, upper 16 bit
    pub const REG_BG2Y_L: Addr = 0x0400_002C;       //  4    W      BG2 Reference Point Y-Coordinate, lower 16 bit
    pub const REG_BG2Y_H: Addr = 0x0400_002E;       //  4    W      BG2 Reference Point Y-Coordinate, upper 16 bit
    pub const REG_BG3PA: Addr = 0x0400_0030;        //  2    W      BG3 Rotation/Scaling Parameter A (dx)
    pub const REG_BG3PB: Addr = 0x0400_0032;        //  2    W      BG3 Rotation/Scaling Parameter B (dmx)
    pub const REG_BG3PC: Addr = 0x0400_0034;        //  2    W      BG3 Rotation/Scaling Parameter C (dy)
    pub const REG_BG3PD: Addr = 0x0400_0036;        //  2    W      BG3 Rotation/Scaling Parameter D (dmy)
    pub const REG_BG3X_L: Addr = 0x0400_0038;       //  4    W      BG3 Reference Point X-Coordinate, lower 16 bit
    pub const REG_BG3X_H: Addr = 0x0400_003A;       //  4    W      BG3 Reference Point X-Coordinate, upper 16 bit
    pub const REG_BG3Y_L: Addr = 0x0400_003C;       //  4    W      BG3 Reference Point Y-Coordinate, lower 16 bit
    pub const REG_BG3Y_H: Addr = 0x0400_003E;       //  4    W      BG3 Reference Point Y-Coordinate, upper 16 bit
    pub const REG_WIN0H: Addr = 0x0400_0040;        //  2    W      Window 0 Horizontal Dimensions


de-DE">5. Rechner stürzt bei Anfahren der Menüleiste ab (Mega ST) > Blitter (A, E)
   6. Rechner stürzt nach gewisser Zeit ab > Kontakt /RAM-Fehler (A, C, D, Netzteil B2)
   7. Rechner hängt bei Floppyzu griffen > Netzteil (A, B2)
   8. Uhr läuft nicht richtig, Rechner bombt willkürlich > Echtzeituhr (A, F)
Noch ein Hinweis:
Rechner mit diversen Erweiterungen können auch diverse erweiterte Probleme mit sich bringen, auf die hier im Einzelnen
nicht eingegangen wird. Sicher ist aber in jedem Fall, dass eine Hardwareerweiterung, gleich, welcher Art, nur in einem
einwandfrei funktionierenden Rechner richtig arbeitet.
A: Öffnen des Rechners
Rechner auf den Rücken legen, alle Schrauben lösen und beiseite legen. Wieder umdrehen und Deckel abheben. Beim 260/520
einfach nach oben weg, beim 1040 zuerst an der Seite ohne Floppy, beim Mega ST zuerst hinten und die Leitung zum
Batteriefach abziehen. Es sollte keine Diskette im Laufwerk sein, damit der Auswurfhebel nicht stört.
Beim 260/520er und 1040er die Tastatur abziehen und die drei Schrauben an der vorderen Blechkante lösen. Die Platine des
260/520ers ist noch mit drei weiteren Schrauben befestigt, die man durch Öffnungen im Abschirmblech erreicht, weg damit.
Besitzer eines 1040 müssen die beiden Schrauben mit denen das Netzteil befestigt ist, lösen. Die Platine wird nun mitsamt
Abschirmblechen aus dem Plastikunterteil gehoben.
Ein Mega ST kann in seiner Behausung verbleiben.
Jetzt mit einer Flachzange die Blechlaschen geradegebogen, bei 1040 und Mega ST ist auch eine unter der Floppy, und das
obere Abschirmblech lässt sich abnehmen. Das Netzteil des 1040 ist dabei etwas im Wege, aber es ist zu schaffen.
Das war es, für den Zusammenbau einfach den Text rückwärts lesen.
B1: Das Netzteil
Wenn


do_simulation       ; Continue with simulation below.

strcpy:
          move.b    (a0)+,(a1)+
          bne.s     strcpy
          rts

strcmp:
          move.b    (a0)+,d0
          beq.s     .checkdone
          cmp.b     (a1)+,d0
          beq.s     strcmp
          rts
.checkdone:
          tst.b     (a1)
          rts

;-------------------------------------------------------------------------
; Once the one-time stuff is done (and on all subsequent calls...) do
; the actual simulation of the TOS 1.4 exinput:
;
;  - Plug the prompt string pointer into the TEDINFO.
;  - The current default drive and path is saved.
;  - The current DTA address is saved, and a temporary DTA is installed.
;  - If the pathname passed to exinput starts with a '\', the passed-in
;    path is appended to the current default path.
;  - A hook is placed into the BIOS vector to watch for <CR> being hit,
;    so that we can mimick the new fsel's actions when just the pathname
;    is edited, and the user hits <CR> (to move to the filename field).
;  - The prompt string is placed in a box above the fsel dialog box on the
;    screen (but below the menu bar) before the system fsel'er is called.
;    The prompt is displayed inside a box, (it's a BOXTEXT object, which
;    is the entire tree).  The prompt is displayed with an objc_draw, and
;    removed by sending a redraw message (via form_dial).
;  - Call fsel_input() (the old one).
;  - Check to see if our BIOS hook set the flag saying a <CR> was the last
;    key hit.  If so, see if the pathname in the fsel dialog was changed.
;    If so, the user probably hit <CR> after typing the path (I always do),
;    so we loop back to do the fsel dialog again.  If the user clicked on
;    OK instead of hitting return, this won't happen.  Also, if the user
;    doesn't change the path (but perhaps does change the filename), then
;    hits return, we will not repeat the dialog.
;  - Call form_dial() to send a redraw message to clear the prompt box.
;  - Restore the current drive & path, and the old DTA.
;  - De-install the BIOS hook.
;  - Return to caller.
;-------------------------------------------------------------------------

do_simulation:

          .cargs    #8,.pinpath.l,.pinsel.l,.pbutton.l,.plabel.l

          sub.w     #SAV_SZ,sp          ; Allocate save area from stack,
          move.l    sp,a3               ; load save area base register.

          move.w    #$19,-(sp)
          trap      #1
          addq.l    #2,sp
          move.w    d0,savddrv(a3)
          add.b     #'A',d0
          move.b    d0,savdpath(a3)
          move.b    #':',1+savdpath(a3)

          clr.w     -(sp)
          pea       2+savdpath(a3)
          move.w    #$47,-(sp)
          trap      #1
          addq.l    #8,sp

          tst.b     2+savdpath(a3)
          bne.s     .gotpath
          move.w    #$5C00,2+savdpath(a3)         ; 5C00 == "\<NULL>"

.gotpath:

          move.w    #$2F,-(sp)
          trap      #1
          move.l    d0,savdta(a3)
          addq.l


LEKS R11 R6 K7 ["name"]
  NAMECALL R8 R8 K8 ["SetTeamCreateOnPublishInfo"]
  CALL R8 3 0
  GETUPVAL R8 2
  GETTABLEKS R10 R6 K7 ["name"]
  GETTABLEKS R11 R6 K7 ["name"]
  NAMECALL R8 R8 K9 ["setUploadNames"]
  CALL R8 3 0
  GETUPVAL R8 2
  LOADN R10 0
  LOADN R11 0
  GETTABLEKS R12 R0 K10 ["creatorId"]
  MOVE R13 R4
  LOADNIL R14
  NAMECALL R8 R8 K11 ["publishAs"]
  CALL R8 6 0
  LOADNIL R8
  LOADNIL R9
  GETUPVAL R11 2
  GETTABLEKS R10 R11 K12 ["GamePublishFinished"]
  NAMECALL R10 R10 K13 ["wait"]
  CALL R10 1 2
  MOVE R8 R10
  MOVE R9 R11
  JUMPIF R8 [+1]
  RETURN R0 0
  GETTABLEKS R10 R6 K14 ["playableDevices"]
  JUMPIFNOT R10 [+20]
  NEWTABLE R10 0 0
  GETIMPORT R11 K1 [pairs]
  GETTABLEKS R12 R6 K14 ["playableDevices"]
  CALL R11 1 3
  FORGPREP_NEXT R11
  JUMPIFNOT R15 [+7]
  FASTCALL2 TABLE_INSERT R10 R14 [+5]
  MOVE R17 R10
  MOVE R18 R14
  GETIMPORT R16 K17 [table.insert]
  CALL R16 2 0
  FORGLOOP R11 2 [-9]
  SETTABLEKS R10 R6 K14 ["playableDevices"]
  GETUPVAL R10 3
  CALL R10 0 1
  JUMPIFNOT R10 [+59]
  JUMPIFEQKNIL R3 [+58]
  GETUPVAL R10 4
  MOVE R11 R2
  MOVE R12 R3
  MOVE R13 R9
  CALL R10 3 1
  JUMPIFNOTEQKN R10 K18 [200] [+40]
  GETTABLEKS R12 R6 K19 ["OptInLocations"]
  FASTCALL1 ASSERT R12 [+2]
  GETIMPORT R11 K21 [assert]
  CALL R11 1 0
  NEWTABLE R11 0 0
  NEWTABLE R12 0 0
  GETIMPORT R13 K1 [pairs]
  GETTABLEKS R14 R6 K19 ["OptInLocations"]
  CALL R13 1 3
  FORGPREP_NEXT R13
  JUMPIFNOT R17 [+8]
  FASTCALL2 TABLE_INSERT R11 R16 [+5]
  MOVE R19 R11
  MOVE R20 R16
  GETIMPORT R18 K17 [table.insert]
  CALL R18 2 0
  JUMP [+7]
  FASTCALL2 TABLE_INSERT R12 R16 [+5]
  MOVE R19 R12
  MOVE R20 R16
  GETIMPORT R18 K17 [table.insert]
  CALL R18 2 0
  FORGLOOP R13 2 [-17]
  SETTABLEKS R11 R6 K22 ["optInRegions"]
  SETTABLEKS R12 R6 K23 ["optOutRegions"]
  JUMP [+8]
  GETIMPORT R11 K25 [warn]
  GETUPVAL R14 5
  LOADK R15 K26 ["EmailSubmitFailure"]
  NAMECALL R12 R1 K27 ["getText"]
  CALL R12 3 -1
  CALL R11 -1 0
  LOADNIL R11
  SETTABLEKS R11 R6 K19 ["OptInLocations"]
  GETTABLEKS R13 R2 K28 ["Develop"]
  GETTABLEKS R12 R13 K29 ["V2"]
  GETTABLEKS R11 R12 K30 ["Universes"]


CONTINUE = 0x000020;

            /// Check the magic database for consistency and print warnings to
            /// `stderr`.
            ///
            /// These warnings are printed by `libmagic` itself, not this crate.
            const CHECK = 0x000040;

            /// On systems that support `utime(2)` or `utimes(2)`, attempt to
            /// preserve the access time of analyzed files.
            const PRESERVE_ATIME = 0x000080;

            /// Don't translate unprintable characters to a `\\ooo` octal
            /// representation.
            const RAW = 0x000100;

            /// Treat operating system errors while trying to open files and
            /// follow symlinks as real errors, instead of printing them in the
            /// magic buffer.
            const ERROR = 0x000200;

            /// Return a MIME encoding, instead of a textual description.
            const MIME_ENCODING = 0x000400;

            /// Shorthand for `MIME_TYPE | MIME_ENCODING`
            const MIME = MagicFlags::MIME_TYPE.bits
                | MagicFlags::MIME_ENCODING.bits;

            /// Return the Apple creator and type.
            const APPLE = 0x000800;

            /// Return a slash-separated list of extensions.
            const EXTENSION = 0x1000000;

            /// Check inside compressed files but don't report compression.
            const COMPRESS_TRANSP = 0x2000000;

            /// Don't give a description, but return the extension, MIME
            /// type/encoding, and Apple creator/type.
            const NODESC = MagicFlags::EXTENSION.bits
                | MagicFlags::MIME.bits
                | MagicFlags::APPLE.bits;

            /// Don't look inside compressed files.
            const NO_CHECK_COMPRESS = 0x001000;

            /// Don't examine tar files.
            const NO_CHECK_TAR = 0x002000;

            /// Don't consult magic databases.
            const NO_CHECK_SOFT = 0x004000;

            /// Check for EMX application type (only on EMX).
            const NO_CHECK_APPTYPE = 0x008000;

            /// Don't print ELF details.
            const NO_CHECK_ELF = 0x010000;

            /// Don't check for various types of text files.
            const NO_CHECK_TEXT = 0x020000;

            /// Don't get extra information on MS Composite Document Files.
            const NO_CHECK_CDF = 0x040000;

            /// Don't look for known tokens inside ASCII files.
            const NO_CHECK_TOKENS = 0x100000;

            /// Don't check text encodings.
            const NO_CHECK_ENCODING = 0x200000;

            /// Don't check for JSON files.
            const NO_CHECK_JSON = 0x0400000;

            /// No built-in file tests; only consult the magic database.
            const NO_CHECK_BUILTIN = MagicFlags::NO_CHECK_COMPRESS.bits
                | MagicFlags::NO_CHECK_TAR.bits
                | MagicFlags::NO_CHECK_APPTYPE.bits
                | MagicFlags::NO_CHECK_ELF.bits
                | MagicFlags::NO_CHECK_TEXT.bits
                | MagicFlags::NO_CHECK_CDF.bits
                | MagicFlags::NO_CHECK_TOKENS.bits
                | MagicFlags::NO_CHECK_ENCODING.bits
                | MagicFlags::NO_CHECK_JSON.bits;

        }
    }

    impl Default for MagicFlags {
        /// Returns `NONE`
        fn default() -> MagicFlags {
            MagicFlags::NONE
        }
    }
}

/// Returns the version of this crate in the format `MAJOR.MINOR.PATCH`.
pub fn version() -> &'static str {
    env!("CARGO_PKG_VERSION


32_t.
    Builder.defineMacro("__STDC_ISO_10646__", "201206L");
    Builder.defineMacro("__STDC_UTF_16__");
    Builder.defineMacro("__STDC_UTF_32__");
  }

public:
  CloudABITargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts)
      : OSTargetInfo<Target>(Triple, Opts) {}
};

static void getDarwinDefines(MacroBuilder &Builder, const LangOptions &Opts,
                             const llvm::Triple &Triple,
                             StringRef &PlatformName,
                             VersionTuple &PlatformMinVersion) {
  Builder.defineMacro("__APPLE_CC__", "6000");
  Builder.defineMacro("__APPLE__");
  Builder.defineMacro("OBJC_NEW_PROPERTIES");
  // AddressSanitizer doesn't play well with source fortification, which is on
  // by default on Darwin.
  if (Opts.Sanitize.has(SanitizerKind::Address))
    Builder.defineMacro("_FORTIFY_SOURCE", "0");

  // Darwin defines __weak, __strong, and __unsafe_unretained even in C mode.
  if (!Opts.ObjC1) {
    // __weak is always defined, for use in blocks and with objc pointers.
    Builder.defineMacro("__weak", "__attribute__((objc_gc(weak)))");
    Builder.defineMacro("__strong", "");
    Builder.defineMacro("__unsafe_unretained", "");
  }

  if (Opts.Static)
    Builder.defineMacro("__STATIC__");
  else
    Builder.defineMacro("__DYNAMIC__");

  if (Opts.POSIXThreads)
    Builder.defineMacro("_REENTRANT");

  // Get the platform type and version number from the triple.
  unsigned Maj, Min, Rev;
  if (Triple.isMacOSX()) {
    Triple.getMacOSXVersion(Maj, Min, Rev);
    PlatformName = "macos";
  } else {
    Triple.getOSVersion(Maj, Min, Rev);
    PlatformName = llvm::Triple::getOSTypeName(Triple.getOS());
  }

  // If -target arch-pc-win32-macho option specified, we're
  // generating code for Win32 ABI. No need to emit
  // __ENVIRONMENT_XX_OS_VERSION_MIN_REQUIRED__.
  if (PlatformName == "win32") {
    PlatformMinVersion = VersionTuple(Maj, Min, Rev);
    return;
  }

  // Set the appropriate OS version define.
  if (Triple.isiOS()) {
    assert(Maj < 100 && Min < 100 && Rev < 100 && "Invalid version!");
    char Str[7];
    if (Maj < 10) {
      Str[0] = '0' + Maj;
      Str[1] = '0' + (Min / 10);
      Str[2] = '0' + (Min % 10);
      Str[3] = '0' + (Rev / 10);
      Str[4] = '0' + (Rev % 10);
      Str[5] = '\0';
    } else {
      // Handle versions >= 10.
      Str[0] = '0' + (Maj / 10);
      Str[1] = '0' + (Maj % 10);
      Str[2] = '0' + (Min / 10);
      Str[3] = '0' + (Min % 10);
      Str[4] = '0' + (Rev / 10);
      Str[5] = '0' + (Rev % 10);
      Str[6] = '\0';
    }
    if (Triple.isTvOS())
      Builder.defineMacro("__ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__", Str);
    else
      Builder.defineMacro("__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__",


yMap(),
        val hd: Map<String, String> = emptyMap(),
        val sd: Map<String, String> = emptyMap(),
    )

    @Serializable
    data class WatchServerData(
        val name: String,
        val link: String,
        val order: String,
        val icon: Boolean,
    )

    override fun videoListParse(response: Response): List<Video> {
        val document = response.asJsoup()

        // Decode base64 for each quality level
        val base64Fhd = document.selectFirst(".WatchServersEmbed form input[name='watch_fhd']")
            ?.attr("value")
            ?.let { String(Base64.decode(it, Base64.DEFAULT)) }
            ?: "[]"

        val base64Hd = document.selectFirst(".WatchServersEmbed form input[name='watch_hd']")
            ?.attr("value")
            ?.let { String(Base64.decode(it, Base64.DEFAULT)) }
            ?: "[]"

        val base64Sd = document.selectFirst(".WatchServersEmbed form input[name='watch_SD']")
            ?.attr("value")
            ?.let { String(Base64.decode(it, Base64.DEFAULT)) }
            ?: "[]"

        // Parse the base64 decoded strings into lists of WatchServerData
        val parsedFhd = json.decodeFromString<List<WatchServerData>>(base64Fhd)
        val parsedHd = json.decodeFromString<List<WatchServerData>>(base64Hd)
        val parsedSd = json.decodeFromString<List<WatchServerData>>(base64Sd)

        // Convert to the old Qualities structure
        val qualities = Qualities(
            fhd = parsedFhd.associate { it.name to it.link },
            hd = parsedHd.associate { it.name to it.link },
            sd = parsedSd.associate { it.name to it.link },
        )

        // Use the same logic as the old implementation
        val streamLinks = with(qualities) { fhd + hd + sd }

        return streamLinks.values.distinct().flatMap(::extractVideos)
    }

    private val uqloadExtractor by lazy { UqloadExtractor(client) }
    private val doodExtractor by lazy { DoodExtractor(client) }
    private val gdriveplayerExtractor by lazy { GdrivePlayerExtractor(client) }
    private val mp4uploadExtractor by lazy { Mp4uploadExtractor(client) }
    private val okruExtractor by lazy { OkruExtractor(client) }
    private val sharedExtractor by lazy { SharedExtractor(client) }
    private val streamwishExtractor by lazy { StreamWishExtractor(client, headers) }
    private val vidbomExtractor by lazy { VidBomExtractor(client) }
    private val vidyardExtractor by lazy { VidYardExtractor(client, headers) }
    private val voeExtractor by lazy { VoeExtractor(client, headers) }

    private fun extractVideos(url: String): List<Video> {
        return when {
            url.contains("drive.google") -> {
                val embedUrlG = "https://gdriveplayer.to/embed2.php?link=$url"
                gdriveplayerExtractor.videosFromUrl(embedUrlG, "GdrivePlayer", headers)
            }
            url.contains("vidyard") -> vidyardExtractor.videosFromUrl(url)
            url.contains("ok.ru") -> okruExtractor.videosFromUrl(url)
            url.contains("mp4upload") -> mp4uploadExtractor.videosFromUrl(url, headers)
            url.contains("uqload") -> uqloadExtractor.videosFromUrl(url)
            url.contains("voe") -> voeExtractor.videosFromUrl(url)
            url.contains("shared") -> sharedExtractor.videosFromUrl(url)?.let(::listOf)
            DOOD_REGEX.containsMatchIn(url) -> doodExtractor.videosFromUrl(url, "Dood mirror")
            VIDBOM_REGEX.containsMatchIn(url) -> vidbomExtractor.videosFromUrl(url)
            STREAMWISH_REGEX.containsMatchIn(url) -> streamwish


me
			err := c.SaveUploadedFile(file, dst)
			if err != nil {
				log.Println(err)
			}
			c.String(http.StatusOK, fmt.Sprintf("'%s' uploaded!", file.Filename))
		})
	*/

	// 注册一个目录，gin 会把该目录当成一个静态的资源目录
	// 如 static 目录下有图片路径 index/logo.png , 你可以通过 GET /static/index/logo.png 访问到
	//router.Static("/static", "./static")

	router.StaticFS("/static", EmbedFolder(local, "static"))

	//router.Use(static.Serve("/", EmbedFolder(local, "static")))
	/*router.NoRoute(func (c *gin.Context) {
		log.Printf("%s doesn't exists, redirect on /", c.Request.URL.Path)
		c.Redirect(http.StatusMovedPermanently, "/")
	})*/

	//router.LoadHTMLFiles("./static/html/index.html")
	// 注册一个路径，gin 加载模板的时候会从该目录查找
	// 参数是一个匹配字符，如 templates/*/* 的意思是 模板目录有两层
	// gin 在启动时会自动把该目录的文件编译一次缓存，不用担心效率问题
	//router.LoadHTMLGlob("static/html/*") // 在go:embed下无效

	// listen and serve on 0.0.0.0:8080
	err = router.Run(Port())
	if err != nil {
		log.Fatal(err)
	}

	/*listener, err := net.Listen("tcp", "0.0.0.0"+Port())
	  if err != nil {
	  	panic(listener)
	  }
	  httpServer := &http.Server{
	  	Handler: router,
	  }
	  err = httpServer.Serve(listener)
	  if err != nil {
	  	panic(err)
	  }*/
}
package utils

import (
	"bytes"
	"encoding/json"
	"errors"
	"io"
	"log"
	"mime/multipart"
	"net"
	"net/http"
	"net/url"
	"os"
	"strconv"
	"strings"
	"sync"
	"time"

	"golang.org/x/net/context"
)

const (
	ContentTypeAXWFU = "application/x-www-form-urlencoded"
	ContentTypeMFD   = "multipart/form-data"
	ContentTypeTX    = "text/xml"
	ContentTypeJson  = "application/json"
)

// UserAgent
// https://useragentstring.com
// https://www.useragents.me
// https://www.whatismybrowser.com
// https://explore.whatismybrowser.com/useragents/explore
// https://www.user-agents.org/allagents.xml
// https://techpatterns.com/downloads/firefox/useragentswitcher.xml
var UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"

// DownFile 下载文件
func DownFile(url, upPreDir, upDir string, proxyURL string) (string, error) {
	fileType := url[strings.LastIndex(url, "."):]
	if fileType != ".jpeg" && fileType != ".png" && fileType != ".jpg" {
		fileType = ".jpeg"
	}
	newName := str


2118f9ed53fdc4c7c6104cbff7489612d76c0d',
        ignoreOutput: true);
  });

  test(
    'checkout 1 file',
    () async => testCommands(s, [
      'echo dddd > LICENSE',
      'git checkout LICENSE',
    ]),
  );

  test(
    'git rm deleted file',
    () async => testCommands(s, [
      'rm LICENSE',
      'git rm LICENSE',
    ]),
  );

  test(
    'git delete branch',
    () async => testCommands(s, [
      'git branch foo',
      'git branch -d foo',
    ]),
  );

  test(
    'git upstream branch',
    () async => testCommands(
      s,
      [
        'git branch foo/fde',
        'git branch --set-upstream-to=origin/master',
      ],
      ignoreOutput: true,
    ),
  );

  test(
    'git remote',
    () async => testCommands(s, [
      'git remote add origin2í foo',
      'git remote',
      'git remote -v',
      'git remote rm origin2í'
    ]),
  );

  test(
    'git checkout remote branch',
    () async => testCommands(
      s,
      [
        'git init -q .',
        'git remote add origin https://github.com/GitJournal/icloud_documents_path.git',
        'git fetch origin',
        'git checkout -b master origin/master',
        'git remote rm origin',
      ],
      emptyDirs: true,
      ignoreOutput: true,
    ),
  );

  test(
    'git checkout branch',
    () async => testCommands(
      s,
      [
        'git branch branch-for-ítesting origin/branch-for-testing',
        'git checkout branch-for-ítesting',
      ],
      ignoreOutput: true,
    ),
  );
}
import 'dart:typed_data';

import 'package:buffer/buffer.dart';
import 'package:equatable/equatable.dart';

import 'package:dart_git/plumbing/git_hash.dart';
import 'package:dart_git/utils/uint8list.dart';
import 'package:meta/meta.dart';

@immutable
class IdxFile {
  late final List<IdxFileEntry> entries;
  final fanTable = Uint32List(_FAN_TABLE_LENGTH);
  late final GitHash packFileHash;

  static const _PACK_IDX_SIGNATURE = 0xff744f63;
  static const _PACK_VERSION = 2;
  static const _FAN_TABLE_LENGTH = 256;

  IdxFile.decode(Uint8List bytes) {
    var allBytes = bytes.toList();
    var reader = ByteDataReader(endian: Endian.big, copy: false);
    reader.add(allBytes);

    // Read the signature
    var sig = reader.readUint32();
    if (sig != _PACK_IDX_SIGNATURE) {
      throw Exception('GitIdxFileCorrupted: Invalid signature $sig');
    }

    // Version
    var version = reader.readUint32();
    if (version != _PACK_VERSION) {
      throw Exception('GitIdxFileCorrupted: Unsupported version: $version');
    }

    // Fanout Table
    for (var i = 0; i < _FAN_TABLE_LENGTH; i++) {
      fanTable[i] = reader.readUint32();
    }
    var numObjects = fanTable.last;

    // Read Hashes
    var hashes = List<GitHash>.filled(numObjects, GitHash.zero());
    for (var i = 0; i < numObjects; i++) {
      var hash = GitHash.fromBytes(reader.read(20));

      hashes[i] = hash;
    }

    // Read crc32
    var crcValues = List<int>.filled(numObjects, 0);
    for (var i = 0


vent
import at.hannibal2.skyhanni.events.render.gui.ReplaceItemEvent
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
import at.hannibal2.skyhanni.utils.RegexUtils.matches
import net.minecraft.item.ItemStack

// Todo: Merge this with SuperpairDataDisplay
//  Store slots over there
//  Have the rendered text of superpairdatadisplay highlight the slots the items are in
@SkyHanniModule
object SuperPairsItemVisibility {

    private val config get() = SkyHanniMod.feature.inventory.experimentationTable.superpairs.clickedItemsVisible
    private val superpairsSlotMap: MutableMap<Int, ItemStack> = mutableMapOf()
    private val superpairsSlotsToRead: MutableSet<Int> = mutableSetOf()

    /**
     * REGEX-TEST: §8?
     * REGEX-TEST: §eClick any button!
     * REGEX-TEST: §bClick a second button!
     * REGEX-TEST: §dNext button is instantly rewarded!
     */
    private val unknownSuperpairsClickPattern by ExperimentationTableApi.patternGroup.pattern(
        "superpairs.unknown-click",
        "(?:§.)+(?:\\?|(?:Click a(?: seco)?n[dy]|Next) button(?: is instantly rewarded)?!?)"
    )

    @HandleEvent(onlyOnIsland = IslandType.PRIVATE_ISLAND)
    fun onReplaceItem(event: ReplaceItemEvent) {
        if (!config.enabled) return
        if (!ExperimentationTableApi.inTable || ExperimentationTableApi.currentExperimentType != TaskType.SUPERPAIRS) return
        if (superpairsSlotMap.isEmpty() || event.slot !in superpairsSlotMap.keys) return
        if (!unknownSuperpairsClickPattern.matches(event.originalItem?.displayName)) return
        val replacementItem = superpairsSlotMap[event.slot] ?: return
        event.replace(replacementItem)
    }

    @HandleEvent
    fun onInventoryClose() {
        superpairsSlotMap.clear()
        superpairsSlotsToRead.clear()
    }

    @HandleEvent
    fun GuiContainerEvent.SlotClickEvent.tryReadUncoveredItem() {
        val slotNumber = slot?.slotNumber?.takeIf {
            it !in superpairsSlotMap.keys
        } ?: return
        val clickedItem = item ?: return
        if (unknownSuperpairsClickPattern.matches(clickedItem.displayName)) superpairsSlotsToRead.add(slotNumber)
        else superpairsSlotMap[slotNumber] = clickedItem
    }

    @HandleEvent
    fun InventoryOpenEvent.tryReadSuperpairsSlots() {
        if (!ExperimentationTableApi.inTable || ExperimentationTableApi.currentExperimentType != TaskType.SUPERPAIRS) return
        if (superpairsSlotsToRead.isEmpty()) return

        inventoryItems.filter {
            it.key in superpairsSlotsToRead && !unknownSuperpairsClickPattern.matches(it.value.displayName)
        }.forEach {
            superpairsSlotMap[it.key] = it.value
            superpairsSlotsToRead.remove(it.key)
        }
    }

}
package at.hannibal2.skyhanni.features.inventory.chocolatefactory.data

import at.hannibal2.skyhanni.features.inventory.chocolatefactory.CFApi
import at.hannibal2.skyhanni.features.inventory.chocolatefactory.CFApi.profileStorage
import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators
import at.hannibal2.skyhanni.utils.SimpleTimeMark
import at.hannibal2.skyhanni.utils.TimeUtils.format
import kotlin.time.Duration

enum class ChocolateAmount(val chocolate: () -> Long) {
    CURRENT({ profileStorage


KeyEvent.VK_NUM_LOCK);
        } catch (UnsupportedOperationException x) {
            return false;
        }
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void keyPressed(KeyEvent e) {

        final boolean pam = DECPAM && ! numLock();

        switch (e.getKeyCode()) {
            //
            // 6 key editing group
            //
            case KeyEvent.VK_INSERT:
                sendChars(e, "\033[2~");                        // NOI18N
                break;
            case KeyEvent.VK_DELETE:
                sendChars(e, "\033[3~");                       // NOI18N
                break;
            case KeyEvent.VK_PAGE_UP:
                sendChars(e, "\033[5~");                       // NOI18N
                break;
            case KeyEvent.VK_PAGE_DOWN:
                sendChars(e, "\033[6~");                       // NOI18N
                break;
            case KeyEvent.VK_HOME:
                sendChars(e, DECCKM? "\033OH": "\033[H");      // NOI18N
                break;
            case KeyEvent.VK_END:
                sendChars(e, DECCKM? "\033OF": "\033[F");      // NOI18N
                break;

            //
            // Arrow keys
            //
            case KeyEvent.VK_UP:
                sendChars(e, DECCKM? "\033OA": "\033[A");      // NOI18N
                break;
            case KeyEvent.VK_DOWN:
                sendChars(e, DECCKM? "\033OB": "\033[B");      // NOI18N
                break;
            case KeyEvent.VK_RIGHT:
                sendChars(e, DECCKM? "\033OC": "\033[C");      // NOI18N
                break;
            case KeyEvent.VK_LEFT:
                sendChars(e, DECCKM? "\033OD": "\033[D");      // NOI18N
                break;

            //
            // Function keys
            //
            case KeyEvent.VK_F1:
                sendChars(e, "\033OP");                // NOI18N
                break;
            case KeyEvent.VK_F2:
                sendChars(e, "\033OQ");                // NOI18N
                break;
            case KeyEvent.VK_F3:
                sendChars(e, "\033OR");                // NOI18N
                break;
            case KeyEvent.VK_F4:
                sendChars(e, "\033OS");                // NOI18N
                break;

            case KeyEvent.VK_F5:
                sendChars(e, "\033[15~");                      // NOI18N
                break;
            case KeyEvent.VK_F6:
                sendChars(e, "\033[17~");                      // NOI18N
                break;
            case KeyEvent.VK_F7:
                sendChars(e, "\033[18~");                      // NOI18N
                break;
            case KeyEvent.VK_F8:
                sendChars(e, "\033[19~");                      // NOI18N
                break;

            case KeyEvent.VK_F9:
                sendChars(e, "\033[20~");                      // NOI18N
                break;
            case KeyEvent.VK_F10:
                sendChars(e, "\033[21~");                      // NOI18N
                break;
            case KeyEvent.VK_F11:
                sendChars(e, "\033[23~");                      // NOI18N
                break;
            case KeyEvent.VK_F12:
                sendChars(e, "\033[24~");                      // NOI18N
                break;

            //
            // Keypad
            //
            case KeyEvent.VK_DIVIDE:
                sendChars(e, pam? "\033Oo": "/");                      // NOI18N
                break;
            case KeyEvent.VK_MULTIPLY:
                sendChars(e, pam? "\033Oj": "*");                      // NOI18N
                break;
            case KeyEvent.VK_SUBTRACT:


anAdvancement(3062, 3068, 3072, DATE_NONE, DATE_NONE)
              .setClanApproximate(true, false, false, false, false)
              .setPrototypeFactions(Faction.CHH)
              .setProductionFactions(Faction.CHH);
        return ammo;
    }

    private static AmmoType createCLHAG40Ammo() {
        AmmoType ammo = new AmmoType();

        ammo.name = "Hyper-Assault Gauss Rifle/40 Ammo";
        ammo.shortName = "HAG/40 Ammo";
        ammo.setInternalName(ammo.name);
        ammo.addLookupName("CLHAG40 Ammo");
        ammo.addLookupName("Clan HAG 40 Ammo");
        ammo.addLookupName("HAG/40 Ammo");
        ammo.damagePerShot = 1;
        ammo.rackSize = 40;
        ammo.ammoType = AmmoTypeEnum.HAG;
        ammo.shots = 3;
        ammo.bv = 67;
        ammo.cost = 30000;
        ammo.explosive = false;
        ammo.rulesRefs = "219, TM";
        ammo.techAdvancement.setTechBase(TechBase.CLAN)
              .setIntroLevel(false)
              .setUnofficial(false)
              .setTechRating(TechRating.F)
              .setAvailability(AvailabilityValue.X, AvailabilityValue.F, AvailabilityValue.E, AvailabilityValue.D)
              .setClanAdvancement(3062, 3068, 3072, DATE_NONE, DATE_NONE)
              .setClanApproximate(true, false, false, false, false)
              .setPrototypeFactions(Faction.CHH)
              .setProductionFactions(Faction.CHH);
        return ammo;
    }

    private static AmmoType createISIHVGaussAmmo() {
        AmmoType ammo = new AmmoType();

        ammo.name = "Improved Heavy Gauss Rifle Ammo";
        ammo.shortName = "iHeavy Gauss Ammo";
        ammo.setInternalName("ISImprovedHeavyGauss Ammo");
        ammo.addLookupName("IS Improved Heavy Gauss Rifle Ammo");
        ammo.addLookupName("ISImprovedHeavyGaussRifle Ammo");
        ammo.damagePerShot = 22;
        ammo.explosive = false;
        ammo.ammoType = AmmoTypeEnum.IGAUSS_HEAVY;
        ammo.shots = 4;
        ammo.bv = 48;
        ammo.cost = 20000;
        ammo.rulesRefs = "313, TO";
        ammo.techAdvancement.setTechBase(TechBase.IS)
              .setTechRating(TechRating.E)
              .setAvailability(AvailabilityValue.X, AvailabilityValue.X, AvailabilityValue.F, AvailabilityValue.E)
              .setISAdvancement(3065, DATE_NONE, 3081, DATE_NONE, DATE_NONE)
              .setPrototypeFactions(Faction.LC)
              .setProductionFactions(Faction.LC)
              .setStaticTechLevel(SimpleTechLevel.STANDARD);
        return ammo;
    }

    private static AmmoType createISMagshotGRAmmo() {
        AmmoType ammo = new AmmoType();

        ammo.name = "Magshot Gauss Rifle Ammo";
        ammo.shortName = "Magshot Ammo";
        ammo.setInternalName("ISMagshotGR Ammo");
        ammo.addLookupName("IS Magshot GR Ammo");
        ammo.damagePerShot = 2;
        ammo.explosive = false;
        ammo.ammoType = AmmoTypeEnum.MAGSHOT;
        ammo.shots = 50;
        ammo.bv = 2;
        ammo.cost = 1000;
        ammo.rulesRefs = "314, TO";
        // Tech Progre


	t = t / endTime
	t = t - 1
	return -cVal * (t*t*t*t - 1.0) + startVal
end

function Tween.fEASE_INOUT_QUART(t, startVal, cVal, endTime)
	t = t / (endTime/2.0)
	if t < 1.0 then return (cVal/2.0*t*t*t*t) + startVal end
	t = t - 2.0
	return -cVal/2.0 * (t*t*t*t - 2.0) + startVal
end

function Tween.fEASE_IN_QUINT(t, startVal, cVal, endTime)
	t = t / endTime
	return cVal*t*t*t*t*t + startVal
end

function Tween.fEASE_OUT_QUINT(t, startVal, cVal, endTime)
	t = t / endTime
	t = t - 1
	return cVal*(t*t*t*t*t + 1.0) + startVal
end

function Tween.fEASE_INOUT_QUINT(t, startVal, cVal, endTime)
	t = t / (endTime / 2.0)
	if t < 1.0 then
		return (cVal/2.0*t*t*t*t*t) + startVal
	else
		t = t - 2.0
		return ((cVal/2.0)*((t*t*t*t*t) + 2.0)) + startVal
	end
end

function Tween.fEASE_IN_SINE(t, startVal, cVal, endTime)
	return -cVal * cos(t/endTime * (pi/2.0)) + cVal + startVal
end

function Tween.fEASE_OUT_SINE(t, startVal, cVal, endTime)
	return cVal * sin(t/endTime * (pi/2.0)) + startVal
end

function Tween.fEASE_INOUT_SINE(t, startVal, cVal, endTime)
	return -cVal/2.0 * (cos(pi*t/endTime) - 1.0) + startVal
end

function Tween.fEASE_IN_EXPO(t, startVal, cVal, endTime)
	return (cVal * pow( 2.0, 10.0 * (t/endTime - 1.0) ) + startVal)
end

function Tween.fEASE_OUT_EXPO(t, startVal, cVal, endTime)
	return cVal * ( -pow( 2.0, -10.0 * t/endTime ) + 1.0 ) + startVal
end

function Tween.fEASE_INOUT_EXPO(t, startVal, cVal, endTime)
	t = t / (endTime/2.0)
	if t < 1.0 then return cVal/2.0 * pow( 2.0, 10.0 * (t - 1.0) ) + startVal end
	t = t - 1
	return cVal/2.0 * ( -pow( 2.0, -10.0 * t) + 2.0 ) + startVal
end

function Tween.fEASE_IN_CIRC(t, startVal, cVal, endTime)
	t = t / endTime
	return -cVal * (sqrt(1.0 - t*t) - 1.0) + startVal
end

function Tween.fEASE_OUT_CIRC(t, startVal, cVal, endTime)
	t = t/endTime
	t = t - 1
	return cVal * sqrt(1.0 - t*t) + startVal
end

function Tween.fEASE_INOUT_CIRC(t, startVal, cVal, endTime)
	t = t/(endTime/2.0)
	if t < 1.0 then return -cVal/2.0 * (sqrt(1.0 - t*t) - 1.0) + startVal end
	t = t


derlying array has # items stored + 1, since full is when wpos is 1
       element behind wpos */
    arr = cc_alloc(RING_ARRAY_HDR_SIZE + elem_size * (cap + 1));

    if (arr == NULL) {
        log_error("Could not allocate memory for ring array cap %u "
                  "elem_size %u", cap, elem_size);
        return NULL;
    }

    arr->elem_size = elem_size;
    arr->cap = cap;
    arr->rpos = arr->wpos = 0;
    return arr;
}

void
ring_array_destroy(struct ring_array **arr)
{
    if ((arr == NULL) || (*arr == NULL)) {
        log_warn("destroying NULL ring_array pointer");
        return;
    }

    log_verb("destroying ring array %p and freeing memory", *arr);

    cc_free(*arr);
    *arr = NULL;
}


r ((++a) in b) break',
    'for (a, b in c) break',
    'for (var a = 5 += 6 in b) break',
    'for ((++a) in b) break',
    'for (a, b in c) break',
    'for (new a in b in c in d) break',
    'function f() { for (new a in b in c in d) break }',
    'for (new new new a in b) break',
    'function f() { for (new new new a in b) break }',
    'for (delete new a() in b) break',
    'for (var a = (b in c in d) break',
    'for (/x/g + b in obj);',
    'for ("abc" + b in obj);',
    'for (2 + b in obj);',
    'for ({} + b in obj);',
    'for ([] + b in obj);',
    'for (a + b in obj);',
    'for (var {a: []} = 2 in []) { }',
    'for (var [x] = [] in null);',
    'for (var [x] = x in y) var x;',
    'for( in y);',
    'for(* in y);',
    'for(x* in y);',
    'for(a?b:x* in y);',
    'for(a?b:* in y);',
    'for(var x=a* in y);',
    'for(var x=u?i:a* in y);',
    'for(*;;);',
    'for(x*;;);',
    'for(a?b:x*;;);',
    'for(a?b:*;;);',
    'for(var x=u?i:a*;;);',
    'for(=x;;);',
    'for (var foo, /bar/ in x);',
    'for (a?b:(c in y))z;',
    'for ((c in y))z;',
    'for (x=0 in y);',
    'for ({ x: [(x, y)] } in [{ x: [] }]) ;',
    'for ({ x: { get x() {} } } in [{ x: {} }]) ;',
    'for (var key on bar);',
    'for (var key ik bar);',
    'for (var key inhere bar);',
    'for (var key instanceof bar);',
    'for (var i, i2 in {});',
    'for (x in { x: new.target } = {});',
    'for (x in { import.meta } = {});',
    'for (x in [x()] = {});',
    'for (x in [--x = 1] = {});',
    'for (x in [x--] = {});',
    'for (x in [new.target] = {});',
    'for (x in [super = 1] = {});',
    'for (x in [function* f() {}] = {});',
    'for (x in [(50)] = {});',
    'for (x in [(async function() {})] = {});',
    'for (x in [(foo())] = {});',
    'for (x in { x: 50 } = {});',
    'for (x in { x: (foo()) } = {});',
    'for (x in { x: async function() {} } = {});',
    'for (x in { x: y } = "str" = {});',
    'for (x in [(x,y) => z] = {});',
    'for (x in [async x => z] = {});',
    'for (x in {x: (y) => z} = {});',
    'for (x in {x: (y,w) => z} = {});',
    'for (x in {x: async (y) => z} = {});',
    'for (x in {x: async (y,w) => z} = {});',
    'for (x in {x: async (y) => z


Mark, \u200E Left-to-Right Mark and \u200F Right-to-Left Mark to list of control and non renderable characters.

Fixed Missing Reference Exception that would appear when expanding the Extra Settings of a TextMeshPro Preset asset. Case #1201072

Fixed Missing Reference Exception that would appear when editing the Vertex Color or Color Gradient of a TMP component Preset asset. Case #1201069

Fixed Inspector layout issue preventing enabling or disabling the Outline, Underlay, Lighting and Glow features when selecting a Preset asset material. Case #1196963

Revised the Create Material Preset context menu option to issue a warning and ignore materials outside the project. Case #1200109

Added experimental ITextPreprocessor interface to allow users to create custom components to handle text preprocessing and shaping. This interface includes a PreprocessText(string text) function that is called when the object contains a component that inherits from this interface.

Added support for Unity Presets in the Editor for both <textmeshpro> and <textmeshprougui> components. Case #1191793</textmeshprougui></textmeshpro>

Fixed missing CanvasRenderer component issue on the Input Field Caret object.

Added padding to the 2DRectMask on the TMP Input Field - Text Area object.

Optimization to ensure the TMP Update Manager only rebuilds text objects once per frame regardless of the number of cameras in the scene.

[2.1.0-preview.2] - 2019-10-30

[1.5.0-preview.2]

Changes

Fixed Input Field issue when Read Only flag is set preventing the initial setting of the text. Also fixed Read Only flag not being respected when using IME input.

Fixed potential infinite loop when using text overflow mode ScrollRect. See Case #1188867

Fixed Input Field culling related issue(s) where text would be incorrectly culled. See https://forum.unity.com/threads/version-1-5-0-2-1-0-preview-1-now-available-for-testing.753587/#post-5023700

Revised handling and referencing of the CanvasRenderer in anticipation of an incoming change to the MaskableGraphic class where it will no longer automatically add a CanvasRenderer to components inheriting from it. As a result, <textmeshpro> objects will no longer have a CanvasRenderer.</textmeshpro>

Fixed potential NRE when using Overflow Truncate mode with sprites. See https://forum.unity.com/threads/tmpro-stackoverflow-caused-by-tmpro-textmeshprougui-generatetextmesh.750398/page-2#post-5042822

Fixed issue when using font weights in combination of font styles in the editor.

Fixed for potential incorrect preferred height.

Improved handling of StyleSheet options to reorder, add or delete styles.

Fixed Input Field Caret & Selection Highlight potential culling issue when the object was instantiated outside the culling region.

Fixed potential issue with registration of text objects in the TMP_UpdateManager.

Optimization to suppress callback to InternalUpdate when parent Canvas is disabled. Case #1189820

Fixed Fallback material not getting updated correctly when changing Generation Settings on the Fallback Font Asset.

Fixed a typo in the Font Weight section of the Font Asset Editor.

Fixed


chunkCallback,
  }) async {
    final DomResponse response = await rawHttpGet(uri.toString());
    final String? contentType = response.headers.get('Content-Type');
    if (contentType == null) {
      throw Exception('Could not determine content type of image at url $uri');
    }
    if (browserSupportsImageDecoder) {
      final SkwasmBrowserImageDecoder decoder = SkwasmBrowserImageDecoder(
        contentType: contentType,
        dataSource: response.body,
        debugSource: uri.toString(),
      );
      await decoder.initialize();
      return decoder;
    } else {
      final ByteBuffer buffer = await response.arrayBuffer();
      final Uint8List data = buffer.asUint8List();
      final ImageType? parsedContentType = detectImageType(data);
      if (parsedContentType == null) {
        throw Exception('Could not determine content type of image from data');
      }
      if (parsedContentType.isAnimated) {
        return SkwasmAnimatedImageDecoder(data);
      } else {
        final DomBlob blob = createDomBlob(<ByteBuffer>[buffer]);
        return SkwasmDomImageDecoder(blob);
      }
    }
  }

  @override
  String get rendererTag => 'skwasm';

  static final Map<String, Future<ui.FragmentProgram>> _programs =
      <String, Future<ui.FragmentProgram>>{};

  @override
  void clearFragmentProgramCache() {
    _programs.clear();
  }

  @override
  Future<ui.FragmentProgram> createFragmentProgram(String assetKey) {
    if (_programs.containsKey(assetKey)) {
      return _programs[assetKey]!;
    }
    return _programs[assetKey] = ui_web.assetManager.load(assetKey).then((ByteData data) {
      return SkwasmFragmentProgram.fromBytes(assetKey, data.buffer.asUint8List());
    });
  }

  @override
  ui.LineMetrics createLineMetrics({
    required bool hardBreak,
    required double ascent,
    required double descent,
    required double unscaledAscent,
    required double height,
    required double width,
    required double left,
    required double baseline,
    required int lineNumber,
  }) => SkwasmLineMetrics(
    hardBreak: hardBreak,
    ascent: ascent,
    descent: descent,
    unscaledAscent: unscaledAscent,
    height: height,
    width: width,
    left: left,
    baseline: baseline,
    lineNumber: lineNumber,
  );

  @override
  ui.Image createImageFromImageBitmap(DomImageBitmap imageSource) {
    return SkwasmImage(
      imageCreateFromTextureSource(
        imageSource,
        imageSource.width,
        imageSource.height,
        surface.handle,
      ),
    );
  }

  @override
  FutureOr<ui.Image> createImageFromTextureSource(
    JSAny textureSource, {
    required int width,
    required int height,
    required bool transferOwnership,
  }) async {
    if (!transferOwnership) {
      textureSource = (await createImageBitmap(textureSource, (
        x: 0,
        y: 0,
        width: width,
        height: height,
      ))).toJSAnyShallow;
    }
    return SkwasmImage(
      imageCreateFromTextureSource(textureSource as JSObject, width, height, surface.handle),
    );
  }

  @override
  void dumpDebugInfo() {
    if (kDebugMode) {
      withStackScope((StackScope scope) {
        final Pointer<Uint32> counts = scope.allocUint32Array(28);
        skwasmGetLiveObjectCounts(counts);
        final Map<String, dynamic> countsJson = <String, dynamic>{
          'lineBreakBufferCount': counts[0],
          'unicodePositionBufferCount': counts[1],
          'lineMetricsCount': counts[2],
          'textBoxList


ت کنید. برای حرکت در کلید نوار ابزار قبلی و بعدی با کلید جهت‌نمای راست و چپ جابجا شوید. کلید Space یا Enter را برای فعال کردن کلید نوار ابزار بفشارید."},{name:"پنجره محاورهای ویرایشگر",
legend:"در داخل یک پنجره محاوره‌ای، کلید Tab را بفشارید تا به پنجره‌ی بعدی بروید، Shift+Tab برای حرکت به فیلد قبلی، فشردن Enter برای ثبت اطلاعات پنجره، فشردن Esc برای لغو پنجره محاوره‌ای و برای پنجره‌هایی که چندین برگه دارند، فشردن Alt+F10 یا Tab برای حرکت در برگه ها. وقتی بر فهرست برگه ها هستید، به صفحه بعدی و قبلی با کلید های راستی و چپ حرکت کنید."},{name:"منوی متنی ویرایشگر",legend:"${contextMenu} یا کلید برنامههای کاربردی را برای باز کردن منوی متن را بفشارید. سپس میتوانید برای حرکت به گزینه بعدی منو با کلید Tab و یا کلید جهتنمای پایین جابجا شوید. حرکت به گزینه قبلی با Shift+Tab یا کلید جهتنمای بالا. فشردن Space یا Enter برای انتخاب یک گزینه از منو. باز کردن زیر شاخه گزینه منو جاری با کلید Space یا Enter و یا کلید جهتنمای راست و چپ. بازگشت به منوی والد با کلید Esc یا کلید جهتنمای چپ. بستن منوی متن با Esc."},
{name:"جعبه فهرست ویرایشگر",legend:"در داخل جعبه لیست، قلم دوم از اقلام لیست بعدی را با TAB و یا Arrow Down حرکت دهید. انتقال به قلم دوم از اقلام لیست قبلی را با SHIFT + TAB یا UP ARROW. کلید Space یا ENTER را برای انتخاب گزینه لیست بفشارید. کلید ESC را برای بستن جعبه لیست بفشارید."},{name:"ویرایشگر عنصر نوار راه",legend:"برای رفتن به مسیر عناصر ${elementsPathFocus} را بفشارید. حرکت به کلید عنصر بعدی با کلید Tab یا کلید جهت‌نمای راست. برگشت به کلید قبلی با Shift+Tab یا کلید جهت‌نمای چپ. فشردن Space یا Enter برای انتخاب یک عنصر در ویرایشگر."}]},
{name:"فرمان‌ه


      )
      .is_ok());
  }
}
<reponame>staacloo/git2-rs-old<gh_stars>0
/*
 * libgit2 "rev-list" example - shows how to transform a rev-spec into a list
 * of commit ids
 *
 * Written by the libgit2 contributors
 *
 * To the extent possible under law, the author(s) have dedicated all copyright
 * and related and neighboring rights to this software to the public domain
 * worldwide. This software is distributed without any warranty.
 *
 * You should have received a copy of the CC0 Public Domain Dedication along
 * with this software. If not, see
 * <http://creativecommons.org/publicdomain/zero/1.0/>.
 */

#![deny(warnings)]

extern crate git2;
extern crate docopt;
extern crate rustc_serialize;

use docopt::Docopt;
use git2::{Repository, Error, Revwalk, Oid};

#[derive(RustcDecodable)]
struct Args {
    arg_spec: Vec<String>,
    flag_topo_order: bool,
    flag_date_order: bool,
    flag_reverse: bool,
    flag_not: Vec<String>,
}

fn run(args: &Args) -> Result<(), git2::Error> {
    let repo = try!(Repository::open("."));
    let mut revwalk = try!(repo.revwalk());

    let base = if args.flag_reverse {git2::SORT_REVERSE} else {git2::SORT_NONE};
    revwalk.set_sorting(base | if args.flag_topo_order {
        git2::SORT_TOPOLOGICAL
    } else if args.flag_date_order {
        git2::SORT_TIME
    } else {
        git2::SORT_NONE
    });

    let specs = args.flag_not.iter().map(|s| (s, true))
                    .chain(args.arg_spec.iter().map(|s| (s, false)))
                    .map(|(spec, hide)| {
        if spec.starts_with("^") {(&spec[1..], !hide)} else {(&spec[..], hide)}
    });
    for (spec, hide) in specs {
        let id = if spec.contains("..") {
            let revspec = try!(repo.revparse(spec));
            if revspec.mode().contains(git2::REVPARSE_MERGE_BASE) {
                return Err(Error::from_str("merge bases not implemented"))
            }
            try!(push(&mut revwalk, revspec.from().unwrap().id(), !hide));
            revspec.to().unwrap().id()
        } else {
            try!(repo.revparse_single(spec)).id()
        };
        try!(push(&mut revwalk, id, hide));
    }

    for id in revwalk {
        println!("{}", id);
    }
    Ok(())
}

fn push(revwalk: &mut Revwalk, id: Oid, hide: bool) -> Result<(), Error> {
    if hide {revwalk.hide(id)} else {revwalk.push(id)}
}

fn main() {
    const USAGE: &'static str = "
usage: rev-list [options] [--] <spec>...

Options:
    --topo-order        sort commits in topological order
    --date-order        sort commits in date order
    --reverse           sort commits in reverse
    --not <spec>        don't show <spec>
    -h, --help          show this message
";

    let args = Docopt::new(USAGE).and_then(|d| d.decode())
                                 .unwrap_or_else(|e| e.exit());
    match run(&args) {
        Ok(()) => {}
        Err(e) => println!("error: {}", e),


class Solution:
  def leafSimilar(self, root1: Optional[TreeNode], root2: Optional[TreeNode]) -> bool:
    def dfs(root: Optional[TreeNode]) -> None:
      if not root:
        return
      if not root.left and not root.right:
        yield root.val
        return

      yield from dfs(root.left)
      yield from dfs(root.right)

    return list(dfs(root1)) == list(dfs(root2))


defaults.x_chroma_offset);
	conv->y_chroma_offset = static_cast<spvc_msl_chroma_location>(defaults.y_chroma_offset);
	for (int i = 0; i < 4; i++)
		conv->swizzle[i] = static_cast<spvc_msl_component_swizzle>(defaults.swizzle[i]);
	conv->ycbcr_model = static_cast<spvc_msl_sampler_ycbcr_model_conversion>(defaults.ycbcr_model);
	conv->ycbcr_range = static_cast<spvc_msl_sampler_ycbcr_range>(defaults.ycbcr_range);
#else
	memset(conv, 0, sizeof(*conv));
#endif
}

unsigned spvc_compiler_get_current_id_bound(spvc_compiler compiler)
{
	return compiler->compiler->get_current_id_bound();
}

void spvc_get_version(unsigned *major, unsigned *minor, unsigned *patch)
{
	*major = SPVC_C_API_VERSION_MAJOR;
	*minor = SPVC_C_API_VERSION_MINOR;
	*patch = SPVC_C_API_VERSION_PATCH;
}

const char *spvc_get_commit_revision_and_timestamp(void)
{
#ifdef HAVE_SPIRV_CROSS_GIT_VERSION
	return SPIRV_CROSS_GIT_REVISION;
#else
	return "";
#endif
}

#ifdef _MSC_VER
#pragma warning(pop)
#endif
// Copyright 2006-2015 Tobias Sargeant (tobias.sargeant@gmail.com).
//
// This file is part of the Carve CSG Library (http://carve-csg.com/)
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use, copy,
// modify, merge, publish, distribute, sublicense, and/or sell copies
// of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.

#if defined(HAVE_CONFIG_H)
#include <carve_config.h>
#endif

#include <carve/mesh.hpp>
#include <carve/mesh_impl.hpp>
#include <carve/rtree.hpp>

#include <carve/poly.hpp>

namespace {
inline double CALC_X(const carve::geom::plane<3>& p, double y, double z) {
  return -(p.d + p.N.y * y + p.N.z * z) / p.N.x;
}
inline double CALC_Y(const carve::geom::plane<3>& p, double x, double z) {
  return -(p.d + p.N.x *


nableoplockforceclose;
		public int sv599_enablefcbopens;
		public int sv599_enableraw;
		public int sv599_enablesharednetdrives;
		public uint sv599_minfreeconnections;
		public uint sv599_maxfreeconnections;
		public uint sv599_initsesstable;
		public uint sv599_initconntable;
		public uint sv599_initfiletable;
		public uint sv599_initsearchtable;
		public uint sv599_alertschedule;
		public uint sv599_errorthreshold;
		public uint sv599_networkerrorthreshold;
		public uint sv599_diskspacethreshold;
		public uint sv599_reserved;
		public uint sv599_maxlinkdelay;
		public uint sv599_minlinkthroughput;
		public uint sv599_linkinfovalidtime;
		public uint sv599_scavqosinfoupdatetime;
		public uint sv599_maxworkitemidletime;
		public void EncodeDeferrals(Titanis.DceRpc.IRpcEncoder encoder)
		{
			if ((null != this.sv599_domain))
			{
				encoder.WriteWideCharString(this.sv599_domain.value);
			}
		}
		public void DecodeDeferrals(Titanis.DceRpc.IRpcDecoder decoder)
		{
			if ((null != this.sv599_domain))
			{
				this.sv599_domain.value = decoder.ReadWideCharString();
			}
		}
	}
	[System.CodeDom.Compiler.GeneratedCodeAttribute("Animus IDL Compiler", "0.9.2")]
	public struct SERVER_INFO_1005 : Titanis.DceRpc.IRpcFixedStruct
	{
		public void Encode(Titanis.DceRpc.IRpcEncoder encoder)
		{
			encoder.WritePointer(this.sv1005_comment);
		}
		public void Decode(Titanis.DceRpc.IRpcDecoder decoder)
		{
			this.sv1005_comment = decoder.ReadPointer<string>();
		}
		public RpcPointer<string> sv1005_comment;
		public void EncodeDeferrals(Titanis.DceRpc.IRpcEncoder encoder)
		{
			if ((null != this.sv1005_comment))
			{
				encoder.WriteWideCharString(this.sv1005_comment.value);
			}
		}
		public void DecodeDeferrals(Titanis.DceRpc.IRpcDecoder decoder)
		{
			if ((null != this.sv1005_comment))
			{
				this.sv1005_comment.value = decoder.ReadWideCharString();
			}
		}
	}
	[System.CodeDom.Compiler.GeneratedCodeAttribute("Animus IDL Compiler", "0.9.2")]
	public struct SERVER_INFO_1107 : Titanis.DceRpc.IRpcFixedStruct
	{
		public void Encode(Titanis.DceRpc.IRpcEncoder encoder)
		{
			encoder.WriteValue(this.sv1107_users);
		}
		public void Decode(Titanis.DceRpc.IRpcDecoder decoder)
		{
			this.sv1107_users = decoder.ReadUInt32();
		}
		public uint sv1107_users;
		public void EncodeDeferrals(Titanis.DceRpc.IRpcEncoder encoder)
		{
		}
		public void DecodeDeferrals(Titanis.DceRpc.IRpcDecoder decoder)
		{
		}
	}
	[System.CodeDom.Compiler.GeneratedCodeAttribute("Animus IDL Compiler", "0.9.2")]
	public struct SERVER_INFO_1010 : Titanis.DceRpc.IRpcFixedStruct
	{
		public void Encode(Titanis.DceRpc.IRpcEncoder encoder)
		{
			encoder.WriteValue(this.sv1010_disc);
		}
		public void Decode(Titanis.DceRpc.IRpcDecoder decoder)
		{
			this.sv1010_disc = decoder.ReadInt32();
		}
		public int sv1010_disc;
		public void EncodeDeferrals(Titanis.DceRpc.IRpcEncoder encoder)


    wait();

    // write outputs
    out_value1.write(tmp1);
    out_value2.write(tmp2);
    out_value3.write(tmp3);
    out_value4.write(tmp4);
    out_value5.write(tmp5);
    out_valid.write(true);
    wait();
    out_valid.write(false);
    wait();
    //execute operations
    tmp1 -= 254;
    tmp2 -= 14;
    tmp3 -= 14;
    tmp4 -= 254;
    tmp5 -= 254;
    wait();

    // write outputs
    out_value1.write(tmp1);
    out_value2.write(tmp2);
    out_value3.write(tmp3);
    out_value4.write(tmp4);
    out_value5.write(tmp5);
    out_valid.write(true);
    wait();
    out_valid.write(false);
    wait();
    //execute operations with signed and unsigned mix and mixed bit width
    tmp1 = (tmp3 - tmp2).to_int();
    tmp2 = tmp2 - tmp4;
    tmp3 = tmp3 - tmp5;
    tmp4 = tmp4 - tmp5;
    tmp5 = tmp4 - tmp5;
    wait();

    // write outputs
    out_value1.write(tmp1);
    out_value2.write(tmp2);
    out_value3.write(tmp3);
    out_value4.write(tmp4);
    out_value5.write(tmp5);
    out_valid.write(true);
    wait();
    out_valid.write(false);
    wait();
  }
}

// EOF

/*****************************************************************************

  Licensed to Accellera Systems Initiative Inc. (Accellera) under one or
  more contributor license agreements.  See the NOTICE file distributed
  with this work for additional information regarding copyright ownership.
  Accellera licenses this file to you 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.

 *****************************************************************************/

/*****************************************************************************

  stimulus.cpp --

  Original Author: Rocco Jonack, Synopsys, Inc., 1999-07-27

 *****************************************************************************/

/*****************************************************************************

  MODIFICATION LOG - modifiers, enter your name, affiliation, date and
  changes you are making here.

      Name, Affiliation, Date:
  Description of Modification:

 *****************************************************************************/

#include "stimulus.h"

void stimulus::entry() {

  int i, j;

  // sending some reset values
  reset.write(true);
  in_valid.write(false);
  in_value.write(0);
  wait();
  reset.write(false);
  wait(5);
  for(i=0; i<3; i++){
    in_valid.write(true);
    for(j=0; j<=10; j++) {
      in_value.write(j);
      cout << "Stimuli1 : in_valid = true in_value " << j << " at "
	   << sc_time_stamp() << endl;
      wait();
    };
    in_valid.write(false);
    wait(4);
    for(j=0; j<=10; j++) {
      in_value.write(j);
      cout << "Stimuli2 : in_valid = true in_value " << j << " at "
	   << sc_time_stamp() << endl;
      wait();
    };
    in_valid.write(false);
    wait(4);
    for(j=0; j<=10; j++) {
      in_value.write(j);
      cout << "


= 17674
IHJlbWFpbmRlcg== 17675
IHN3ZXB0 17676
IEltcGFjdA== 17677
IHJlZGlzdA== 17678
IHVuaW50 17679
Z3JhZHVhdGU= 17680
44OV 17681
IFdJTEw= 17682
44Gu5w== 17683
IENyaXRpY2Fs 17684
IGZpc2hlcg== 17685
IHZpY2lvdXM= 17686
IHJldmVyc2Vk 17687
WWVhcg== 17688
IFNveA== 17689
IHNob290aW5ncw== 17690
IGZpbG1pbmc= 17691
IHRvdWNoZG93bnM= 17692
YWlyZXM= 17693
bWVs 17694
IGdyYW5kZmF0aGVy 17695
IGFmZmVjdGlvbg== 17696
aW5nbGU= 17697
IG92ZXJseQ== 17698
QWRkaXRpb25hbA== 17699
IHN1cHJlbWU= 17700
IEdyYWQ= 17701
IHNwb3J0aW5n 17702
IG1lcmN5 17703
IEJyb29rcw== 17704
b3VudHk= 17705
IHBlcmZvcm1z 17706
IHRpZ2h0bHk= 17707
IGRlbW9ucw== 17708
IGtpbGxpbmdz 17709
IGZhY3Rpb24= 17710
IE5vdmE= 17711
YXV0cw== 17712
IHVuZG91YnRlZGx5 17713
YXJpbg== 17714
IHVuZGVyd2F5 17715
cmFr 17716
IGxpdg== 17717
IFJlZ2lvbg== 17718
IGJyaWVmaW5n 17719
c2Vycw== 17720
Y2xvdWQ= 17721
IE1paw== 17722
dXNw 17723
IHByZWRpY3Rpb24= 17724
YXpvcg== 17725
IHBvcnRhYmxl 17726
IEdhbmQ= 17727
IHByZXNlbnRpbmc= 17728
IDEwODA= 17729
wrs= 17730
dXNoaQ== 17731
IFNwYXJr 17732
dGhlcmV1bQ== 17733
IGp1c3RpZmljYXRpb24= 17734
IE55 17735
IGNvbnRyYWN0b3Jz 17736
bWluZ2hhbQ== 17737
IFN0eWxl 17738
5YU= 17739
IENocm9uaWNsZXM= 17740
IFBpY3R1cmU= 17741
IHByb3Zpbmc= 17742
IHdpdmVz 17743
c2V0dA== 17744
IG1vbGVjdWxlcw== 17745
IEZhaXJ5 17746
IGNvbnNpc3Rpbmc= 17747
IHBpZXI= 17748
YWxvbmU= 17749
aW5pdGlvbg== 17750
IG51Y2xl 17751
anNvbg== 17752
IGdvdHRh 17753
IG1vYmls 17754
IHZlcmJhbA== 17755
YXJpdW0= 17756
IG1vbnVtZW50 17757
dWNrZWQ= 17758
IDI1Ng== 17759
VGVjaA== 17760
bWluZWNyYWZ0 17761
IFRyYWNr 17762
IHRpbGU= 17763
IGNvbXBhdGliaWxpdHk= 17764
YXNpcw== 17765
IHNhZGQ= 17766
IGluc3RydWN0ZWQ= 17767
IE11ZWxsZXI= 17768
IGxldGhhbA== 17769
IGhvcm1vbmU= 17770
IG9yY2hl


/*
 * Copyright (c) 2010-2016 Isode Limited.
 * All rights reserved.
 * See the COPYING file for more information.
 */

#pragma once

#include <memory>

#include <boost/signals2.hpp>

#include <Swiften/Base/API.h>
#include <Swiften/FileTransfer/FileTransferError.h>
#include <Swiften/FileTransfer/ReadBytestream.h>
#include <Swiften/FileTransfer/WriteBytestream.h>
#include <Swiften/Network/Connection.h>

namespace Swift {
    class SOCKS5BytestreamRegistry;

    class SWIFTEN_API SOCKS5BytestreamServerSession {
        public:
        typedef std::shared_ptr<SOCKS5BytestreamServerSession> ref;

        public:
            enum State {
                Initial,
                WaitingForAuthentication,
                WaitingForRequest,
                ReadyForTransfer,
                ReadingData,
                WritingData,
                Finished
            };

            SOCKS5BytestreamServerSession(std::shared_ptr<Connection> connection, SOCKS5BytestreamRegistry* registry);
            ~SOCKS5BytestreamServerSession();

            void setChunkSize(int chunkSize) {
                this->chunkSize = chunkSize;
            }

            void start();
            void stop();

            void startSending(std::shared_ptr<ReadBytestream>);
            void startReceiving(std::shared_ptr<WriteBytestream>);

            HostAddressPort getAddressPort() const;

            boost::signals2::signal<void (boost::optional<FileTransferError>)> onFinished;
            boost::signals2::signal<void (unsigned long long)> onBytesSent;

            const std::string& getStreamID() const {
                return streamID;
            }

        private:
            void finish(const boost::optional<FileTransferError>& error = boost::optional<FileTransferError>());
            void process();
            void handleDataRead(std::shared_ptr<SafeByteArray>);
            void handleDisconnected(const boost::optional<Connection::Error>&);
            void handleDataAvailable();
            void sendData();

        private:
            std::shared_ptr<Connection> connection;
            SOCKS5BytestreamRegistry* bytestreams;
            ByteArray unprocessedData;
            State state;
            int chunkSize;
            std::string streamID;
            std::shared_ptr<ReadBytestream> readBytestream;
            std::shared_ptr<WriteBytestream> writeBytestream;
            bool waitingForData;

            boost::signals2::connection disconnectedConnection;
            boost::signals2::connection dataReadConnection;
            boost::signals2::connection dataWrittenConnection;
            boost::signals2::connection dataAvailableConnection;

    };
}


их вещей, как бизнес-процессы, организационные диаграммы, структура программного обеспечения и так далее. Известными программами в этой области являются Microsoft Visio и её эквивалент с открытым исходным кодом — программа Dia.

Иллюстрации и деловая графика имеют некоторые общие характеристики, самой важной из которых является отсутствие цветов CMYK и плашечных цветов, поскольку файловые форматы не поддерживают эти цветовые модели. Оба графических типа также используют гораздо менее сложные векторные кривые, чем, например, AI или SVG. Кроме того, большинство форматов, перечисленных ниже, могут содержать векторные и растровые данные, а некоторые даже текст/шрифты. Исключениями являются: CVG, SHAPE, and SML.

Поддерживаемые форматы

Calamus Vector Graphics (CVG): файлы CVG — это не совсем форматы иллюстраций, как определено выше, а скорее векторная графика, предназначенная для использования с проверенным приложением для НИС — программой Calamus, которая была впервые выпущена для платформы Atari в 1987 году. Учитывая мощность компьютеров того времени, графика CVG — это не что иное, как примитивная графика в оттенках серого.

DIA Shapes (SHAPE): Хотя Scribus не может (пока что) импортировать собственные файлы DIA, их подмножество, а именно фигуры DIA, может быть импортировано.

Kivio Stencils (SML): Kivio является предшественником компонента Flow офисного пакета Calligra. Хотя Flow в настоящее время использует формат ODG (подробнее об этом ниже), Kivio имел свой собственный формат на основе XML, который не может быть импортирован в Scribus. Однако, как и в случае с фигурами DIA, примитивы рисования Kivio («трафареты») могут быть загружены.

Macintosh Picture (PICT): формат PICT является эквивалентом компании Apple формата Microsoft WMF (подробнее ниже).

Micrografx Draw (DRW):</


itto.core.data.converter.UnitID
import com.sadellie.unitto.core.model.converter.UnitGroup
import com.sadellie.unitto.core.model.converter.unit.BasicUnit
import java.math.BigDecimal

internal val temperatureCollection: List<BasicUnit> by lazy {
  val celsius =
    object : BasicUnit.Default {
      override val id: String = UnitID.celsius
      override val group: UnitGroup = UnitGroup.TEMPERATURE
      override val displayName: Int = R.string.unit_celsius
      override val shortName: Int = R.string.unit_celsius_short
      override val factor: BigDecimal = BigDecimal.ONE
      override val backward: Boolean = false

      override fun convert(unitTo: BasicUnit.Default, value: BigDecimal): BigDecimal =
        when (unitTo.id) {
          UnitID.fahrenheit -> {
            value.setMaxScale().times(BigDecimal("1.8")).plus(BigDecimal("32"))
          }

          UnitID.kelvin -> {
            value.setMaxScale().plus(BigDecimal("273.15"))
          }

          else -> value
        }
    }

  val fahrenheit =
    object : BasicUnit.Default {
      override val id: String = UnitID.fahrenheit
      override val group: UnitGroup = UnitGroup.TEMPERATURE
      override val displayName: Int = R.string.unit_fahrenheit
      override val shortName: Int = R.string.unit_fahrenheit_short
      override val factor: BigDecimal = BigDecimal.ONE
      override val backward: Boolean = false

      override fun convert(unitTo: BasicUnit.Default, value: BigDecimal): BigDecimal =
        when (unitTo.id) {
          UnitID.celsius -> {
            value.setMaxScale().minus(BigDecimal("32")).times(BigDecimal("5")).div(BigDecimal("9"))
          }
          UnitID.kelvin -> {
            value
              .setMaxScale()
              .minus(BigDecimal("32"))
              .times(BigDecimal("5"))
              .div(BigDecimal("9"))
              .add(BigDecimal("273.15"))
          }
          else -> value
        }
    }

  val kelvin =
    object : BasicUnit.Default {
      override val id: String = UnitID.kelvin
      override val group: UnitGroup = UnitGroup.TEMPERATURE
      override val displayName: Int = R.string.unit_kelvin
      override val shortName: Int = R.string.unit_kelvin_short
      override val factor: BigDecimal = BigDecimal.ONE
      override val backward: Boolean = false

      override fun convert(unitTo: BasicUnit.Default, value: BigDecimal): BigDecimal =
        when (unitTo.id) {
          UnitID.celsius -> {
            value.setMaxScale().minus(BigDecimal("273.15"))
          }
          UnitID.fahrenheit -> {
            value
              .setMaxScale()
              .minus(BigDecimal("273.15"))
              .times(BigDecimal("1.8"))
              .plus(BigDecimal("32"))
          }
          else -> value
        }
    }

  listOf(celsius, fahrenheit, kelvin)
}
/*
 * Unitto is a calculator for Android
 * Copyright (c) 2024 Elshan Agaev
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License fo


# Copyright (c) 2019 Eric Steinberger

"""
A bet-set is a list of pot-fractions resembling legal bet-sizes. Pass these to a DiscretizedPokerEnv.
The provided bet-sets are just examples that make benchmarking easier and helps avoid typing and copy-pasting lists.

Bet-set 56 for LBR is chosen to be similar to the one used in the original LBR paper (https://arxiv.org/abs/1612.07547).
All other bet-sets are just arbitrarily selected to make sense.
"""

ALL_IN_ONLY = [
    100000.0
]

POT_ONLY = [
    1.0,
]

B_2 = [
    1.0,
    100000.0
]

B_3 = [
    0.5, 1.0,
    100000.0
]

B_4 = [
    0.5, 1.0, 2.0,
    100000.0
]

B_5_SMALL = [
    0.5, 1.0, 2.0, 2.3,
    100000.0
]

B_5 = [
    0.5, 0.75, 1.0, 2.0,
    100000.0
]

B_8 = [
    0.5, 0.7, 1.25, 1.5, 2.0, 2.5,
    100000.0
]

B_16 = [
    0.10, 0.25, 0.40, 0.55, 0.75,
    0.90, 1.10, 1.30, 1.50, 1.80,
    2.25, 3.30, 4.50, 6.00, 8.00,
    100000.0
]

B_21 = [
    0.10, 0.22, 0.33, 0.44, 0.55,
    0.75, 0.88, 1.00, 1.10, 1.25,
    1.40, 1.60, 1.80, 2.00, 2.25,
    2.75, 3.75, 4.00, 5.50, 8.00,
    100000.0
]

B_41 = [
    0.10, 0.20, 0.25, 0.30, 0.35,
    0.40, 0.45, 0.50, 0.55, 0.60,
    0.65, 0.70, 0.75, 0.80, 0.85,
    0.90, 1.00, 1.10, 1.20, 1.30,
    1.40, 1.50, 1.60, 1.70, 1.80,
    1.90, 2.00, 2.10, 2.25, 2.45,
    2.60, 2.75, 3.00, 3.30, 3.80,
    4.50, 5.0, 6.00, 7.00, 8.00,
    100000.0
]

B_76 = [
    0.10, 0.15, 0.17, 0.20, 0.23,
    0.26, 0.29, 0.33, 0.37, 0.40,
    0.43, 0.47, 0.50, 0.53, 0.56,
    0.60, 0.63, 0.67, 0.70, 0.73,
    0.78, 0.81, 0.84, 0.87, 0.90,
    0.95, 1.00, 1.05, 1.10, 1.05,
    1.15, 1.20, 1.25, 1.30, 1.35,
    1.40, 1.45, 1.50, 1.55, 1.60,
    1.65, 1.70, 1.75, 1.80, 1.85,
    1.90, 1.95, 2.00, 2.05, 2.10,
    2.15, 2.20, 2.30, 2.40, 2.50,
    2.60, 2.70, 2.80, 2.90, 3.00,
    3.10, 3.20, 3.30, 3.50, 3.70,
    4.00, 4.30, 4.60, 5.00, 5.50,
    6.00, 6.50, 7.00, 7.50, 8.00,
    100000.0
]

PL_6 = [
    0.1, 0.22, 0.3, 0.50, 0.73,
    1.0,
]

PL_10 = [
    0.1, 0.15, 0.22, 0.3, 0.39,
    0.50, 0.61, 0.73, 0.86, 1.0,
]

# ________________________ OFF-TREE BET-SETS FOR EVALUATION (off-tree w.r.t. bet-sets above) ___________________________
OFF_TREE_1 = [
    0.7,
    100000.0
]

OFF_TREE_5 = [
    0.38, 0.63, 0.93, 1.73,
    100000.0
]

OFF_TREE_11 = [
    0.20, 0.42, 0.52, 0.86, 1.23,
    1.65, 2.05, 3.40, 5.00, 7.0,
    100000.0
]

OFF_TREE_56 = [
    0.10, 0.15, 0.17, 0.20, 0.23,
    0.25, 0.27, 0.30, 0.33, 0.36,
    0.39, 0.42, 0.45, 0.48, 0.51,
    0.54, 0.57, 0.60, 0.64, 0.68,
    0.72, 0.76, 0.80, 0.86, 0.92,
    0.98, 1.04, 1.10, 1.16, 1.23,
    1.30, 1.37, 1.44, 1.51, 1.58,
    1.65, 1.74, 1.84, 1.94, 2.05,
    2.20, 2.35, 2.50, 2.65, 2.80,
    2.95, 3.10, 3.30, 3.50, 3.80,
    4.20, 5.10, 6.10, 7.10, 8.10,
    100000.0
]

OFF_TREE_PL_20 = [
    0.05, 0.11, 0.16, 0.21, 0.26,
    0.31, 0.36, 0.41, 0.46, 0.51,
    0.56, 0.61, 0.66, 0.71, 0.76,
    0.81, 0.86, 0.91, 0.95, 1.0,
]


20 */	blr

.global func_80489554
func_80489554:
/* 80489554 00484A94  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80489558 00484A98  7C 08 02 A6 */	mflr r0
/* 8048955C 00484A9C  90 01 00 24 */	stw r0, 0x24(r1)
/* 80489560 00484AA0  39 61 00 20 */	addi r11, r1, 0x20
/* 80489564 00484AA4  48 08 DF CD */	bl _savegpr_27
/* 80489568 00484AA8  3F A0 80 55 */	lis r29, lbl_8054CAF8@ha
/* 8048956C 00484AAC  7C 7F 1B 78 */	mr r31, r3
/* 80489570 00484AB0  3B BD CA F8 */	addi r29, r29, lbl_8054CAF8@l
/* 80489574 00484AB4  48 00 29 1D */	bl func_8048BE90
/* 80489578 00484AB8  38 7F 00 5C */	addi r3, r31, 0x5c
/* 8048957C 00484ABC  48 00 25 89 */	bl func_8048BB04
/* 80489580 00484AC0  7F E3 FB 78 */	mr r3, r31
/* 80489584 00484AC4  48 00 02 09 */	bl func_8048978C
/* 80489588 00484AC8  38 7F 00 80 */	addi r3, r31, 0x80
/* 8048958C 00484ACC  48 00 26 91 */	bl func_8048BC1C
/* 80489590 00484AD0  38 7F 00 E4 */	addi r3, r31, 0xe4
/* 80489594 00484AD4  38 9D 00 18 */	addi r4, r29, 0x18
/* 80489598 00484AD8  38 A0 00 18 */	li r5, 0x18
/* 8048959C 00484ADC  4B B7 AD 9D */	bl memcpy
/* 804895A0 00484AE0  38 7F 00 FC */	addi r3, r31, 0xfc
/* 804895A4 00484AE4  38 9D 00 30 */	addi r4, r29, 0x30
/* 804895A8 00484AE8  38 A0 00 18 */	li r5, 0x18
/* 804895AC 00484AEC  4B B7 AD 8D */	bl memcpy
/* 804895B0 00484AF0  3B BD 00 00 */	addi r29, r29, 0
/* 804895B4 00484AF4  3B 80 00 00 */	li r28, 0
/* 804895B8 00484AF8  3B C0 00 00 */	li r30, 0
lbl_804895BC:
/* 804895BC 00484AFC  7C 7F F2 14 */	add r3, r31, r30
/* 804895C0 00484B00  7C 9D F2 14 */	add r4, r29, r30
/* 804895C4 00484B04  38 63 01 14 */	addi r3, r3, 0x114
/* 804895C8 00484B08  4B E8 E6 35 */	bl func_80317BFC
/* 804895CC 00484B0C  3B 9C 00 01 */	addi r28, r28, 1
/* 804895D0 00484B10  3B DE 00 06 */	addi r30, r30, 6
/* 804895D4 00484B14  2C 1C 00 04 */	cmpwi r28, 4
/* 804895D8 00484B18  41 80 FF E4 */	blt lbl_804895BC
/* 804895DC 00484B1C  38 A0 00 00 *


,-2.08 -0.24,-0.88 -0.4,-1.92 -0.4,-3.12 v -9.5999 h 2.8 v 9.5999 c 0,0.88 0.08,1.6 0.16,2.24 0.16,0.56 0.4,1.04 0.64,1.36 0.32,0.32 0.64,0.56 1.04,0.72 0.4,0.16 0.88,0.16 1.36,0.16 1.12,0 2.08,-0.16 2.72,-0.64 0.72,-0.48 1.2,-1.04 1.6,-1.84 v -11.5999 h 2.7199 v 16.1599 h -2.4799 z" style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" inkscape:connector-curvature="0"/>
    <path id="path5845" d="m 1673.1651,5460.5338 c 0,1.2 -0.16,2.24 -0.4,3.28 -0.32,0.96 -0.72,1.84 -1.28,2.56 -0.48,0.72 -1.2,1.36 -2,1.76 -0.8,0.4 -1.68,0.64 -2.7199,0.64 -1.04,0 -1.92,-0.24 -2.64,-0.56 -0.8,-0.4 -1.44,-0.96 -2,-1.6 l -0.08,1.84 h -2.56 v -22.8799 h 2.8 v 8.48 c 0.48,-0.64 1.12,-1.2 1.84,-1.52 0.8,-0.32 1.68,-0.48 2.64,-0.48 1.0399,0 1.9199,0.16 2.7199,0.56 0.8,0.4 1.52,0.96 2,1.68 0.56,0.72 0.96,1.5999 1.28,2.6399 0.24,1.04 0.4,2.08 0.4,3.28 z m -2.8,-0.32 c 0,-0.72 -0.08,-1.52 -0.24,-2.24 -0.16,-0.72 -0.4,-1.28 -0.72,-1.84 -0.32,-0.56 -0.8,-0.9599 -1.28,-1.2799 -0.5599,-0.32 -1.2799,-0.48 -2.0799,-0.48 -0.48,0 -0.88,0.08 -1.28,0.16 -0.4,0.16 -0.72,0.32 -1.04,0.56 -0.32,0.16 -0.64,0.4799 -0.88,0.7999 -0.24,0.24 -0.4,0.56 -0.56,0.96 v 7.04 c 0.16,0.32 0.32,0.72 0.56,0.96 0.24,0.32 0.56,0.64 0.88,0.8 0.32,0.24 0.64,0.4 1.04,0.56 0.4,0.16 0.88,0.16 1.36,0.16 0.72,0 1.36,-0.16 1.9199,-0.4 0.56,-0.32 0.96,-0.8 1.36,-1.28 0.32,-0.56 0.56,-1.2 0.72,-1.92 0.16,-0.72 0.24,-1.44 0.24,-2.24 z" style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" inkscape:connector-curvature="0"/>
    <path id="path5847" d="m 1684.925,5468.7738 c -1.12,0 -2.16,-0.24 -3.12,-0.


 re = new RegExp(/^(\d{2})(\d{2})(\d{2})(.)(.*$)/);
    let match = re.exec(body);
    // if we found a match.
    if(match) {
      let now = new Date();
      if(match[4] == 'z') {
        // convert this into UTC Unix timestamp
        let ts = Date.UTC(now.getUTCFullYear(),
                          now.getUTCMonth(),
                          parseInt(match[1]), // DD
                          parseInt(match[2]), // hh
                          parseInt(match[3]), // mm
                          0) / 1000;          // ss
        wxInfo.timestamp = ts;
        // return the last group (the remainder of the body)
        return match[5];
      }
    }
    console.error("Unsupported time format!");
    return "";  // error and return empty
  }

  // -------------------------------------------------------
  // getLocation - parses out the location of the station
  // -------------------------------------------------------
  private static getLocation(body : string, wxInfo : wxRecord) :string {
    // match (DD)([MM ])(.)(MM)(NS) and then the same thing for lon
    let re = new RegExp(/^(\d{2})([0-9 ]{2}\.[0-9 ]{2})([NnSs])(?:[\/])(\d{3})([0-9 ]{2}\.[0-9 ]{2})([EeWw])(.*)$/);
    let match = re.exec(body);
    if(match) {
      // extract the numbers
      let latDeg = parseInt(match[1]);
      let latMin = parseFloat(match[2]);
      let ns     = match[3];
      let lonDeg = parseInt(match[4]);
      let lonMin = parseFloat(match[5]);
      let ew     = match[6];

      // convert coordinates to decimal
      wxInfo.latitude  = latDeg + latMin / 60.0;
      wxInfo.longitude = lonDeg + lonMin / 60.0;

      // if we're down south we need to negate
      if(ns.toLowerCase() == 's')
        wxInfo.latitude *= -1;

      // if we're out west we need to negate
      if(ew.toLowerCase() == 'w')
        wxInfo.longitude *= -1;

      // return the rest of the packet
      return match[7];
    }
    console.error("Unsupported location format!");
    return "";
  }

  // -------------------------------------------------------
  // weatherDecoder - decode ex info
  // -------------------------------------------------------
  private static weatherDecoder(param : string, wxInfo : wxRecord)
  {
    const mphTometerps : number = 0.44704;
    const inchTomm : number = 0.254 // 1/100in to mm

    //console.log(param);

    // make sure that this is not param
    // with undefined value
    if(/\.{2,}$/.test(param.substr(1)))
      return;

    switch(param[0]) {
      case "_": // wind direction
        wxInfo.windDir = parseInt(param.substring(1));
      break;
      case "/": // wind speed
        wxInfo.windSpeed = parseInt(param.substring(1)) * mphTometerps;
      break;
      case "t":
        wxInfo.temp = (parseFloat(param.substring(1)) - 32) / 1.8;
      break;
      case "g": // wind gusts
        wxInfo.windGust = parseInt(param.substring(1)) * mphTometerps;
      break;
      case "r": // rain 1 hour
        wxInfo.rain1h = parseInt(param.substring(1)) * inchTomm;
      break;
      case "p": // rain last 24 hours
        wxInfo.rain24h = parseInt(param.substring(1)) * inchTomm;
      break;
      case "P": // rain since midnight


 'Mauler',
    role: 'Buffer',
    type: 'Intelligence',
    class: 'Support',
    trait: 'Dura\'s Sustenance',
    armor: 'Padded',
    signature: {
        name: 'The Gold Chime',
        description: 'A bell that seems to bring good fortune with its cheerful ring',
        skill: 'Thirsty Work',
        unlock: 'After entering the battle Rowan will set up a stall that now includes an energy potion. When an ally’s energy is above 600 points they will drink a potion, replenishing 60 energy points. The energy potion will be replenished each time the stall is set up',
        unlock1: 'Energy restored increased to 120 points',
        unlock2: 'Energy restored increased to 200 points',
        unlock3: 'Energy restored increased to 400 points'
    },
    furniture: {
        ability: 'New Commodities',
        unlock1: 'When using the health potions from the ability \'Healthy Supplies\', allied heroes will additionally regenerate 10 of their own max health per second over 1% seconds. This ability cannot be stacked',
        unlock2: 'When using the health potions from the ability \'Healthy Supplies\', allied heroes will additionally regenerate 15 of their own max health per second over 1.2% seconds. This ability cannot be stacked'
    }
}//Importamos la funcion "conexion" desde el archivo database
import { conexion } from '../database';

//Importamos las interfaz "Request" y "Repose" desde "express
import { Request, Response } from "express";

//Importamos la interfaz "iimpresion" desde el archivo "impresion"
import { iimpresion } from '../models/impresion';

//Clase que nos permite alamacenar metodos
 export class Impresioncontrollers{

     //Metodo que nos permite listar consola
     public async listarimpresion(req: Request , res: Response){

        //Guardamos la funcion "conexion" en las constante "db" para lograr la conexion con la base de datos
          const db = await conexion();

         //Realizamos la consulta para mostrar los datos de la tabla impresion
          let impresion = await db.query('select * from impresion');

          //Retorna una respuesta en formato json de la impresion
          return res.json(impresion);

      }
          //Metodo que guarda datos en la clase
    public async guardarimpresion (req:Request , res:Response){

        //Conexion con la base de datos
       const db = await conexion();

       //Guardamos los datos ingresados en el body en una variable
       let impresion:iimpresion= req.body;
       req.body.precio_total = (req.body.largo/1000)

       //Inserta los datos en la base de datos
       await db.query('insert into impresion set ?',[impresion]);

       //Retorna un mensaje despues de realizarse todo de forma correcta
       return res.json('La impresion fue guardada corecctamente');

   }

   //Metodo que nos permite eliminar datos
   public async eliminarimpresion (req:Request , res:Response){

       //Conexion con la base de datos
       const db = await conexion();

       //Recibe el codigo
       let codigo = req.params.codigo;

       //Realiza la eliminacion de la impresion
       await db.query('delete from impresion where id_impresion = ?',[codigo]);

       //Retorna un mensaje despues de realizarse todo de forma correcta
       return res.json('La impresion fue eliminada corecctamente');


export const argv = yargs
  // header
  .usage(
    `\nYou can run commands with "cognito-backup-restore" or the shortcut "cbr"\n
    Usage: $0 <command> [options]`
  )

  // backup command
  .command(
    "backup",
    dimmed`Backup/export all users in specified user pool`,
    (yargs) => {
      return yargs.options({
        mode: {
          default: "backup",
          hidden: true,
        },
        directory: {
          alias: ["dir"],
          describe: dimmed`Directory to export json file to`,
          string: true,
        },
      });
    }
  )

  // restore command
  .command(
    "restore",
    dimmed`Restore/import users to a single user pool`,
    (yargs) => {
      return yargs.options({
        mode: {
          default: "restore",
          hidden: true,
        },
        file: {
          alias: ["f"],
          describe: dimmed`JSON file to import data from`,
          string: true,
        },
        password: {
          alias: ["pwd"],
          describe: dimmed`TemporaryPassword of the users imported`,
          string: true,
        },
        passwordModulePath: {
          alias: ["pwdModule"],
          describe: dimmed`A module that exports an interface getPwdForUsername(username: String) method, fall back to password parameter if throw`,
          string: true,
        },
      });
    }
  )

  // examples
  .example(
    "$0 backup",
    greyed`Follow the interactive guide to backup userpool(s)`
  )
  .example(
    "$0 restore",
    greyed`Follow the interactive guide to restore userpool`
  )
  .example(
    "$0 backup -p <PROFILE> [OPTIONS]",
    greyed`Backup using the options provided`
  )
  .example(
    "$0 restore -p <PROFILE> [OPTIONS]",
    greyed`Restore using the options provided`
  )

  // options
  .option("profile", {
    alias: ["p"],
    describe: dimmed`Use a specific profile from your credential file`,
    conflicts: ["aws-access-key", "aws-secret-key"],
    string: true,
  })
  .option("region", {
    alias: ["r"],
    describe: dimmed`The region to use. Overrides config/env settings`,
    string: true,
  })
  .option("aws-access-key", {
    alias: ["key", "k"],
    describe: dimmed`The AWS Access Key to use. Overrides config/env settings`,
    conflicts: ["profile"],
    string: true,
  })
  .option("aws-secret-key", {
    alias: ["secret", "s"],
    describe: dimmed`The AWS Secret Key to use. Overrides config/env settings`,
    conflicts: ["profile"],
    string: true,
  })
  .option("userpool", {
    alias: ["pool"],
    describe: dimmed`The Cognito pool to use. 'all' to backup all userpools.`,
    string: true,
  })
  .option("sessionToken", {
    alias: ["st"],
    describe: dimmed`The AWS SessionToken to use. Overrides config/env settings`,
    string: true,
  })
  .option("delay", {
    describe: dimmed`delay in millis between alternate users batch(60) backup, to avoid rate limit error`,
    number: true,
  })

  // help
  .help("help", dimmed`Show help`)
  .alias("help", "h")
  .showHelpOnFail(false, bold`Specify --help


    clustering = G.add_internal_vertex_id(
            clustering, "vertex", vertex_col_name, drop=True
        )

    if clustering.dtypes.iloc[0] != np.int32 or clustering.dtypes.iloc[1] != np.int32:
        raise ValueError(
            "'analyzeClustering_ratio_cut' requires both the clustering 'vertex' "
            "and 'cluster' to be of type 'int32'"
        )

    score = pylibcugraph_analyze_clustering_ratio_cut(
        ResourceHandle(),
        G._plc_graph,
        n_clusters,
        clustering["vertex"],
        clustering[cluster_col_name],
    )

    return score


local JSONRPC_VERSION = "2.0"

local mcp = {
  version = require("resty.mcp.version"),
  utils = require("resty.mcp.utils")
}

local _M = {
  _NAME = "resty.mcp.protocol.rpc",
  _VERSION = mcp.version.module
}

local cjson = require("cjson.safe")

function _M.request(method, params, rid)
  assert(type(method) == "string", "JSONRPC: method MUST be a string.")
  assert(params == nil or type(params) == "table" and #params == 0, "JSONRPC: params MUST be a dict.")
  return {
    jsonrpc = JSONRPC_VERSION,
    id = rid or mcp.utils.generate_id(),
    method = method,
    params = params
  }
end

function _M.notification(method, params)
  assert(type(method) == "string", "JSONRPC: method MUST be a string.")
  assert(params == nil or type(params) == "table" and #params == 0, "JSONRPC: params MUST be a dict.")
  return {
    jsonrpc = JSONRPC_VERSION,
    method = method,
    params = params
  }
end

function _M.succ_resp(rid, result)
  assert(type(rid) == "string" or type(rid) == "number" and rid % 1 == 0, "JSONRPC: ID MUST be a string or integer.")
  assert(result ~= nil, "JSONRPC: result MUST be set in a successful response.")
  return {
    jsonrpc = JSONRPC_VERSION,
    id = rid,
    result = result
  }
end

function _M.fail_resp(rid, code, message, data)
  assert(type(rid) == "string" or type(rid) == "number" and rid % 1 == 0 or rid == cjson.null, "JSONRPC: ID MUST be a string or integer, or null.")
  assert(type(code) == "number" and code % 1 == 0, "JSONRPC: error code MUST be an integer.")
  assert(type(message) == "string", "JSONRPC: error message MUST be a string.")
  return {
    jsonrpc = JSONRPC_VERSION,
    id = rid,
    error = {
      code = code,
      message = message,
      data = data
    }
  }
end

local function handle_impl(dm, methods, resp_cb)
  if dm.jsonrpc ~= JSONRPC_VERSION then
    return _M.fail_resp(cjson.null, -32600, "Invalid Request")
  end
  if dm.id ~= nil and type(dm.id) ~= "string" and (type(dm.id) ~= "number" or dm.id % 1 ~= 0) and dm.id ~= cjson.null then
    return _M.fail_resp(cjson.null, -32600, "Invalid Request")
  end
  if dm.method == nil then
    if not dm.id then
      return _M.fail_resp(cjson.null, -32600, "Invalid Request")
    end
    if dm.r


-foreground: hsl(var(--bs-sable-foreground-hsl));
	--bs-sable-text-emphasis-hsl: var(--bs-sable-600-hsl);
	--bs-sable-text-emphasis: hsl(var(--bs-sable-text-emphasis-hsl));
	--bs-sable-hover-bg: var(--bs-sable-600);
	--bs-sable-active-bg: var(--bs-sable-700);
	--bs-sable-bg-subtle: hsl(var(--bs-sable-hue), var(--bs-sable-saturation), 70%);
	--bs-sable-border-subtle: var(--bs-sable-400);
	--bs-sable-checkbox-svg: var(--bs-checkbox-svg-light);
	--bs-sable-dash-svg: var(--bs-dash-svg-light);
	--bs-sable-radio-svg: var(--bs-radio-svg-light);
	--bs-sable-switch-svg: var(--bs-switch-svg-light);

	/* Primary */

	--bs-primary-hue: var(--bs-navy-hue);
	--bs-primary-saturation: var(--bs-navy-saturation);
	--bs-primary-100-hsl: var(--bs-navy-100-hsl);
	--bs-primary-200-hsl: var(--bs-navy-200-hsl);
	--bs-primary-300-hsl: var(--bs-navy-300-hsl);
	--bs-primary-400-hsl: var(--bs-navy-400-hsl);
	--bs-primary-500-hsl: var(--bs-navy-500-hsl);
	--bs-primary-600-hsl: var(--bs-navy-600-hsl);
	--bs-primary-700-hsl: var(--bs-navy-700-hsl);
	--bs-primary-800-hsl: var(--bs-navy-800-hsl);
	--bs-primary-900-hsl: var(--bs-navy-900-hsl);
	--bs-primary-100: var(--bs-navy-100);
	--bs-primary-200: var(--bs-navy-200);
	--bs-primary-300: var(--bs-navy-300);
	--bs-primary-400: var(--bs-navy-400);
	--bs-primary-500: var(--bs-navy-500);
	--bs-primary-600: var(--bs-navy-600);
	--bs-primary-700: var(--bs-navy-700);
	--bs-primary-800: var(--bs-navy-800);
	--bs-primary-900: var(--bs-navy-900);
	--bs-primary-hsl: var(--bs-navy-hsl);
	--bs-primary: var(--bs-navy);
	--bs-primary-foreground-hsl: var(--bs-navy-foreground-hsl);
	--bs-primary-foreground: var(--bs-navy-foreground);
	--bs-primary-text-emphasis-hsl: var(--bs-navy-text-emphasis-hsl);
	--bs-primary-text-emphasis: var(--bs-navy-text-emphasis);
	--bs-primary-hover-bg: var(--bs-navy-hover-bg);
	--bs-primary-active-bg: var(--bs-navy-active-bg);
	--bs-primary-bg-subtle: var(--bs-navy-bg-subtle);
	--bs-primary-border-subtle: var(--bs-navy-border-subtle);
	--bs-primary-checkbox-svg: var(--bs-navy-checkbox-svg);
	--bs-primary-dash-svg: var(--bs-navy-dash-svg);
	--bs-primary-radio-svg: var(--bs-navy-radio-svg);
	--bs-primary-switch-svg: var(--bs-navy-switch-svg


:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;bo


# Check if objdump works correctly when some bits in instruction
# has non-default value

# vrndscalesd	{sae}, $123, %xmm4, %xmm5, %xmm6{%k7}	 # with null RC
.byte 0x62, 0xf3, 0xd5, 0x1f, 0x0b, 0xf4, 0x7b
# vrndscalesd	{sae}, $123, %xmm4, %xmm5, %xmm6{%k7}	 # with not-null RC
.byte 0x62, 0xf3, 0xd5, 0x5f, 0x0b, 0xf4, 0x7b
# vpminud	%zmm4, %zmm5, %zmm6{%k7}	# with 11 EVEX.{B,R'}
.byte 0x62, 0xf2, 0x55, 0x4f, 0x3b, 0xf4
# vpminud	%zmm4, %zmm5, %zmm6{%k7}	# with not-11 EVEX.{B,R'}
.byte 0x62, 0xc2, 0x55, 0x4f, 0x3b, 0xf4
# vpminud	%zmm4, %zmm5, %zmm6{%k7}	# with set EVEX.b bit
.byte 0x62, 0xf2, 0x55, 0x1f, 0x3b, 0xf4
# vpmovdb	%zmm6, 2032(%rdx)		# with unset EVEX.b bit
.byte 0x6


      // Note 1: the values aren't checked for validity beyond being non-null.
      // Note 2: this code is stripped in release mode!
      assert(() {
        requiredKeys.forEach((key) {
          assert(json.containsKey(key),
              'Required key "IoK8sApiStorageV1VolumeAttachmentList[$key]" is missing from JSON.');
          assert(json[key] != null,
              'Required key "IoK8sApiStorageV1VolumeAttachmentList[$key]" has a null value in JSON.');
        });
        return true;
      }());

      return IoK8sApiStorageV1VolumeAttachmentList(
        apiVersion: mapValueOfType<String>(json, r'apiVersion'),
        items: IoK8sApiStorageV1VolumeAttachment.listFromJson(json[r'items'])!,
        kind: mapValueOfType<String>(json, r'kind'),
        metadata:
            IoK8sApimachineryPkgApisMetaV1ListMeta.fromJson(json[r'metadata']),
      );
    }
    return null;
  }

  static List<IoK8sApiStorageV1VolumeAttachmentList>? listFromJson(
    dynamic json, {
    bool growable = false,
  }) {
    final result = <IoK8sApiStorageV1VolumeAttachmentList>[];
    if (json is List && json.isNotEmpty) {
      for (final row in json) {
        final value = IoK8sApiStorageV1VolumeAttachmentList.fromJson(row);
        if (value != null) {
          result.add(value);
        }
      }
    }
    return result.toList(growable: growable);
  }

  static Map<String, IoK8sApiStorageV1VolumeAttachmentList> mapFromJson(
      dynamic json) {
    final map = <String, IoK8sApiStorageV1VolumeAttachmentList>{};
    if (json is Map && json.isNotEmpty) {
      json = json.cast<String, dynamic>(); // ignore: parameter_assignments
      for (final entry in json.entries) {
        final value =
            IoK8sApiStorageV1VolumeAttachmentList.fromJson(entry.value);
        if (value != null) {
          map[entry.key] = value;
        }
      }
    }
    return map;
  }

  // maps a json object with a list of IoK8sApiStorageV1VolumeAttachmentList-objects as value to a dart map
  static Map<String, List<IoK8sApiStorageV1VolumeAttachmentList>>
      mapListFromJson(
    dynamic json, {
    bool growable = false,
  }) {
    final map = <String, List<IoK8sApiStorageV1VolumeAttachmentList>>{};
    if (json is Map && json.isNotEmpty) {
      json = json.cast<String, dynamic>(); // ignore: parameter_assignments
      for (final entry in json.entries) {
        final value = IoK8sApiStorageV1VolumeAttachmentList.listFromJson(
          entry.value,
          growable: growable,
        );
        if (value != null) {
          map[entry.key] = value;
        }
      }
    }
    return map;
  }

  /// The list of required keys that must be present in a JSON.
  static const requiredKeys = <String>{
    'items',
  };
}
//
// AUTO-GENERATED FILE, DO NOT MODIFY!
//
// @dart=2.12

// ignore_for_file: require_trailing_commas
// ignore_for_file: unused_element
// ignore_for_file: unnecessary_this
// ignore_for_file: always_put_required_named_parameters_first
// ignore_for_file: constant_identifier_names
// ignore_for_file: lines_longer_than_80_chars
// ignore_for_file: avoid_function_literals_in_foreach_calls

import 'package:kubenav/models/kubernetes/helpers.dart';
import 'package:kubenav/models/kubernetes/io_k8s_api_apiserverinternal_v1alpha1_storage_version.dart';
import 'package:kubenav/models/kubernetes/io_k8s_apimachinery_pkg_apis_meta_v