ssi',
    ),
    Emoji(
      '⚾',
      'Ball | Baseball',
    ),
    Emoji(
      '🥎',
      'Ball | Baseball | Handschuh | Softball | Sport | Unterarm | werfen',
    ),
    Emoji(
      '🏀',
      'Ball | Basketball | Korb | Sport',
    ),
    Emoji(
      '🏐',
      'Ball | Sport | Volleyball',
    ),
    Emoji(
      '🏈',
      'American Football | Amerika | Ball | Football | Sport | Super Bowl',
    ),
    Emoji(
      '🏉',
      'Ball | Rugby | Rugbyball | Sport',
    ),
    Emoji(
      '🎾',
      'Ball | Sport | Tennis | Tennisball',
    ),
    Emoji(
      '🥏',
      'Disc | Disk | fliegende Untertasse | Frisbee | Scheibe | Ultimate',
    ),
    Emoji(
      '🎳',
      'Bowling | Bowlingkugel | Kugel | Spiel',
    ),
    Emoji(
      '🏏',
      'Ball | Cricket | Kricket | Schläger',
    ),
    Emoji(
      '🏑',
      'Feldhockey | Hockey | Schläger',
    ),
    Emoji(
      '🏒',
      'Eishockey | Eishockey-Schläger und Puck | Hockey | Puck | Schläger',
    ),
    Emoji(
      '🥍',
      'Ball | Lacrosse | Schläger | Sport | Stick | Stock | Tor',
    ),
    Emoji(
      '🏓',
      'Ball | Ping Pong | Schläger | Spiel | Sport | Tischtennis',
    ),
    Emoji(
      '🏸',
      'Badminton | Federball | Schläger',
    ),
    Emoji(
      '🪃',
      'Aborigines | Australien | Boomerang | Bumerang | Schleuder | Waffe | werfen',
    ),
    Emoji(
      '🥅',
      'Fußball | Netz | Sport | Tor',
    ),
    Emoji(
      '⛳',
      'Golffahne | Golfplatz',
    ),
    Emoji(
      '🪁',
      'Drachen | fliegen | hochfliegen | steigen | Wind',
    ),
    Emoji(
      '🛝',
      'Rutschbahn | Rutsche | spielen | Spielplatz | Spielplatzrutsche | Vergnügungspark',
    ),
    Emoji(
      '🏹',
      'Bogen | Pfeil | Pfeil und Bogen',
    ),
    Emoji(
      '🎣',
      'Angel mit Fisch | Angeln | Entspannung',
    ),
    Emoji(
      '🤿 ',
      'schnorcheln | schwimmen | Sport | Sporttauchen | tauchen | Tauchmaske',
    ),
    Emoji(
      '🥊',
      'Boxen | Boxhandschuh | Handschuh | Sport',
    ),
    Emoji(
      '🥋',
      'Judo | Kampfkunst | Kampfsport | Kampfsportanzug | Karate | Taekwondo',
    ),
    Emoji(
      '🎽',
      'Laufen | Laufshirt | Laufshirt mit Schärpe | Schärpe | Sport',
    ),
    Emoji(
      '🛼',
      'Rollen | Rollerskate | Rollschuh | Rollschuh laufen | Schuh | Sport',
    ),
    Emoji(
      '🛷',
      'Rodel | Rodeln | Schlitten | Schnee',
    ),
    Emoji(
      '⛸',
      'Eislauf | Schlittschuh ',
    ),


MUTATED_WARG_HEALTH = 3000,
		MUTATED_WARG_STAGGER_TIME = 6,
		MUTATED_WARG_COLDFIRE_TEMPERATURE = -2,
		MUTATED_WARG_FLAMETHROWER_CD = 8,
		MUTATED_WARG_PLANAR_DAMAGE = 30,
		MUTATED_WARG_FLAMETHROWER_DAMAGE = 20,

		KOALEFANT_CARCASS_MEAT_PER_LEVEL = 14, --3 levels
		KOALEFANT_CARCASS_DECAY_TIME = total_day_time * 0.5,

        CORPSE_GESTALT_WALK_SPEED = 15,
        CORPSE_GESTALT_RUN_SPEED = 20,

        FROG_RAIN_LUNARFROG_CHANCE = 0.6,

        LUNARFROG_HEALTH = 150,
        LUNARFROG_DAMAGE = 10,
        LUNARFROG_PLANAR_DAMAGE = 5,
        LUNARFROG_ATTACK_PERIOD = 1,
        LUNARFROG_TARGET_DIST = 4,
        LUNARFROG_ONATTACK_GROGGINESS = 0.35,
        LUNARFROG_ADDITIONAL_LOOT_CHANCE = 0.5,
        LUNARFROG_ITEMS_TO_STEAL_MIN = 2,
        LUNARFROG_ITEMS_TO_STEAL_MAX = 4,

        BEARGERFUR_SACK_PRESERVER_RATE = 0.05,

        DEERCLOPSEYEBALL_SENTRYWARD_RADIUS = 35,
        DEERCLOPSEYEBALL_SENTRYWARD_GROUND_ICE_RADIUS = 3.5,
        DEERCLOPSEYEBALL_SENTRYWARD_TEMPERATURE_OVERRIDE = -10,

        DEERCLOPSEYEBALL_SENTRYWARD_ROCK_ICE_SPAWN_BASETIME = 7 * total_day_time,
        DEERCLOPSEYEBALL_SENTRYWARD_ROCK_ICE_SPAWN_VARIANCE = 5 * total_day_time,
        DEERCLOPSEYEBALL_SENTRYWARD_ROCK_ICE_MAX_DENSITY_RAD = 12,
        DEERCLOPSEYEBALL_SENTRYWARD_ROCK_ICE_MAX_DENSITY = 6,
        DEERCLOPSEYEBALL_SENTRYWARD_ROCK_ICE_MIN_SPACING = 5,

        ROCK_ICE_TEMPERATURE_GROW_MELT_TIME = 5 * total_day_time,

        HOUNDSTOOTH_BLOWPIPE_DAMAGE = wilson_attack,
        HOUNDSTOOTH_BLOWPIPE_PLANAR_DAMAGE = wilson_attack,
        HOUNDSTOOTH_BLOWPIPE_VS_SHADOW_BONUS = 1.1, -- Multiplier.
        HOUNDSTOOTH_BLOWPIPE_PROJECTILE_SPEED = 25,
        HOUNDSTOOTH_BLOWPIPE_ATTACK_DIST = 12,
        HOUNDSTOOTH_BLOWPIPE_ATTACK_DIST_MAX = 16,

        VASE_FLOWER_SWAPS =
        {
            { lightsource = false,  sanityboost = 5 },
            { lightsource = false,  sanityboost = 5 },
            { lightsource = false,  sanityboost = 5 },
            { lightsource = false,  sanityboost = 5 },
            { lightsource = true,   sanityboost = 0 },
            { lightsource = false,  sanityboost = 5 },
            { lightsource = true,   sanityboost = 0 },
            { lightsource = true,   sanityboost = 0 },
            { lightsource = true,   sanityboost = 0 },
            { lightsource = false,  sanityboost = 5 },
            { lightsource = false,  sanityboost = 5 },
            { lightsource = false,  sanityboost = 5 },
            { ligh


 15.5% <p> 25.0% | 84.1% <p> 61.6% <p> 77.7% <p> 50.0% | 5.0% <p> 6.2% <p> 6.8% <p> 25.0% | 0.529 <p> 0.629 <p> 0.544 <p> 0.500 |

## Openings for threshold = 5.0%

| Opening   | Likeliness | Next moves | Likeliness | White wins      | Draw           | Black wins      | Average points for White |
|-----------|------------|------------|:----------:|:---------------:|:--------------:|:---------------:|:------------------------:|
|  1.g4 g5 2.e3 c5 3.h4 h6 4.c4 Nbc6 5.Nbc3 b6 6.b3 Ne6 7.hxg5 hxg5 8.Be4 Be5 9.Rh1 Rh8 | 7.2% | Qg2 <p> Nd5 <p> Nb2 <p> f3 | 3.7% <p> 3.5% <p> 0.0% <p> 0.0% | 17.0% <p> 5.6% <p> 0.0% <p> 0.0% | 78.0% <p> 89.9% <p> 86.7% <p> 100.0% | 5.0% <p> 4.5% <p> 13.3% <p> 0.0% | 0.560 <p> 0.506 <p> 0.433 <p> 0.500 |
|  1.g4 g5 2.h4 gxh4 3.Nbc3 Nbc6 4.f4 h5 5.gxh5 b6 6.b3 f5 7.e3 | 7.0% | e6 <p> Nf7 <p> Bb7 <p> d6 <p> Rxg1 | 3.6% <p> 1.7% <p> 0.6% <p> 0.5% <p> 0.3% | 14.8% <p> 24.9% <p> 31.8% <p> 9.0% <p> 22.7% | 79.3% <p> 68.1% <p> 61.8% <p> 82.1% <p> 74.4% | 5.9% <p> 7.1% <p> 6.4% <p> 9.0% <p> 2.9% | 0.545 <p> 0.589 <p> 0.627 <p> 0.500 <p> 0.599 |
|  1.g4 g5 2.h4 gxh4 3.f4 h5 4.gxh5 Nbc6 5.Nbc3 Nd4 6.Ne3 f5 7.b3 N8e6 | 5.6% | Rxg8 <p> Ncd5 <p> Ned5 | 3.3% <p> 2.3% <p> 0.0% | 9.8% <p> 9.7% <p> 0.0% | 81.5% <p> 80.8% <p> 100.0% | 8.7% <p> 9.5% <p> 0.0% | 0.506 <p> 0.501 <p> 0.500 |
|  1.g4 g5 2.h4 gxh4 3.Nbc3 Nbc6 4.f4 h5 5.gxh5 Nd4 6.Ne3 f5 7.b3 N8e6 8.Rxg8 Qxg8 9.Ncd5 | 5.5% | c6 <p> Qh7 <p> b6 | 2.9% <p> 2.6% <p> 0.0% | 9.4% <p> 9.5% <p> 50.0% | 82.0% <p> 82.8% <p> 50.0% | 8.6% <p> 7.8% <p> 0.0% | 0.504 <p> 0.509 <p> 0.750 |
|  1.g4 g5 2.h4 h6 3.c4 c5 4.Nbc3 Nbc6 5.b3 b6 6.e3 Ne6 7.hxg5 hxg5 8.Be4 Be5 9.Rh1 Rh8 10.Qg2 Rxh1+ 11.Qxh1 Qg7 12.Nb2 Bxc3 13.Rxc3 Kd8 | 5.3% | Nd1 <p> Rc1 <p> Na4 <p> Qg2 | 4.2% <p> 0.7% <p> 0.3% <p> 0.1% | 19.9% <p> 7.4% <


         );
  @jni$_.internal
  @core$_.override
  jni$_.JType get superType => const jni$_.$JObject$NullableType$();

  @jni$_.internal
  @core$_.override
  jni$_.JType<EmojiCompat$InitCallback?> get nullableType => this;

  @jni$_.internal
  @core$_.override
  final superCount = 1;

  @core$_.override
  int get hashCode => ($EmojiCompat$InitCallback$NullableType$).hashCode;

  @core$_.override
  bool operator ==(Object other) {
    return other.runtimeType == ($EmojiCompat$InitCallback$NullableType$) &&
        other is $EmojiCompat$InitCallback$NullableType$;
  }
}

final class $EmojiCompat$InitCallback$Type$
    extends jni$_.JType<EmojiCompat$InitCallback> {
  @jni$_.internal
  const $EmojiCompat$InitCallback$Type$();

  @jni$_.internal
  @core$_.override
  String get signature => r'Landroidx/emoji2/text/EmojiCompat$InitCallback;';

  @jni$_.internal
  @core$_.override
  EmojiCompat$InitCallback fromReference(jni$_.JReference reference) =>
      EmojiCompat$InitCallback.fromReference(
        reference,
      );
  @jni$_.internal
  @core$_.override
  jni$_.JType get superType => const jni$_.$JObject$NullableType$();

  @jni$_.internal
  @core$_.override
  jni$_.JType<EmojiCompat$InitCallback?> get nullableType =>
      const $EmojiCompat$InitCallback$NullableType$();

  @jni$_.internal
  @core$_.override
  final superCount = 1;

  @core$_.override
  int get hashCode => ($EmojiCompat$InitCallback$Type$).hashCode;

  @core$_.override
  bool operator ==(Object other) {
    return other.runtimeType == ($EmojiCompat$InitCallback$Type$) &&
        other is $EmojiCompat$InitCallback$Type$;
  }
}

/// from: `androidx.emoji2.text.EmojiCompat$LoadStrategy`
class EmojiCompat$LoadStrategy extends jni$_.JObject {
  @jni$_.internal
  @core$_.override
  final jni$_.JType<EmojiCompat$LoadStrategy> $type;

  @jni$_.internal
  EmojiCompat$LoadStrategy.fromReference(
    jni$_.JReference reference,
  )   : $type = type,
        super.fromReference(reference);

  static final _class =
      jni$_.JClass.forName(r'androidx/emoji2/text/EmojiCompat$LoadStrategy');

  /// The type which includes information such as the signature of this class.
  static const jni$_.JType<EmojiCompat$LoadStrategy?> nullableType =
      $EmojiCompat$LoadStrategy$NullableType$();

  /// The type which includes information such as the signature of this class.
  static const jni$_.JType<EmojiCompat$LoadStrategy> type =
      $EmojiCompat$LoadStrategy$Type$();

  /// Maps a specific port to the implemented interface.
  static final core$_.Map<int, $EmojiCompat$LoadStrategy> _$impls = {};
  static jni$_.JObjectPtr _$invoke(
    int port,
    jni$_.JObjectPtr descriptor,
    jni$_.JObjectPtr args,
  ) {
    return _$invokeMethod(
      port,
      jni$_.MethodInvocation.fromAddresses(
        0,
        descriptor.address,
        args.address,
      ),
    );
  }

  static final jni$_.Pointer<
          jni$_.NativeFunction<
              jni$_.JObjectPtr Function(
                  jni$_.Int64, jni$_.JObjectPtr, jni$_.JObjectPtr


;
      _impulse.z = 0.0;
    }
  }

  /**
   * Is the joint motor enabled?
   *
   * @return
   */
  bool isMotorEnabled() {
    return _enableMotor;
  }

  /**
   * Enable/disable the joint motor.
   *
   * @param flag
   */
  void enableMotor(bool flag) {
    _bodyA.setAwake(true);
    _bodyB.setAwake(true);
    _enableMotor = flag;
  }

  /**
   * Set the motor speed, usually in meters per second.
   *
   * @param speed
   */
  void setMotorSpeed(double speed) {
    _bodyA.setAwake(true);
    _bodyB.setAwake(true);
    _motorSpeed = speed;
  }

  /**
   * Get the motor speed, usually in meters per second.
   *
   * @return
   */
  double getMotorSpeed() {
    return _motorSpeed;
  }

  /**
   * Set the maximum motor force, usually in N.
   *
   * @param force
   */
  void setMaxMotorForce(double force) {
    _bodyA.setAwake(true);
    _bodyB.setAwake(true);
    _maxMotorForce = force;
  }

  /**
   * Get the current motor force, usually in N.
   *
   * @param inv_dt
   * @return
   */
  double getMotorForce(double inv_dt) {
    return _motorImpulse * inv_dt;
  }

  double getMaxMotorForce() {
    return _maxMotorForce;
  }

  double getReferenceAngle() {
    return _referenceAngle;
  }

  Vector2 getLocalAxisA() {
    return _localXAxisA;
  }

  void initVelocityConstraints(final SolverData data) {
    _indexA = _bodyA._islandIndex;
    _indexB = _bodyB._islandIndex;
    _localCenterA.setFrom(_bodyA._sweep.localCenter);
    _localCenterB.setFrom(_bodyB._sweep.localCenter);
    _invMassA = _bodyA._invMass;
    _invMassB = _bodyB._invMass;
    _invIA = _bodyA._invI;
    _invIB = _bodyB._invI;

    Vector2 cA = data.positions[_indexA].c;
    double aA = data.positions[_indexA].a;
    Vector2 vA = data.velocities[_indexA].v;
    double wA = data.velocities[_indexA].w;

    Vector2 cB = data.positions[_indexB].c;
    double aB = data.positions[_indexB].a;
    Vector2 vB = data.velocities[_indexB].v;
    double wB = data.velocities[_indexB].w;

    final Rot qA = pool.popRot();
    final Rot qB = pool.popRot();
    final Vector2 d = pool.popVec2();
    final Vector2 temp = pool.popVec2();
    final Vector2 rA = pool.popVec2();
    final Vector2 rB = pool.popVec2();

    qA.setAngle(aA);
    qB.setAngle(aB);

    // Compute the effective masses.
    Rot.mulToOutUnsafe(
        qA,
        d
          ..setFrom(_localAnchorA)
          ..sub(_localCenterA),
        rA);
    Rot.mulToOutUnsafe(
        qB,
        d
          ..setFrom(_localAnchorB)
          ..sub(_localCenterB),
        rB);
    d
      ..setFrom(cB)
      ..sub(cA)
      ..add(rB)
      ..sub(rA);

    double mA = _invMassA, mB = _invMassB;
    double iA = _invIA, iB = _invIB;

    // Compute motor Jacobian and effective mass.


at, $at, $v1
/* 0EE7A4 8018DD64 0C047A5E */  jal   func_8011E978
/* 0EE7A8 8018DD68 C42EA8A0 */ lwc1 $f14, %lo(D_800EA8A0)($at)
/* 0EE7AC 8018DD6C 3C088013 */  lui   $t0, %hi(gKirbyState) # $t0, 0x8013
/* 0EE7B0 8018DD70 2508E7C0 */  addiu $t0, %lo(gKirbyState) # addiu $t0, $t0, -0x1840
/* 0EE7B4 8018DD74 8D0D003C */  lw    $t5, 0x3c($t0)
/* 0EE7B8 8018DD78 8D0E0044 */  lw    $t6, 0x44($t0)
/* 0EE7BC 8018DD7C 3C0F8005 */  lui   $t7, %hi(D_8004A7C4) # $t7, 0x8005
/* 0EE7C0 8018DD80 51AE000F */  beql  $t5, $t6, .L8018DDC0_ovl3
/* 0EE7C4 8018DD84 8FBF0014 */   lw    $ra, 0x14($sp)
/* 0EE7C8 8018DD88 8DEFA7C4 */  lw    $t7, %lo(D_8004A7C4)($t7)
/* 0EE7CC 8018DD8C 3C04800E */ lui $a0, %hi(gEntityGObjProcessArray)
/* 0EE7D0 8018DD90 3C058017 */  lui   $a1, %hi(D_8016C510) # $a1, 0x8017
/* 0EE7D4 8018DD94 8DF80000 */  lw    $t8, ($t7)
/* 0EE7D8 8018DD98 24A5C510 */  addiu $a1, %lo(D_8016C510) # addiu $a1, $a1, -0x3af0
/* 0EE7DC 8018DD9C 0018C880 */  sll   $t9, $t8, 2
/* 0EE7E0 8018DDA0 00992021 */  addu  $a0, $a0, $t9
/* 0EE7E4 8018DDA4 0C02C7B2 */  jal   assign_new_process_entry
/* 0EE7E8 8018DDA8 8C84E510 */ lw $a0, %lo(gEntityGObjProcessArray)($a0)
/* 0EE7EC 8018DDAC 3C088013 */  lui   $t0, %hi(gKirbyState) # $t0, 0x8013
/* 0EE7F0 8018DDB0 2508E7C0 */  addiu $t0, %lo(gKirbyState) # addiu $t0, $t0, -0x1840
/* 0EE7F4 8018DDB4 8D090044 */  lw    $t1, 0x44($t0)
/* 0EE7F8 8018DDB8 AD09003C */  sw    $t1, 0x3c($t0)
.L8018DDBC_ovl3:
/* 0EE7FC 8018DDBC 8FBF0014 */  lw    $ra, 0x14($sp)
.L8018DDC0_ovl3:
/* 0EE800 8018DDC0 27BD0018 */  addiu $sp, $sp, 0x18
/* 0EE804 8018DDC4 03E00008 */  jr    $ra
/* 0EE808 8018DDC8 00000000 */   nop
.type func_8018D4C8_ovl3, @function
.size func_8018D4C8_ovl3, . - func_8018D4C8_ovl3


on the shader geometry.vertex.fx and geometry.fragment.fx.  Please see the links below. Here we output directly depth in view space. This should be the linear depth. It works with the SSAO2 sample as it construct a viewRay in View space.\n_lt_/p_gt_\n\n_lt_p_gt_\n\t_lt_a href_eq__qt_https_dd_//github.com/BabylonJS/Babylon.js/blob/1dd71f9e125247a54c315d870b979ee0ec731433/src/Shaders/geometry.vertex.fx#L40_qt_ rel_eq__qt_external nofollow_qt__gt_https_dd_//github.com/BabylonJS/Babylon.js/blob/1dd71f9e125247a54c315d870b979ee0ec731433/src/Shaders/geometry.vertex.fx#L40_lt_/a_gt_\n_lt_/p_gt_\n\n_lt_p_gt_\n\t_lt_a href_eq__qt_https_dd_//github.com/BabylonJS/Babylon.js/blob/1dd71f9e125247a54c315d870b979ee0ec731433/src/Shaders/geometry.fragment.fx#L30_qt_ rel_eq__qt_external nofollow_qt__gt_https_dd_//github.com/BabylonJS/Babylon.js/blob/1dd71f9e125247a54c315d870b979ee0ec731433/src/Shaders/geometry.fragment.fx#L30_lt_/a_gt_\n_lt_/p_gt_\n\n_lt_p_gt_\n\t \n_lt_/p_gt_\n\n_lt_p_gt_\n\tMy initial question is about depth.vertex.fx and depth.fragment.fx_co_ which I believe are used by DepthRenderer. Then the output of DepthRenderer is used by SSAO effect. \n_lt_/p_gt_\n\n_lt_p_gt_\n\tin depth.vertex.fx\n_lt_/p_gt_\n\n_lt_pre_gt_\n_lt_code_gt_gl_Position _eq_ viewProjection * finalWorld * vec4(position_co_ 1.0)_sm_\n\t\nvDepthMetric _eq_ ((gl_Position.z + depthValues.x) / (depthValues.y))_sm__lt_/code_gt__lt_/pre_gt_\n\n_lt_p_gt_\n\tin ssao.fragment.fx\n_lt_/p_gt_\n\n_lt_pre_gt_\n_lt_code_gt_float depth _eq_ texture2D(textureSampler_co_ vUV).r_sm_\nvec3 position _eq_ vec3(vUV_co_ depth)_sm__lt_/code_gt__lt_/pre_gt_\n\n_lt_p_gt_\n\tAs we know that vUV is [0_co_ 1]_co_ so should be the _qt_depth_qt_. My question is why we don_t_t directly use gl_FragCoord.z? Why we use the _qt_vDepthMetric_qt_?\n_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"BlackMojito","Date":"2018-01-24T09:50:22Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_\n\t_lt_a contenteditable_eq__qt_false_qt_ data-ipshover_eq__qt__qt_ data-ipshover-target_eq__qt_http


D98 0320F809 */  jalr    $ra, $t9
/* 00C9C 809B5D9C 00000000 */  nop
/* 00CA0 809B5DA0 3C0141A0 */  lui     $at, 0x41A0                ## $at = 41A00000
/* 00CA4 809B5DA4 44810000 */  mtc1    $at, $f0                   ## $f0 = 20.00
/* 00CA8 809B5DA8 3C014270 */  lui     $at, 0x4270                ## $at = 42700000
/* 00CAC 809B5DAC 44813000 */  mtc1    $at, $f6                   ## $f6 = 60.00
/* 00CB0 809B5DB0 2418001D */  addiu   $t8, $zero, 0x001D         ## $t8 = 0000001D
/* 00CB4 809B5DB4 44060000 */  mfc1    $a2, $f0
/* 00CB8 809B5DB8 44070000 */  mfc1    $a3, $f0
/* 00CBC 809B5DBC AFB80014 */  sw      $t8, 0x0014($sp)
/* 00CC0 809B5DC0 8FA40054 */  lw      $a0, 0x0054($sp)
/* 00CC4 809B5DC4 02002825 */  or      $a1, $s0, $zero            ## $a1 = 00000000
/* 00CC8 809B5DC8 0C00B92D */  jal     func_8002E4B4
/* 00CCC 809B5DCC E7A60010 */  swc1    $f6, 0x0010($sp)
/* 00CD0 809B5DD0 8E090250 */  lw      $t1, 0x0250($s0)           ## 00000250
/* 00CD4 809B5DD4 3C08809B */  lui     $t0, %hi(func_809B5670)    ## $t0 = 809B0000
/* 00CD8 809B5DD8 25085670 */  addiu   $t0, $t0, %lo(func_809B5670) ## $t0 = 809B5670
/* 00CDC 809B5DDC 15090005 */  bne     $t0, $t1, .L809B5DF4
/* 00CE0 809B5DE0 00000000 */  nop
/* 00CE4 809B5DE4 0C00B65F */  jal     func_8002D97C
/* 00CE8 809B5DE8 02002025 */  or      $a0, $s0, $zero            ## $a0 = 00000000
/* 00CEC 809B5DEC 10000004 */  beq     $zero, $zero, .L809B5E00
/* 00CF0 809B5DF0 3C01C6FA */  lui     $at, 0xC6FA                ## $at = C6FA0000
.L809B5DF4:
/* 00CF4 809B5DF4 0C00B638 */  jal     Actor_MoveForward

/* 00CF8 809B5DF8 02002025 */  or      $a0, $s0, $zero            ## $a0 = 00000000
/* 00CFC 809B5DFC 3C01C6FA */  lui     $at, 0xC6FA                ## $at = C6FA0000
.L809B5E00:
/* 00D00 809B5E00 44814000 */  mtc1    $at, $f8                   ## $f8 = -32000.00
/* 00D04 809B5E04 C60A0080 */  lwc1    $f10, 0x0080($s0)          ## 00000080
/* 00D08 809B5E08 4608503E */  c.le.s  $f10, $f8


oolType, numType, [
    new ConstantMapEntry(trueConst, intConst),
    new ConstantMapEntry(falseConst, doubleConst)
  ]);
  check({mapConst: "<bool, num>{true: 2, false: 2.5}"}, 0);

  Constant tearOffConst = new StaticTearOffConstant(gooMethod);
  check({tearOffConst: "Foo.goo"}, 1);

  Constant partialInstantiationConst =
      new InstantiationConstant(tearOffConst, [intType]);
  check({partialInstantiationConst: "Foo.goo<int>"}, 1);

  Constant typeLiteralConst = new TypeLiteralConstant(foo);
  check({typeLiteralConst: "Foo"}, 1);
}
// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'dart:io' show Directory, File;

import 'package:expect/expect.dart' show Expect;

import 'package:front_end/src/compute_platform_binaries_location.dart'
    show computePlatformBinariesLocation;

import 'package:kernel/binary/ast_from_binary.dart' show BinaryBuilder;

import 'package:kernel/ast.dart';
import 'package:kernel/src/equivalence.dart';
import 'package:kernel/target/targets.dart';

import 'incremental_suite.dart'
    show checkIsEqual, getOptions, initializedCompile, normalCompile;

late Directory outDir;

Future<void> main() async {
  outDir =
      Directory.systemTemp.createTempSync("incremental_load_from_dill_test");
  try {
    await testDart2jsCompile();
    print("----");
  } finally {
    outDir.deleteSync(recursive: true);
  }
}

Future<void> testDart2jsCompile() async {
  final Uri dart2jsUrl = Uri.base.resolve("pkg/compiler/bin/dart2js.dart");
  final Uri invalidateUri =
      Uri.parse("package:_fe_analyzer_shared/src/util/filenames.dart");
  Uri normalDill = outDir.uri.resolve("dart2js.full.dill");
  Uri fullDillFromInitialized =
      outDir.uri.resolve("dart2js.full_from_initialized.dill");
  Uri nonexisting = outDir.uri.resolve("dart2js.nonexisting.dill");

  // Compile dart2js without initializing from dill.
  // Note: Use none-target to avoid mismatches in "interface target" caused by
  // type inference occurring before or after mixin transformation.
  Stopwatch stopwatch = new Stopwatch()..start();
  await normalCompile(dart2jsUrl, normalDill,
      options: getOptions(target: new NoneTarget(new TargetFlags())));
  print("Normal compile took ${stopwatch.elapsedMilliseconds} ms");
  {
    // Check that we don't include the source from files from the sdk.
    final Uri sdkRoot = computePlatformBinariesLocation(forceBuildDir: true);
    Uri platformUri = sdkRoot.resolve("vm_platform_strong.dill");
    Component cSdk = new Component();
    new BinaryBuilder(new File.fromUri(platformUri).readAsBytesSync(),
            disableLazyReading: false)
        .readComponent(cSdk);

    Component c = new Component();
    new BinaryBuilder(new File.fromUri(normalDill).readAsBytesSync(),
            disableLazyReading: false)
        .readComponent(c);
    for (Uri uri in c.uriToSource.keys) {
      if (cSdk.uriToSource.containsKey(uri)) {
        if (c.uriToSource[uri]!.source.length != 0) {
          throw "Compile contained sources for the sdk $uri";
        }
        if ((c.uriToSource[uri]!.lineStarts?.length


le test output
  const thoughtsBeforeRefresh = keyValueBy(thoughts, (text, thought) => ({
    [text]: !!getThoughtById(state, thought.id),
  }))

  expect(thoughtsBeforeRefresh).toEqual({
    a: true,
    b: true,
    c: true,
    d: true,
    e: true,
    one: true,
    two: true,
    x: true,
  })

  timer.useFakeTimer()

  // clear and call initialize again to reload from local db (simulating page refresh)
  appStore.dispatch(clear())
  initialize()
  await timer.runAllAsync()

  appStore.dispatch([setCursor(['a'])])

  // wait for pullBeforeMove middleware to execute
  await timer.runAllAsync()

  const stateAfterRefresh = appStore.getState()

  // Create a map of { [text]: !!thought } for readable test output
  const thoughtsAfterRefresh = keyValueBy(thoughts, (text, thought) => ({
    [text]: !!getThoughtById(stateAfterRefresh, thought.id),
  }))

  expect(thoughtsAfterRefresh).toEqual({
    a: true,
    b: true,
    c: true,
    x: true,
    // pending
    d: false,
    e: false,
    one: false,
    two: false,
  })

  timer.useFakeTimer()

  appStore.dispatch([deleteThoughtWithCursor({})])

  await timer.runAllAsync()

  timer.useRealTimer()

  const stateNew = appStore.getState()
  const exported = exportContext(stateNew, [HOME_TOKEN], 'text/plain')

  expect(exported).toBe(`- ${HOME_TOKEN}`)

  // Create a map of { [text]: !!thought } for readable test output
  const thoughtsAfterDelete = keyValueBy(thoughts, (text, thought) => ({
    [text]: !!getThoughtById(stateNew, thought.id),
  }))

  // all descendants should be removed from the thoughtIndex
  expect(thoughtsAfterDelete).toEqual({
    a: false,
    b: false,
    c: false,
    d: false,
    e: false,
    one: false,
    two: false,
    x: false,
  })

  const lexemes = keyValueBy(thoughts, (text, thought) => ({ [text]: !!getLexeme(stateNew, thought.value) }))

  expect(lexemes).toEqual({
    a: false,
    b: false,
    c: false,
    d: false,
    e: false,
    one: false,
    two: false,
    x: false,
  })
})

it('delete many pending descendants', async () => {
  timer.useFakeTimer()
  initialize()
  await timer.runAllAsync()

  const text = `
    - Cybersemics
      - Team
        - Work
          - Production Viability
            - Production Performance
              - Front-end
              - Back-end
              - Scaling
            - Native Mobile
              - Can we use the same codebase?
          - Community Building
            - Social Media
            - Podcasts
          - Adoption Infrastructure
            - Import
            - Unit Tests
            - API
        - Structures
          - How much should we work together and how much apart?
            - 1-2x week co-working
            - Tue, Wed, Thu
          - How should we communicate? How should we gracefully handle drops in communication?
            - Slack
            - In person
          - Task tracking?
            - GitHub Issues
            - Notion
              - Project Management
          - Weekly stipend?
            - Milestone based
          - Code style and reviews?
          - Check-in
          - Documentation, Codebase, Tasks, Viability
          - Weekly check
            - Expectations, Requirements
            - Expectations for work relationship
            - Not tied to money
        - Agenda
          - 7/17/


/*
 * Copyright 2017 Red Hat Inc.
 *
 * 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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.
 */
#include "aux.h"

static const struct nvkm_i2c_aux_func
gf119_i2c_aux = {
	.address_only = true,
	.xfer = g94_i2c_aux_xfer,
};

int
gf119_i2c_aux_new(struct nvkm_i2c_pad *pad, int index, u8 drive,
		  struct nvkm_i2c_aux **paux)
{
	return g94_i2c_aux_new_(&gf119_i2c_aux, pad, index, drive, paux);
}


turn types;
}

List<ParsedTypeVariable> parseTypeVariables(String text) {
  Parser parser = new Parser(scanString(text), text);
  List<ParsedTypeVariable> result = parser.parseTypeVariablesOpt();
  if (!parser.atEof) {
    throw "Expected EOF, but got '${parser.peek.text}'\n"
        "${parser.computeLocation()}";
  }
  return result;
}

abstract class Visitor<R, A> {
  R visitNamedType(ParsedNamedType node, A a);

  R visitClass(ParsedClass node, A a);

  R visitExtension(ParsedExtension node, A a);

  R visitExtensionTypeDeclaration(ParsedExtensionTypeDeclaration node, A a);

  R visitTypedef(ParsedTypedef node, A a);

  R visitFunctionType(ParsedFunctionType node, A a);

  R visitRecordType(ParsedRecordType node, A a);

  R visitVoidType(ParsedVoidType node, A a);

  R visitTypeVariable(ParsedTypeVariable node, A a);

  R visitIntersectionType(ParsedIntersectionType node, A a);
}
// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import '../ast.dart';

String nullabilityToString(Nullability nullability) {
  switch (nullability) {
    case Nullability.nullable:
      return '?';
    case Nullability.undetermined:
      return '%';
    case Nullability.nonNullable:
      return '';
  }
}

String nameToString(Name? node, {bool includeLibraryName = false}) {
  if (node == null) {
    return 'null';
  } else if (node.library != null && includeLibraryName) {
    return '${libraryNameToString(node.library)}::${node.text}';
  } else {
    return node.text;
  }
}

String libraryNameToString(Library? node) {
  return node == null ? 'null' : node.name ?? 'library ${node.importUri}';
}

String libraryReferenceToString(Reference? reference) {
  if (reference == null) {
    return '<missing-library-reference>';
  } else {
    Library? node = reference.node as Library?;
    if (node != null) {
      return node.importUri.toString();
    } else {
      CanonicalName? canonicalName = reference.canonicalName;
      if (canonicalName != null) {
        return qualifiedCanonicalNameToString(canonicalName,
            includeLibraryName: false);
      } else {
        return '<unlinked-library-reference>';
      }
    }
  }
}

String qualifiedClassNameToString(Class node,
    {bool includeLibraryName = false}) {
  TreeNode? parent = node.parent;
  if (parent is Library && includeLibraryName) {
    return libraryNameToString(parent) + '::' + classNameToString(node);
  } else {
    return classNameToString(node);
  }
}

String qualifiedCanonicalNameToString(CanonicalName canonicalName,
    {bool includeLibraryName = false,
    bool includeLibraryNamesInTypes = false}) {
  if (canonicalName.isRoot) {
    return '<root>';
  } else if (canonicalName.parent!.isRoot) {
    // Library.
    return 'library ${canonicalName.name}';
  } else if (canonicalName.parent!.parent!.isRoot) {
    // Class or extension.
    if (!includeLibraryName) {
      return canonicalName.name;
    }
    String parentName = qualifiedCanonicalNameToString(canonicalName.parent!,
        includeLibraryName: includeLibraryName,
        includeLibraryNamesInTypes: includeLibraryNamesInTypes);
    return


using this file.
 *
 * The Original Code and all software distributed under the License are
 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
 * Please see the License for the specific language governing rights and
 * limitations under the License.
 *
 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
 */

#include "SYS.h"

#if defined(__x86_64__)

__SYSCALL(___sigreturn, sigreturn, 2)

#elif defined(__i386__)

__SYSCALL_INT(___sigreturn, sigreturn, 2)

#elif defined(__arm__)

__SYSCALL(__sigreturn, sigreturn, 2)

#else
#error Unsupported architecture
#endif


 0.75rem; /* Equal to px */
  --smaller: 0.875rem; /* Equal to 14px */

  // Topography type scale - Headers
  --h1: 2.25rem; // Display S
  --h2: 2rem; // Headline L
  --h3: 1.75rem; // Headline M
  --h4: 1.5rem; // Headline S
  --h5: 1.375rem; // Title L
  --h6: 1rem; // Title M

  /* Roundness */
  --big-radius: 24px;
  --medium-radius: 16px;
  --small-radius: 8px;

  /* ## Font Weights */
  --light: 350;
  --regular: 400;
  --medium: 500;
  --bold: 650;

  /* ------------- */
  /* # COLOURS */
  /* ------------- */
// Colour pallettes generated via https://material-foundation.github.io/material-theme-builder/
// Surface elevation multipliers
--elevation1: 0.05;
--elevation2: 0.08;
--elevation3: 0.11;
--elevation4: 0.12;
--elevation5: 0.14;
}

.theme-light {
  // Light Tokens
--primary: #5F4BBD;
--primary-r: 95;
--primary-g: 75;
--primary-b: 189;
--onPrimary: #FFFFFF;
--primaryContainer: #E7DEFF;
--onPrimaryContainer: #1A0064;
--secondary: #605C71;
--onSecondary: #FFFFFF;
--secondaryContainer: #E6DFF9;
--onSecondaryContainer: #1C192C;
--tertiary: #7C5264;
--onTertiary: #FFFFFF;
--tertiaryContainer: #FFD9E8;
--onTertiaryContainer: #301020;
--error: #BA1B1B;
--errorContainer: #FFDAD4;
--onError: #FFFFFF;
--onErrorContainer: #410001;
--background: #FFFBFF;
--onBackground: #1C1B1E;
--surface: #FFFBFF;
--surface-r: 255;
--surface-g: 251;
--surface-b: 255;
--surface: #FFFBFF;
--onSurface: #1C1B1E;
--surfaceVariant: #E5E0EB;
--onSurfaceVariant: #48454F;
--outline: #79767F;
--inverseOnSurface: #F4EFF4;
--inverseSurface: #313033;
--primaryInverse: #CABEFF;

// Change camel case variabels into Hyphen Delimited Strings
--on-primary: var(--onPrimary);
--primary-container: var(--primaryContainer);
--on-primary-container: var(--onPrimaryContainer);

--on-secondary: var(--onSecondary);
--secondary-container: var(--secondaryContainer);
--on-secondary-container: var(--onSecondaryContainer);

--on-tertiary: var(--onTertiary);
--tertiary-container: var(--tertiaryContainer);
--on-tertiary-container: var(--onTertiaryContainer);

--error-container: var(--errorContainer);
--on-error: var(--onError);
--on-error-container: var(--onErrorContainer);

--on-background: var(--onBackground);
--on-surface: var(--onSurface);
--surface-variant: var(--surfaceVariant);
--on-surface-variant: var(--onSurfaceVariant);

--inverse-on-surface: var(--inverseOnSurface);
--inverse-surface: var(--inverseSurface);
--primary-inverse: var(--primaryInverse);

// Calculating surface elevation
--surface1: rgb(
  calc(var(--primary-r) * var(--elevation1) + var(--surface-r) * (1 - var(--elevation1))),
  calc(var(--primary-g) * var(--elevation1) + var(--surface-g) * (1 - var(--elevation1))),
  calc(var(--primary-b) *


685 6.438-2.112 10.388-2.071l-.02 2Zm0-4c-3.67-.038-5.717.332-9.612 1.923l-.756-1.852c4.127-1.685 6.438-2.112 10.388-2.071l-.02 2Zm0-4c-3.67-.038-5.717.332-9.612 1.923l-.756-1.852c4.127-1.685 6.438-2.112 10.388-2.071l-.02 2ZM34.5 13v3h2v-3h-2ZM31 14v3h2v-3h-2Zm-3.5 1v3h2v-3h-2Z"/></g></svg>';
  static const String register_book_negative =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48" preserveAspectRatio="xMidYMid meet" viewBox="0 0 48 48"><path fill="currentColor" fill-rule="evenodd" d="M48 0H0v48h48V0ZM25 13.177V36.42l.003.002.01.004h.002l.008-.002c4.909-2.223 9.191-3.483 14.923-2.437a.058.058 0 00.047-.011.034.034 0 00.007-.007V10.537c-5.658-1.415-9.683.136-15 2.64Zm17-2.193v-.46c0-.885-.589-1.694-1.484-1.92-6.15-1.546-10.628.092-15.757 2.477-.25.052-.503.104-.759.16-.256-.056-.51-.108-.76-.16-5.128-2.385-9.606-4.023-15.756-2.476A1.973 1.973 0 006 10.524v.46c-.406.089-.82.185-1.243.287a.991.991 0 00-.757.965v25.539c0 .633.583 1.105 1.204.987 6.213-1.185 10.4-1.268 16.122-.4a3 3 0 005.348 0c5.721-.868 9.91-.785 16.122.4A1.012 1.012 0 0044 37.775V12.236a.991.991 0 00-.757-.965A63.511 63.511 0 0042 10.984Zm-19 2.193c-5.317-2.504-9.342-4.055-15-2.64v23.431l.002.002.001.002.004.003a.058.058 0 00.048.012c5.73-1.047 10.013.213 14.922 2.435a.018.018 0 00.008.003h.001a.026.026 0 00.011-.004l.003-.002V13.177ZM11.01 29.003c3.67-.038 5.717.332 9.612 1.923l.756-1.852c-4.127-1.685-6.438-2.112-10.388-2.071l.02 2Zm9.612-2.077c-3.895-1.59-5.942-1.961-9.612-1.923l-.02-2c3.95-.041 6.26.386 10.388 2.071l-.756 1.852Zm-9.612-5.923c3.67-.038 5.717.332 9.612 1.923l.756-1.852c-4.127-1.685-6.438-2.112-10.388-2.071l.02 2ZM13.5 16v-3h-2v3h2Zm3.5-2v3h-2v-3h2Zm3.5 4v-3h-2v3h2Zm16.49 11.003c-3.67-.038-5.717.332-9.612 1.923l-


from "sap/base/i18n/ResourceBundle";
import Router from "sap/ui/core/routing/Router";
import History from "sap/ui/core/routing/History";

/**
 * @namespace sap.demo.ui5typescripttutorialapp.controller
 */
export default abstract class BaseController extends Controller {
  /**
   * Convenience method for accessing the component of the controller's view.
   * @returns The component of the controller's view
   */
  public getOwnerComponent(): AppComponent {
    return super.getOwnerComponent() as AppComponent;
  }

  /**
   * Convenience method to get the components' router instance.
   * @returns The router instance
   */
  public getRouter(): Router {
    return UIComponent.getRouterFor(this);
  }

  /**
   * Convenience method for getting the i18n resource bundle of the component.
   * @returns The i18n resource bundle of the component
   */
  public getResourceBundle(): ResourceBundle | Promise<ResourceBundle> {
    const oModel = this.getOwnerComponent().getModel("i18n") as ResourceModel;
    return oModel.getResourceBundle();
  }

  /**
   * Convenience method for getting the view model by name in every controller of the application.
   * @param [sName] The model name
   * @returns The model instance
   */
  public getModel(sName?: string): Model {
    return this.getView().getModel(sName);
  }

  /**
   * Convenience method for setting the view model in every controller of the application.
   * @param oModel The model instance
   * @param [sName] The model name
   * @returns The current base controller instance
   */
  public setModel(oModel: Model, sName?: string): BaseController {
    this.getView().setModel(oModel, sName);
    return this;
  }

  /**
   * Convenience method for triggering the navigation to a specific target.
   * @public
   * @param sName Target name
   * @param [oParameters] Navigation parameters
   * @param [bReplace] Defines if the hash should be replaced (no browser history entry) or set (browser history entry)
   */
  public navTo(sName: string, oParameters?: object, bReplace?: boolean): void {
    this.getRouter().navTo(sName, oParameters, undefined, bReplace);
  }

  /**
   * Convenience event handler for navigating back.
   * It there is a history entry we go one step back in the browser history
   * If not, it will replace the current entry of the browser history with the main route.
   */
  public onNavBack(): void {
    const sPreviousHash = History.getInstance().getPreviousHash();
    if (sPreviousHash !== undefined) {
      window.history.go(-1);
    } else {
      this.getRouter().navTo("main", {}, undefined, true);
    }
  }
}
import { EventEmitter } from 'events'

export default class event {
	private static eve = new EventEmitter();

	//绑定事件
	static eve_on(eventName: string, func: any) {
		this.eve.on(eventName, func)
	}

	//触发事件
	static eve_emit(eventName: string, arg?: any) {
		this.eve.emit(eventName, arg)
	}
}import {
    ACTION_APP_SIMULATE, ACTION_APP_SIMULATE_FAILED, ACTION_APP_SIMULATE_READY,
    actionAppSimulate, actionAppSimulateFailed, actionAppSimulateReady,
}


! 928: UDIVX_R	udivx 	%r8, %r9, %r2
	.word 0xa47a2afc  ! 935: SDIV_I	sdiv 	%r8, 0x0afc, %r18
	.word 0x867a2884  ! 938: SDIV_I	sdiv 	%r8, 0x0884, %r3
	.word 0x866a27d0  ! 943: UDIVX_I	udivx 	%r8, 0x07d0, %r3
	.word 0x8efa2c58  ! 948: SDIVcc_I	sdivcc 	%r8, 0x0c58, %r7
	.word 0xacfa2048  ! 951: SDIVcc_I	sdivcc 	%r8, 0x0048, %r22
	.word 0x8f6a20f8  ! 957: SDIVX_I	sdivx	%r8, 0x00f8, %r7
	.word 0x8e720009  ! 958: UDIV_R	udiv 	%r8, %r9, %r7
	.word 0x896a2754  ! 959: SDIVX_I	sdivx	%r8, 0x0754, %r4
	.word 0x8ef22130  ! 964: UDIVcc_I	udivcc 	%r8, 0x0130, %r7
	.word 0x846a0009  ! 966: UDIVX_R	udivx 	%r8, %r9, %r2
	.word 0xb87a0009  ! 971: SDIV_R	sdiv 	%r8, %r9, %r28
	.word 0x8d6a0009  ! 974: SDIVX_R	sdivx	%r8, %r9, %r6
	.word 0xaf6a0009  ! 978: SDIVX_R	sdivx	%r8, %r9, %r23
	.word 0xae7a0009  ! 983: SDIV_R	sdiv 	%r8, %r9, %r23
	.word 0xa67a0009  ! 984: SDIV_R	sdiv 	%r8, %r9, %r19
	.word 0x8efa0009  ! 985: SDIVcc_R	sdivcc 	%r8, %r9, %r7
	nop
	nop
	nop
        ta      T_GOOD_TRAP

th_main_1:
        setx  MAIN_BASE_DATA_VA, %r1, %r8
        setx  0x0000000000000000, %g1, %r9
        setx  0x80, %g2, %g1
        wr  %g1, %g0, %asi
	    rd %fprs, %g1
        wr %g1, 0x4, %fprs
	ldd	[%r8 + 0], %f0
	ldd	[%r8 + 8], %f2
	ldd	[%r8 + 16], %f4
	ldd	[%r8 + 24], %f6
	ldd	[%r8 + 32], %f8
	ldd	[%r8 + 40], %f10
	ldd	[%r8 + 48], %f12
	ldd	[%r8 + 56], %f14
	ldd	[%r8 + 64], %f16
	ldd	[%r8 + 72], %f18
	ldd	[%r8 + 80], %f20
	ldd	[%r8 + 88], %f22
	ldd	[%r8 + 96], %f24
	ldd	[%r8 + 104], %f26
	ldd	[%r8 + 112], %f28
	ldd	[%r8 + 120], %f30
	ldd	[%r8 + 128], %f32
	ldd	[%r8 + 136], %f34
	ldd	[%r8 + 144], %f36
	ldd	[%r8 + 152], %f38
	ldd	[%r8 + 160], %f


.com/bandprotocol/chain/v3/x/tss"
	"github.com/bandprotocol/chain/v3/x/tss/types"
)

type TestCase struct {
	Msg         string
	Malleate    func()
	PostTest    func()
	ExpectedErr error
}

func (s *KeeperTestSuite) TestFailedSubmitDKGRound1Req() {
	ctx, msgSrvr, k := s.ctx, s.msgServer, s.keeper
	testCase := testutil.TestCases[0].Group
	member := testCase.Members[0]

	// Setup group
	s.SetupWithPreparedTestCase(0, types.GROUP_STATUS_ROUND_1)

	// Add failed cases
	var req types.MsgSubmitDKGRound1
	tcs := []TestCase{
		{
			"group not found",
			func() {
				req = types.MsgSubmitDKGRound1{
					GroupID: 99,
					Round1Info: types.Round1Info{
						MemberID:           member.ID,
						CoefficientCommits: member.CoefficientCommits,
						OneTimePubKey:      member.OneTimePubKey(),
						A0Signature:        member.A0Signature,
						OneTimeSignature:   member.OneTimeSignature,
					},
					Sender: sdk.AccAddress(member.PubKey()).String(),
				}
			},
			func() {},
			types.ErrGroupNotFound,
		},
		{
			"member not found",
			func() {
				req = types.MsgSubmitDKGRound1{
					GroupID: testCase.ID,
					Round1Info: types.Round1Info{
						MemberID:           99,
						CoefficientCommits: member.CoefficientCommits,
						OneTimePubKey:      member.OneTimePubKey(),
						A0Signature:        member.A0Signature,
						OneTimeSignature:   member.OneTimeSignature,
					},
					Sender: sdk.AccAddress(member.PubKey()).String(),
				}
			},
			func() {},
			types.ErrMemberNotFound,
		},
		{
			"wrong one time sign",
			func() {
				req = types.MsgSubmitDKGRound1{
					GroupID: testCase.ID,
					Round1Info: types.Round1Info{
						MemberID:           member.ID,
						CoefficientCommits: member.CoefficientCommits,
						OneTimePubKey:      member.OneTimePubKey(),
						A0Signature:        member.A0Signature,
						OneTimeSignature:   []byte("wrong one_time_sig"),
					},
					Sender: sdk.AccAddress(member.PubKey()).String(),
				}
			},
			func() {},
			types.ErrVerifyOneTimeSignatureFailed,
		},
		{
			"wrong a0 signature",
			func() {
				req = types.MsgSubmitDKGRound1{
					GroupID: testCase.ID,
					Round1Info: types.Round1Info{
						MemberID:           member.ID,
						CoefficientCommits: member.CoefficientCommits,
						OneTimePubKey:      member.OneTimePubKey(),
						A0Signature:        []byte("wrong a0_sig"),
						OneTimeSignature:   member.OneTimeSignature,
					},
					Sender: sdk.AccAddress(member.PubKey()).String(),
				}
			},
			func() {},
			types.ErrVerifyA0SignatureFailed,
		},
		{
			"round 1 already commit",
			func() {
				// Add round 1 info
				k.AddRound1Info(ctx, testCase.ID, types.Round1Info{
					MemberID:           member.ID,
					CoefficientCommits: member.CoefficientCommits,
					OneTimePubKey:      member.OneTimePubKey(),
					A0Signature:        member.A0Signature


					Xml.Append("'>false</result>");
				}
			}

			if (!PartialSuccess)
			{
				lock (this.synchObject)
				{
					this.queries.Remove(QueryId);
				}

				await Query.Abort();
			}

			await DisposeObject(Command);

			Xml.Append("</partialExecution>");

			await e.IqResult(Xml.ToString());
		}

		private async Task AbortCommonNodeQueryHandler(object Sender, IqEventArgs e)
		{
			LinkedList<INode> Nodes = null;
			LinkedList<Query> Queries = null;
			RequestOrigin Caller = await this.GetTokens(e.FromBareJid, e.Query);
			ThingReference ThingRef;
			Language Language = await GetLanguage(e.Query);
			DataSourceRec Rec;
			XmlElement E;
			INode Node;
			ICommand Command = null;
			ICommand Command2;
			string CommandId = XML.Attribute(e.Query, "command");
			string QueryId = XML.Attribute(e.Query, "queryId");

			foreach (XmlNode N in e.Query.ChildNodes)
			{
				E = N as XmlElement;
				if (E is null)
					continue;

				if (E.LocalName == "nd")
				{
					ThingRef = GetThingReference(E);

					lock (this.synchObject)
					{
						if (!this.dataSources.TryGetValue(ThingRef.SourceId, out Rec))
							Rec = null;
					}

					if (Rec is null)
						Node = null;
					else
						Node = await Rec.Source.GetNodeAsync(ThingRef);

					if (Node is null || !await Node.CanViewAsync(Caller))
					{
						await e.IqError(new StanzaErrors.ItemNotFoundException(await GetErrorMessage(Language, 8, "Node not found."), e.IQ));
						return;
					}

					if (Nodes is null)
					{
						Nodes = new LinkedList<INode>();
						Queries = new LinkedList<Query>();
					}

					Nodes.AddLast(Node);
					Queries.AddLast(new Query(CommandId, QueryId, new object[] { Sender, e }, Language, Node, Caller));

					if (Command is null)
					{
						Command = await FindCommand(CommandId, Node);

						if (Command is null)
						{
							await e.IqError(new StanzaErrors.ItemNotFoundException(await GetErrorMessage(Language, 14, "Command not found."), e.IQ));
							return;
						}
						else if (!await Command.CanExecuteAsync(Caller))
						{
							await e.IqError(new StanzaErrors.ForbiddenException(await GetErrorMessage(Language, 13, "Not sufficient privileges."), e.IQ));
							return;
						}
					}
					else
					{
						Command2 = await FindCommand(CommandId, Node);
						if (Command2 is null || !commandComparerInstance.Equals(Command, Command2))
						{
							await e.IqError(new StanzaErrors.ItemNotFoundException(await GetErrorMessage(Language, 14, "Command not found."), e.IQ));
							return;
						}
						else if (!await Command2.CanExecuteAsync(Caller))
						{
							await e.IqError(new StanzaErrors.ForbiddenException(await GetErrorMessage(Language, 13, "Not sufficient privileges."), e.IQ));
							return;
						}
					}
				}
			}

			if (Nodes is null)
			{
				await e.IqError(new StanzaErrors.BadRequestException(await GetErrorMessage(Language, 20, "No nodes specified."), e.IQ));
				return;
			}

			if (Command.Type != CommandType.Query)
			{
				await e.IqError(new StanzaErrors.BadRequestException(await GetErrorMessage(Language, 17, "Query command expected."), e.IQ));
				return;
			}


r ::-moz-selection { background: rgba(37, 59, 118, .99); }
.cm-s-blackboard .CodeMirror-gutters { background: #0C1021; border-right: 0; }
.cm-s-blackboard .CodeMirror-guttermarker { color: #FBDE2D; }
.cm-s-blackboard .CodeMirror-guttermarker-subtle { color: #888; }
.cm-s-blackboard .CodeMirror-linenumber { color: #888; }
.cm-s-blackboard .CodeMirror-cursor { border-left: 1px solid #A7A7A7 !important; }

.cm-s-blackboard .cm-keyword { color: #FBDE2D; }
.cm-s-blackboard .cm-atom { color: #D8FA3C; }
.cm-s-blackboard .cm-number { color: #D8FA3C; }
.cm-s-blackboard .cm-def { color: #8DA6CE; }
.cm-s-blackboard .cm-variable { color: #FF6400; }
.cm-s-blackboard .cm-operator { color: #FBDE2D;}
.cm-s-blackboard .cm-comment { color: #AEAEAE; }
.cm-s-blackboard .cm-string { color: #61CE3C; }
.cm-s-blackboard .cm-string-2 { color: #61CE3C; }
.cm-s-blackboard .cm-meta { color: #D8FA3C; }
.cm-s-blackboard .cm-builtin { color: #8DA6CE; }
.cm-s-blackboard .cm-tag { color: #8DA6CE; }
.cm-s-blackboard .cm-attribute { color: #8DA6CE; }
.cm-s-blackboard .cm-header { color: #FF6400; }
.cm-s-blackboard .cm-hr { color: #AEAEAE; }
.cm-s-blackboard .cm-link { color: #8DA6CE; }
.cm-s-blackboard .cm-error { background: #9D1E15; color: #F8F8F8; }

.cm-s-blackboard .CodeMirror-activeline-background {background: #3C3636 !important;}
.cm-s-blackboard .CodeMirror-matchingbracket {outline:1px solid grey;color:white !important}/*

    Name:       Paraíso (Light)
    Author:     Jan T. Sott

    Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror)
    Inspired by the art of Rubens LP (http://www.rubenslp.com.br)

*/

.cm-s-paraiso-light.CodeMirror {background: #e7e9db; color: #41323f;}
.cm-s-paraiso-light div.CodeMirror-selected {background: #b9b6b0 !important;}
.cm-s-paraiso-light.CodeMirror ::selection { background: #b9b6b0; }
.cm-s-paraiso-light.CodeMirror ::-moz-selection { background: #b9b6b0; }
.cm-s-paraiso-light .CodeMirror-gutters {background: #e7e9db; border-right: 0px;}
.cm-s-paraiso-light .CodeMirror-guttermarker { color: black; }
.cm-s-paraiso-light .CodeMirror-guttermarker-subtle { color: #8d8687; }
.cm-s-paraiso-light .CodeMirror-linenumber {color: #8d8687;}
.cm-s-paraiso-light .CodeMirror-cursor {border-left: 1px solid #776e71 !important;}

.cm-s-paraiso-light span.cm-comment {color: #e96ba8;}
.cm-s-paraiso-light span.cm-atom {color: #815ba4;}
.cm-s-paraiso-light span.cm-number {color: #815ba4;}

.cm-s-paraiso-light span.cm-property, .cm-s-paraiso-light span.cm-attribute {color: #48b685;}
.cm-s-paraiso-light span.cm-keyword {color: #ef6155;}
.cm-s-paraiso-light span.cm-string {color: #fec418;}


actually works
    # if no default min_depth is provided.

    mobilenet_v2.mobilenet(
        tf.placeholder(tf.float32, (10, 224, 224, 2)),
        conv_defs=mobilenet_v2.V2_DEF, depth_multiplier=0.01,
        finegrain_classification_mode=True)
    s = [op.outputs[0].get_shape().as_list()[-1] for op in find_ops('Conv2D')]
    s = set(s)
    # All convolutions will be 8->48, except for the last one.
    self.assertSameElements(s, [8, 48, 1001, 1280])

  def testMobilenetBase(self):
    tf.reset_default_graph()
    # Verifies that mobilenet_base returns pre-pooling layer.
    with slim.arg_scope((mobilenet.depth_multiplier,), min_depth=32):
      net, _ = mobilenet_v2.mobilenet_base(
          tf.placeholder(tf.float32, (10, 224, 224, 16)),
          conv_defs=mobilenet_v2.V2_DEF, depth_multiplier=0.1)
      self.assertEqual(net.get_shape().as_list(), [10, 7, 7, 128])

  def testWithOutputStride16(self):
    tf.reset_default_graph()
    out, _ = mobilenet.mobilenet_base(
        tf.placeholder(tf.float32, (10, 224, 224, 16)),
        conv_defs=mobilenet_v2.V2_DEF,
        output_stride=16)
    self.assertEqual(out.get_shape().as_list()[1:3], [14, 14])

  def testWithOutputStride8AndExplicitPadding(self):
    tf.reset_default_graph()
    out, _ = mobilenet.mobilenet_base(
        tf.placeholder(tf.float32, (10, 224, 224, 16)),
        conv_defs=mobilenet_v2.V2_DEF,
        output_stride=8,
        use_explicit_padding=True,
        scope='MobilenetV2')
    self.assertEqual(out.get_shape().as_list()[1:3], [28, 28])

  def testWithOutputStride16AndExplicitPadding(self):
    tf.reset_default_graph()
    out, _ = mobilenet.mobilenet_base(
        tf.placeholder(tf.float32, (10, 224, 224, 16)),
        conv_defs=mobilenet_v2.V2_DEF,
        output_stride=16,
        use_explicit_padding=True)
    self.assertEqual(out.get_shape().as_list()[1:3], [14, 14])

  def testBatchNormScopeDoesNotHaveIsTrainingWhenItsSetToNone(self):
    sc = mobilenet.training_scope(is_training=None)
    self.assertNotIn('is_training', sc[slim.arg_scope_func_key(
        slim.batch_norm)])

  def testBatchNormScopeDoesHasIsTrainingWhenItsNotNone(self):
    sc = mobilenet.training_scope(is_training=False)
    self.assertIn('is_training', sc[slim.arg_scope_func_key(slim.batch_norm)])
    sc = mobilenet.training_scope(is_training=True)
    self.assertIn('is_training', sc[slim.arg_scope_func_key(slim.batch_norm)])
    sc = mobilenet.training_scope()
    self.assertIn('is_training', sc[slim.arg_scope_func_key(slim.batch_norm)])

if __name__ == '__main__':
  tf.test.main()


o call.
         */
        void attachOnInit(void (*funcOnInit)(void)) {
                pFuncOnInit = funcOnInit;
        };
        /**@}*/

        /** True if a wireless receiver is connected. */
        bool XboxReceiverConnected;
        /** Variable used to indicate if the XBOX 360 controller is successfully connected. */
        uint8_t Xbox360Connected[4];

protected:
        /** Pointer to USB class instance. */
        USB *pUsb;
        /** Device address. */
        uint8_t bAddress;
        /** Endpoint info structure. */
        EpInfo epInfo[XBOX_MAX_ENDPOINTS];

private:
        /**
         * Called when the controller is successfully initialized.
         * Use attachOnInit(void (*funcOnInit)(void)) to call your own function.
         * This is useful for instance if you want to set the LEDs in a specific way.
         * @param controller The initialized controller.
         */
        void onInit(uint8_t controller);
        void (*pFuncOnInit)(void); // Pointer to function called in onInit()

        bool bPollEnable;

        /* Variables to store the buttons */
        uint32_t ButtonState[4];
        uint32_t OldButtonState[4];
        uint16_t ButtonClickState[4];
        int16_t hatValue[4][4];
        uint16_t controllerStatus[4];
        bool buttonStateChanged[4]; // True if a button has changed

        bool L2Clicked[4]; // These buttons are analog, so we use we use these bools to check if they where clicked or not
        bool R2Clicked[4];

        uint32_t checkStatusTimer; // Timing for checkStatus() signals

        uint8_t readBuf[EP_MAXPKTSIZE]; // General purpose buffer for input data
        uint8_t writeBuf[7]; // General purpose buffer for output data

        void readReport(uint8_t controller); // read incoming data
        void printReport(uint8_t controller, uint8_t nBytes); // print incoming date - Uncomment for debugging

        /* Private commands */
        void XboxCommand(uint8_t controller, uint8_t* data, uint16_t nbytes);
        void checkStatus();
};
#endif


invalidate(true);
                        getMessagesController().clearFullUsers();
                        finishFragment();
                    }
                }
            }));
        }
    }

    private boolean loading;
    private boolean valueSet;
    private void setValue() {
        if (loading || valueSet) return;
        loading = true;
        BusinessChatbotController.getInstance(currentAccount).load(bots -> {
            currentValue = bots;
            currentBot = currentValue == null || currentValue.connected_bots.isEmpty() ? null : currentValue.connected_bots.get(0);
            selectedBot = currentBot == null ? null : getMessagesController().getUser(currentBot.bot_id);
            rights = currentBot != null ? TL_account.TL_businessBotRights.clone(currentBot.rights) : TL_account.TL_businessBotRights.makeDefault();
            exclude = currentBot != null ? currentBot.recipients.exclude_selected : true;
            if (recipientsHelper != null) {
                recipientsHelper.setValue(currentBot == null ? null : currentBot.recipients);
            }
            if (listView != null && listView.adapter != null) {
                listView.adapter.update(true);
            }
            checkDone(true);
            valueSet = true;
        });
    }

    public boolean hasChanges() {
        if (!valueSet) return false;
        if ((selectedBot != null) != (currentBot != null)) return true;
        if ((selectedBot == null ? 0 : selectedBot.id) != (currentBot == null ? 0 : currentBot.bot_id)) return true;
        if (selectedBot != null) {
            if (!rights.equals(currentBot.rights)) {
                return true;
            }
            if (recipientsHelper != null && recipientsHelper.hasChanges()) {
                return true;
            }
        }
        return false;
    }

    @Override
    public boolean onBackPressed() {
        if (hasChanges()) {
            AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
            builder.setTitle(LocaleController.getString(R.string.UnsavedChanges));
            builder.setMessage(LocaleController.getString(R.string.BusinessBotUnsavedChanges));
            builder.setPositiveButton(LocaleController.getString(R.string.ApplyTheme), (dialogInterface, i) -> processDone());
            builder.setNegativeButton(LocaleController.getString(R.string.PassportDiscard), (dialog, which) -> finishFragment());
            showDialog(builder.create());
            return false;
        }
        return super.onBackPressed();
    }

    private void checkDone(boolean animated) {
        if (doneButton == null) return;
        final boolean hasChanges = hasChanges();
        doneButton.setEnabled(hasChanges);
        if (animated) {
            doneButton.animate().alpha(hasChanges ? 1.0f : 0.0f).scaleX(hasChanges ? 1.0f : 0.0f).scaleY(hasChanges ? 1.0f : 0.0f).setDuration(180).start();
        } else {
            doneButton.setAlpha(hasChanges ? 1.0f : 0.0f);
            doneButton.setScaleX(hasChanges ? 1.0f : 0.0f);
            doneButton.setScaleY(hasChanges ? 1.0f : 0.0f);
        }
    }

    @Override
    public boolean onFragmentCreate() {
        setValue();
        return super.onFragmentCreate();
    }
}
/*
 * Copyright (C) 2019-2025 qwq233 <qwq233@qwq2333.top>
 * https://github.com/qwq233/Nullgram
 *
 * 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, version 2 of the License.
 *
 * This program is distributed in the hope that it will be useful,
 * bu


 инженерных практик, включая асинхронное программирование, паттерны проектирования и строгие принципы безопасности.

Приложение имеет как интуитивно понятный графический интерфейс (GUI), так и интерфейс командной строки (CLI) для интеграции в скрипты и автоматизации рутинных задач.

---

## 🌟 Ключевые возможности (Features)

| Функция | Описание |
| :--- | :--- |
| **Мультиплатформенное скачивание** | Интеграция с `yt-dlp` обеспечивает поддержку сотен видео-сайтов, включая YouTube, TikTok, Instagram и многие другие. |
| **Гибкая загрузка** | Поддержка **Google Drive**, **Яндекс.Диск** и локального сохранения с возможностью указания конкретной папки назначения. |
| **Продвинутая настройка** | Выбор качества видео/аудио, использование прокси-серверов и гибкие шаблоны для именования файлов. |
| **Асинхронный конвейер** | Скачивание и загрузка выполняются в параллельных асинхронных потоках, что обеспечивает максимальную производительность и отзывчивость интерфейса. |
| **Надежность и отказоустойчивость** | "Предполетные" проверки (Pre-flight checks) валидируют настройки и доступность сервисов *до* начала длительных операций. |
| **Сохранение сессии** | Приложение автоматически сохраняет и загружает состояние интерфейса между запусками, экономя время пользователя. |
| **Безопасная аутентификация** | Использование стандарта **OAuth 2.0** для Google Drive и токенов для Яндекс.Диска. Все ключи и секреты хранятся локально и **никогда** не попадают в код. |
| **Двойной интерфейс (GUI + CLI)** | Полноценный графический интерфейс для интерактивной работы и CLI для автоматизации и скриптинга. |

---

## 🚀 Технологический стек и архитектура

Этот проект был построен с упором на качество, безопасность и расширяемость.

| Категория | Технологии и Принципы |
| :--- | :--- |
| **Язык и среда** | `Python 3.10+` |
| **Графический интерфейс (GUI)** | `PySide6` (официальные биндинги Qt for Python) |
| **Асинхронность** | `asyncio`, `QThreadPool` для выполнения длительных операций в фоновых потоках, что гарантирует отзывчивость GUI. |
| **Скачивание** | `yt-dlp` (самый


) 90)
        {
          WorldGen.KillTile(myX, myY, false, false, false);
          if (Main.netMode == 1)
            NetMessage.SendData(17, -1, -1, (NetworkText) null, 0, (float) myX, (float) myY, 0.0f, 0, 0, 0);
          flag1 = true;
          this.GamepadEnableGrappleCooldown();
        }
        else if (Main.tile[myX, myY].type == (ushort) 466)
        {
          flag1 = true;
          this.GamepadEnableGrappleCooldown();
          int y = myY;
          Tile tileSafely = Framing.GetTileSafely(myX, myY);
          if (tileSafely.frameY == (short) 0)
            y += 3;
          if (tileSafely.frameY == (short) 18)
            y += 2;
          if (tileSafely.frameY == (short) 36)
            ++y;
          bool flag2 = !DD2Event.Ongoing && !NPC.AnyNPCs(548) && !Main.pumpkinMoon && !Main.snowMoon;
          if (flag2)
            flag2 = this.HasItem(3828);
          if (flag2)
          {
            flag2 = !DD2Event.WouldFailSpawningHere(myX, y);
            if (!flag2)
              DD2Event.FailureMessage(-1);
          }
          if (flag2)
            flag2 = this.ConsumeItem(3828, true);
          if (flag2)
            DD2Event.SummonCrystal(myX, y);
        }
        else if (Main.tile[myX, myY].type == (ushort) 334)
        {
          flag1 = true;
          if (this.ItemFitsWeaponRack(this.inventory[this.selectedItem]))
          {
            this.GamepadEnableGrappleCooldown();
            this.PlaceWeapon(myX, myY);
          }
          else
          {
            int num1 = myX;
            int j = myY;
            if (Main.tile[myX, myY].frameY == (short) 0)
              ++j;
            if (Main.tile[myX, myY].frameY == (short) 36)
              --j;
            int frameX = (int) Main.tile[myX, j].frameX;
            int num2 = (int) Main.tile[myX, j].frameX;
            int num3 = 0;
            while (num2 >= 5000)
            {
              num2 -= 5000;
              ++num3;
            }
            if (num3 != 0)
              num2 = (num3 - 1) * 18;
            int num4 = num2 % 54;
            if (num4 == 18)
            {
              frameX = (int) Main.tile[myX - 1, j].frameX;
              --num1;
            }
            if (num4 == 36)
            {
              frameX = (int) Main.tile[myX - 2, j].frameX;
              int num5 = num1 - 2;
            }
            if (frameX >= 5000)
            {
              this.GamepadEnableGrappleCooldown();
              WorldGen.KillTile(myX, j, true, false, false);
              if (Main.netMode == 1)
                NetMessage.SendData(17, -1, -1, (NetworkText) null, 0, (float) myX, (float) j, 1f, 0, 0, 0);
            }
          }
        }
        else if (Main.tile[myX, myY].type == (ushort) 440)
        {
          flag1 = true;
          int index = myX;
          int j = myY;
          int num1 = (int) Main.tile[index, j].frameX / 54;
          int num2 = (int) Main.tile[index, j].frameY / 54;
          int num3 = (int) Main.tile[index, j].frameX % 54 / 18;
          int num4 = (int) Main.tile[index, j].frameY % 54 / 18;
          i


� 로그인 에러');
      safePrint(e);
    }
  }

  initSign() async {
    try {
      SocialInfo? socialInfo = await localDB.findSocialInfo();
      if (socialInfo == null) {
      } else {
        LoginResponse? loginResponse = await signRepository.signInWithAccessToken(socialInfo: socialInfo);
        if (loginResponse != null) {
          GetUserData? getUserData = await signRepository.getUserData();
          safePrint(getUserData?.userData);
          localDB.updateUserInfo(getUserData?.userData);
          if (getUserData != null) {
            if (getUserData.userData?.name == null) {
              state = null;
            } else {
              safePrint('아 여기 있습니다 토큰');
              safePrint(loginResponse.accessToken);
              state = true;
            }
          }
        }
      }
    } catch (e) {
      safePrint('에러 났어요');
      safePrint(e);
    }
  }

  userAlready() => state = false;
}
import 'package:flutter/cupertino.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:nuuz/models/nuuz_talk/comment_success_model.dart';
import 'package:nuuz/models/nuuz_talk/react_model.dart';
import 'package:nuuz/models/nuuz_talk/trendlist.dart';
import 'package:nuuz/models/nuuz_talk/userpost.dart';
import 'package:nuuz/models/user_info/loginresponse.dart';
import 'package:nuuz/models/user_info/userdata.dart';
import 'package:nuuz/modules/home/nuuz_talk_screen.dart';
import 'package:nuuz/modules/nuuz_talk/nuuz_talk_controller.dart';
import 'package:nuuz/modules/nuuz_talk/providers/category/category_provider.dart';
import 'package:nuuz/modules/nuuz_talk/providers/user_post/repository/user_post_repository.dart';
import 'package:nuuz/repository/local_repository/local_db.dart';
import 'package:nuuz/util/log_print.dart';

import 'package:collection/collection.dart' as Collection;

final singleUserPostProvider = FutureProvider.autoDispose.family<UserPost, String>((ref, postId) {
  return UserPostRepository().getUserPost(postId);
});

// final userPostsProvider = FutureProvider.autoDispose((ref) async {
//   final talkCategory = ref.watch(nuuzTalkProvider);
//   final skipData = ref.watch(paginationSkipProvider);
//   LocalDB localDB = LocalDB();
//   LoginResponse? loginResponse = await localDB.findAuthInfo();
//   return UserPostRepository().getPosts(Category.categories[talkCategory]["category_id"]!,loginResponse?.accessToken,skipData);
// });

final userAllPostNotifier = StateNotifierProvider<UserAllPostNotifier, List<UserPost>?>((ref) {
  return UserAllPostNotifier();
});

class UserAllPostNotifier extends StateNotifier<List<UserPost>?> {
  UserAllPostNotifier() : super(null);

  Future<void> getAllPosts({required BuildContext context}) async {
    try {
      state = await UserPostRepository().getAllPosts(context: context);
      if (state != null) {
        safePrint("state");
      }
    } catch (e) {
      safePrint(e);
    }
  }
}

final userPostsProvider = StateNotifierProvider<UserPostsProvider, List<UserPost>?>((ref) {
  return UserPostsProvider();
});

class UserPostsProvider extends StateNotifier<List<UserPost>?> {
  UserPostsProvider() : super(null);

  bool isCallReactAPI=false;

  Future<void> getAllPosts(category_id, skipData,BuildContext context) async {
    try {
      LocalDB localDB = LocalDB();


hancer>(<parameters>)
#U and V planes don't need filtering, Y needs it
#EdgeMask(<...>, "roberts", Y=3, U=-128, V=-128) for greyscale
map
clip3 = clip1.EdgeMask(15, 60, "roberts", Y=3, U=1, V=1)
return MaskedMerge(clip1, clip2, clip3)

2) MSoften

Replace EdgeEnhancer by a spatial softener (cascaded blurs?
spatialsoftenMMX?) and use upper=true to select near-flat pixels.

3) Rainbow reduction (as described here in this thread<
/cite>
)

Warning, this isn't a miracle solution either

clip2 = clip1 soften at maximum (using deen("m2d") or edeen for
instance)
#Get luma edgemap and increase edges by inflating
# -> wider areas to be processed
clip3 = clip1.EdgeMask(6, "roberts", Y=3, U=1, V=1).Inflate(Y=3, U=1,
V=1)
#Now, use the luma edgemask as a chroma mask
clip3 = YtoUV(clip3, clip3).ReduceBy2().Binarize(15, upper=false, Y=1, U=3, V=3)
#We have to process pixels' chroma near edges, but keep intact Y plane
return MaskedMerge(clip1, clip2, clip3, Y=1, U=3, V=3)

4) Supersampled fxtoon

Not tested

. Use tweak to darken picture or make a plugin that scales down Y values
-> clip2
. Build edge mask, Supersample this mask, Binarize it with a high threshold
(clamping sounds better), Inflate it -> clip3
. Apply the darker pixels of clip2 depending on the values of clip3

5) Warpsharp for dark luma

Not tested

. Apply warpsharp -> clip2 (replacement pixels)
. Create a clamping filter or a low-luma bypass filter -> clip3 (mask)

6) pseudo-deinterlacer (chroma will still be
problematic)

Not tested

clip2 = clip1.SeparateFields().SelectEven().<Method>Resize(<parame
ters>)
clip3 = clip1.<CombingDetector>(<parameters>)
return MaskedMerge(clip1, clip2, clip3, Y=3, U=3, V=3)

(chroma even more problematic)

7) Non-rectangular overlays

In fact, this is handled more nicely by layer and mask...

#Simple hack because ImageReader needs an integer fps...
#Most sources are natively in YUY2/YV12
clip = AviSsource("test.avi").ConvertToYV12().assumefps(fps)
#Load the picture to be overlayed
image = ImageReader("mask.bmp", 0, clip.framecount()-1, 24,
use_DevIl=false)
#Simple way: assume black is transparent
#Any other colour would be quite more complicate


		 read / write

The Music.autoDisengageDelay static property is an integer variable, specifying for how long (measured in milliseconds) audio needs to be inactive in order for the auto disengage process to be initiated.

In certain sonified content, such as a case where the only Music Object instance that is playing is being used to play musical notes for user interface sonification and has its usage instance property set to "notes", the audio for the sonified document could switch back and forth quite rapidly between audible and inaudible states, as new notes are triggered and old notes die. For performance reasons, it may be desirable in such cases to limit the amount of rapid engaging and disengaging of the audio engine that occurs, so that the Auto Disengage extension does not actually hamper the user experience rather than improve it.

The Music.autoDisengageDelay property, therefore, provides a way to buffer against this rapid flip-flopping of the audio engine's engaged state that could occur with certain types of sonified content. So, for example, if this property was set to the value 5000, then the sonified document would have to remain inaudible for 5000 milliseconds (5 seconds) before the auto disengage process could be initiated. And, if something happened to result in the document becoming audible once again during this delay period, then the pending auto disengage process would be aborted.

This property can be modified at any time, and its value at the moment that audio becomes inactive will determine the auto disengage delay for that moment.

If the Music.autoDisengageEnabled static property is set to false, then the Music.autoDisengageDelay property will have no effect on the behavior of the document.

 Music.autoDisengageEnabled

		 CATEGORY
		 Static Property

		 MODULE
		 Music Object E


நேரம்","கம் தர நேரம்"]},"Pacific/Chatham":{"long":["சத்தாம் நிலையான நேரம்","சத்தாம் பகலொளி நேரம்"]},"America/Santiago":{"long":["சிலி நிலையான நேரம்","சிலி கோடை நேரம்"]},"Asia/Shanghai":{"long":["சீன நிலையான நேரம்","சீன பகலொளி நேரம்"]},"Asia/Choibalsan":{"long":["சோய்பால்சன் நிலையான நேரம்","சோய்பால்சன் கோடை நேரம்"]},"Indian/Christmas":{"long":["கிறிஸ்துமஸ் தீவு நேரம்","கிறிஸ்துமஸ் தீவு நேரம்"]},"Indian/Cocos":{"long":["கோகோஸ் தீவுகள் நேரம்","கோகோஸ் தீவுகள் நேரம்"]},"America/Bogota":{"long":["கொலம்பியா நிலையான நேரம்","கொலம்பியா கோடை நேரம்"]},"Pacific/Rarotonga":{"long":["குக் தீவுகள் நிலையான நேரம்","குக் தீவுகள் அரை கோடை நேரம்"]},"America/Havana":{"long":["கியூபா நிலையான நேரம்","கியூபா பகலொளி நேரம்"]},"Antarctica/Davis":{"long":["டேவிஸ் நேரம்","டேவிஸ் நேரம்"]},"Antarctica/DumontDUrville":{"long":["டுமோண்ட்-டி உர்வில்லே நேரம்","டுமோண்ட்-டி உர்வில்லே நேரம்"]},"Asia/Dushanbe":{"long":["தஜிகிஸ்தான் நேரம்","தஜிகிஸ்தான் நேரம்"]},"America/Paramaribo":{"long":["சுரினாம் நேரம்","சுரினாம் நேரம


= 0;
    for (var i = 0; i < length; i++) {
      vec.add(Const(i, width: width));
      count = count + i;
    }
    const controlValue = 14;
    final control = Const(controlValue, width: log2Ceil(vec.length));
    final muxTree =
        ReductionTree(vec, muxReduce, control: control, name: 'mux');
    await muxTree.build();
    File('mux_tree.sv').writeAsStringSync(muxTree.generateSynth());
  });

  test('reduction tree of muxes -- large flopped', () async {
    final clk = SimpleClockGenerator(10).clk;

    const length = 1024;
    final width = log2Ceil(length);
    final vec = <Logic>[];

    var count = 0;
    for (var i = 0; i < length; i++) {
      vec.add(Const(i, width: width));
      count = count + i;
    }
    final control = Logic(width: log2Ceil(vec.length))..put(0);
    final muxTree = ReductionTree(vec, muxReduce,
        clk: clk, depthBetweenFlops: 2, control: control, name: 'mux');

    final positions = [7, 4, 5, 6, 12, 0, 1010, 511, 212, 0, 789];

    await muxTree.build();
    final latency = muxTree.latency;
    unawaited(Simulator.run());
    for (var clkCnt = 0; clkCnt < positions.length + latency; clkCnt++) {
      await clk.nextNegedge;
      if (clkCnt < positions.length) {
        control.put(positions[clkCnt]);
      }
      if (clkCnt >= latency) {
        expect(muxTree.out.value.toInt(), positions[clkCnt - latency]);
      }
    }
    await Simulator.endSimulation();
  });

  test('reduction tree of adders -- large', () async {
    final clk = SimpleClockGenerator(10).clk;

    const width = 17;
    const length = 290;
    final vec = <Logic>[];

    // First sum will be length *(length-1) /2
    var count = 0;
    for (var i = 0; i < length; i++) {
      vec.add(Const(i, width: width));
      count = count + i;
    }
    for (var radix = 2; radix < length; radix++) {
      final prefixAdd = ReductionTree(vec, radix: radix, addReduce, clk: clk);
      expect(prefixAdd.out.value.toInt(), equals(count));
    }
  });

  test('reduction tree of adders -- large, pipelined', () async {
    final clk = SimpleClockGenerator(10).clk;

    const width = 17;
    const length = 290;
    final vec = <Logic>[];
    // First sum will be length *(length-1) /2
    for (var i = 0; i < length; i++) {
      vec.add(Const(i, width: width));
    }
    const radix = 4;
    final prefixAdd = ReductionTree(
        vec,
        radix: radix,
        addReduce,
        clk: clk,
        depthBetweenFlops: 1,
        name: 'prefix_reduction');

    await prefixAdd.build();
    unawaited(Simulator.run());
    var cycles = 0;
    await clk.nextNegedge;
    cycles++;
    // second sum will be length
    for (var i = 0; i < length; i++) {
      vec[i].inject(1);
    }
    await clk.nextNegedge;
    cycles++;
    // third sum will be length *2
    for (var i = 0; i < length; i++) {
      vec[i].inject(2);
    }
    if (prefixAdd.latency > cycles) {
      await clk.waitCycles(prefixAdd.latency - cycles);
      await


ROTATION_180 -> orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE
                Surface.ROTATION_270 -> orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
                else -> orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
            }
        }// if the device's natural orientation is landscape or if the device
        // is square:
        return orientation
    }
    fun onPause(){
        //恢复系统其它媒体的状态
        muteAudioFocus(context,true)
        getCurrentPosition()
        video_view.release(false)
        danmaku.pause()
    }

    fun onResume(){
        //暂停系统其它媒体的状态
        muteAudioFocus(context,false)
        video_view.openVideo()
        if (isLive){
            video_view.seekTo(0)
        }else{
            video_view.seekTo(mCurrentPosition)
        }
        danmaku.resume()
    }

    fun onRestart(){
        video_view.openVideo()
        if (isLive){
            video_view.seekTo(0)
        }else{
            video_view.seekTo(mCurrentPosition)
        }
        danmaku.restart()
    }

    fun onDestory(){
        mHandler.removeCallbacksAndMessages(null)
        stopPlay()
        danmaku.release()
    }

    override fun onTouch(view: View?, motionEvent: MotionEvent?): Boolean {
        //将触摸事件交给GestureDetector
        if(mGestureDector!!.onTouchEvent(motionEvent)){
            return true
        }
        //多点触控
        when(motionEvent!!.action and MotionEvent.ACTION_MASK){
            MotionEvent.ACTION_UP -> endGesture()
        }
        return false
    }

    /**
     * 手势结束
     */
    private fun endGesture() {
        volume = -1
        brightness = -1f
        if (newPosition >= 0) {
            mHandler.removeMessages(MESSAGE_SEEK_NEW_POSITION)
            mHandler.sendEmptyMessage(MESSAGE_SEEK_NEW_POSITION)
        } else {
            /**什么都不做(do nothing) */
        }
        mHandler.removeMessages(MESSAGE_HIDE_CENTER_BOX)
        mHandler.sendEmptyMessageDelayed(MESSAGE_HIDE_CENTER_BOX, 500)
        ll_video_progress.visibility = View.GONE
        video_volume_controller_root.visibility = View.GONE
        video_brightness_controller_root.visibility = View.GONE
    }

    private fun getActivityFromContext(context: Context?): Activity? {
        var context = context
        if (null != context) {
            while (context is ContextWrapper) {
                if (context is Activity) {
                    return context
                }else if (context is androidx.fragment.app.Fragment){
                    return context.activity
                }
                context = context.baseContext
            }
        }
        return null
    }

    /**
     * @param bMute 值为true时为关闭背景音乐。
     */
    private fun muteAudioFocus(context: Context, bMute: Boolean): Boolean {
        var bool = false
        val am = context.getSystemService(Context.AUDIO_SERVICE) as AudioManager
        if (bMute) {
            val result = am.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT)
            bool = result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED
        } else {
            val result = am.abandonAudioFocus(null)
            bool = result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED
        }
        return bool
    }

    private open inner class PlayerGesture


 from here to the wanted compress/decompress stuff if
        // need be
        switch (tp) {
            case ZIP_COMPRESSION:
                Deflater def = new Deflater(Deflater.DEFAULT_COMPRESSION, false);
                def.setInput(tmp, 0, inSize);
                def.finish();
                ret = def.deflate(out);
                return ret;
            case RLE_COMPRESSION:
                return rleCompress(tmp, inSize, out);
            default:
                return -1;
        }
    }

    private static final int rleCompress(byte[] in, int inLen, byte[] out) {
        int runStart = 0, runEnd = 1, outWrite = 0;
        while (runStart < inLen) {
            while (runEnd < inLen && in[runStart] == in[runEnd] && (runEnd - runStart - 1) < RLE_MAX_RUN)
                runEnd++;
            if (runEnd - runStart >= RLE_MIN_RUN) {
                // Compressable run
                out[outWrite++] = (byte) ((runEnd - runStart) - 1);
                out[outWrite++] = in[runStart];
                runStart = runEnd;
            } else {
                // Uncompressable run
                while (runEnd < inLen && (((runEnd + 1) >= inLen || in[runEnd] != in[runEnd + 1]) || ((runEnd + 2) >= inLen || in[runEnd + 1] != in[runEnd + 2])) && (runEnd - runStart) < RLE_MAX_RUN)
                    runEnd++;
                out[outWrite++] = (byte) (runStart - runEnd);
                while (runStart < runEnd)
                    out[outWrite++] = in[runStart++];
            }
            runEnd++;
        }
        return outWrite;
    }
}package org.sunflow.core.accel;

import org.sunflow.core.AccelerationStructure;
import org.sunflow.core.IntersectionState;
import org.sunflow.core.PrimitiveList;
import org.sunflow.core.Ray;
import org.sunflow.math.BoundingBox;
import org.sunflow.math.MathUtils;
import org.sunflow.math.Vector3;
import org.sunflow.system.Timer;
import org.sunflow.system.UI;
import org.sunflow.system.UI.Module;
import org.sunflow.util.IntArray;

public final class UniformGrid implements AccelerationStructure {
    private int nx, ny, nz;
    private PrimitiveList primitives;
    private BoundingBox bounds;
    private int[][] cells;
    private float voxelwx, voxelwy, voxelwz;
    private float invVoxelwx, invVoxelwy, invVoxelwz;

    public UniformGrid() {
        nx = ny = nz = 0;
        bounds = null;
        cells = null;
        voxelwx = voxelwy = voxelwz = 0;
        invVoxelwx = invVoxelwy = invVoxelwz = 0;
    }

    public void build(PrimitiveList primitives) {
        Timer t = new Timer();
        t.start();
        this.primitives = primitives;
        int n = primitives.getNumPrimitives();
        // compute bounds
        bounds = primitives.getWorldBounds(null);
        // create grid from number of objects
        bounds.enlargeUlps();
        Vector3 w = bounds.getExtents();
        double s = Math.pow((w.x * w.y * w.z) / n, 1 / 3.0);
        nx = MathUtils.clamp((int) ((w.x / s) + 0.5), 1, 128);
        ny = MathUtils.clamp((int) ((w.y / s) + 0.5), 1, 128);
        nz = MathUtils.clamp((int) ((w.z / s) + 0.5), 1, 128);
        voxelwx = w.x / nx;
        voxelwy = w.y / ny;
        voxelwz = w.z / nz;
        invVoxelwx = 1 / voxelwx;
        invVoxelwy = 1 / voxelwy;
        invVoxelwz = 1 / voxelwz;
        UI.printDetailed(Module.ACCEL, "Creating


x lr
	.align 2, 0
_0600E6D4: .word 0x0380FFF4
	arm_func_end CAM_SetCapaInfo

	arm_func_start CAM_SetSupRate
CAM_SetSupRate: ; 0x0600E6D8
	ldr r3, _0600E6F4 ; =0x0380FFF4
	mov r2, #0x1c
	ldr r3, [r3]
	ldr r3, [r3, #0x31c]
	mla r2, r0, r2, r3
	strh r1, [r2, #0x10]
	bx lr
	.align 2, 0
_0600E6F4: .word 0x0380FFF4
	arm_func_end CAM_SetSupRate

	arm_func_start CAM_SetLastSeqCtrl
CAM_SetLastSeqCtrl: ; 0x0600E6F8
	ldr r3, _0600E714 ; =0x0380FFF4
	mov r2, #0x1c
	ldr r3, [r3]
	ldr r3, [r3, #0x31c]
	mla r2, r0, r2, r3
	strh r1, [r2, #0x14]
	bx lr
	.align 2, 0
_0600E714: .word 0x0380FFF4
	arm_func_end CAM_SetLastSeqCtrl

	arm_func_start CAM_SetAuthSeed
CAM_SetAuthSeed: ; 0x0600E718
	ldr r3, _0600E734 ; =0x0380FFF4
	mov r2, #0x1c
	ldr r3, [r3]
	ldr r3, [r3, #0x31c]
	mla r2, r0, r2, r3
	strh r1, [r2, #0xe]
	bx lr
	.align 2, 0
_0600E734: .word 0x0380FFF4
	arm_func_end CAM_SetAuthSeed

	arm_func_start CAM_UpdateLifeTime
CAM_UpdateLifeTime: ; 0x0600E738
	ldr r2, _0600E758 ; =0x0380FFF4
	mov r1, #0x1c
	ldr r2, [r2]
	ldr r2, [r2, #0x31c]
	mla r1, r0, r1, r2
	ldrh r0, [r1, #0x1a]
	strh r0, [r1, #0x18]
	bx lr
	.align 2, 0
_0600E758: .word 0x0380FFF4
	arm_func_end CAM_UpdateLifeTime

	arm_func_start CAM_AllocateAID
CAM_AllocateAID: ; 0x0600E75C
	stmdb sp!, {r3, r4, r5, r6, r7, lr}
	ldr r1, _0600E808 ; =0x0380FFF4
	mov r7, r0
	ldr r1, [r1]
	mov r0, #0x1000000
	add r1, r1, #0x12c
	add r4, r1, #0x400
	bl __VENEER_OS_DisableIrqMask
	mov r6, r0
	mov r5, #1
	mov r1, #2
	b _0600E7EC
_0600E78C:
	ldrh r0, [r4, #0xe]
	tst r0, r1
	bne _0600E7E4
	orr r0, r0, r1
	strh r0, [r4, #0xe]
	ldrh r0, [r4, #0xc]
	add r0, r0, #1
	strh r0, [r4, #0xc]
	ldrh r0, [r4


	// all "mined" and pending logs with topic firstTopic
			11: {FilterCriteria{FromBlock: big.NewInt(rpc.LatestBlockNumber.Int64()), ToBlock: big.NewInt(rpc.PendingBlockNumber.Int64()), Topics: [][]common.Hash{{firstTopic}}}, expectedCase11, ""},
			// match all logs due to wildcard topic
			12: {FilterCriteria{Topics: [][]common.Hash{nil}}, allLogs[1:], ""},
		}
	)

	// create all filters
	for i := range testCases {
		testCases[i].id, _ = api.NewFilter(testCases[i].crit)
	}

	// raise events
	time.Sleep(1 * time.Second)
	if nsend := logsFeed.Send(allLogs); nsend == 0 {
		t.Fatal("Shoud have at least one subscription")
	}
	if err := mux.Post(core.PendingLogsEvent{Logs: allLogs}); err != nil {
		t.Fatal(err)
	}

	for i, tt := range testCases {
		var fetched []*types.Log
		timeout := time.Now().Add(1 * time.Second)
		for { // fetch all expected logs
			results, err := api.GetFilterChanges(tt.id)
			if err != nil {
				t.Fatalf("Unable to fetch logs: %v", err)
			}

			fetched = append(fetched, results.([]*types.Log)...)
			if len(fetched) >= len(tt.expected) {
				break
			}
			// check timeout
			if time.Now().After(timeout) {
				break
			}

			time.Sleep(100 * time.Millisecond)
		}

		if len(fetched) != len(tt.expected) {
			t.Errorf("invalid number of logs for case %d, want %d log(s), got %d", i, len(tt.expected), len(fetched))
			return
		}

		for l := range fetched {
			if fetched[l].Removed {
				t.Errorf("expected log not to be removed for log %d in case %d", l, i)
			}
			if !reflect.DeepEqual(fetched[l], tt.expected[l]) {
				t.Errorf("invalid log on index %d for case %d", l, i)
			}
		}
	}
}

// TestPendingLogsSubscription tests if a subscription receives the correct pending logs that are posted to the event feed.
func TestPendingLogsSubscription(t *testing.T) {
	t.Parallel()

	var (
		mux        = new(event.TypeMux)
		db         = ethdb.NewMemDatabase()
		txFeed     = new(event.Feed)
		rmLogsFeed = new(event.Feed)
		logsFeed   = new(event.Feed)
		chainFeed  = new(event.Feed)
		backend    = &testBackend{mux, db, 0, txFeed, rmLogsFeed, logsFeed, chainFeed}
		api        = NewPublicFilterAPI(backend, false)

		firstAddr      = common.HexToAddress("0x1111111111111111111111111111111111111111")
		secondAddr     = common.HexToAddress("0x2222222222222222222222222222222222222222")
		thirdAddress   = common.HexToAddress("0x3333333333333333333333333333333333333333")
		notUsedAddress = common.HexToAddress("0x9999999999999999999999999999999999999999")
		firstTopic     = common.HexToHash("0x1111111111111111111111111111111111111111111111111111111111111111")
		secondTopic    = common.HexToHash("0x2222222222222222222222222222222222222222222222222222222222222222")
		thirdTopic     = common.HexToHash("0x3333333333333333333333333333333333333333333333333333333333333333")
		fourthTopic    = common.HexToHash("0x4444444444444444444444444444444444444444444444444444444444444444")
		notUsedTopic   = common.HexToHash("0x9999999999999999999999999999999999999999999999999999999999999999")

		allLogs = []core.PendingLogsEvent{


'\u1EE9': 'u',
    '\u1EEF': 'u',
    '\u1EED': 'u',
    '\u1EF1': 'u',
    '\u1EE5': 'u',
    '\u1E73': 'u',
    '\u0173': 'u',
    '\u1E77': 'u',
    '\u1E75': 'u',
    '\u0289': 'u',
    '\u24E5': 'v',
    '\uFF56': 'v',
    '\u1E7D': 'v',
    '\u1E7F': 'v',
    '\u028B': 'v',
    '\uA75F': 'v',
    '\u028C': 'v',
    '\uA761': 'vy',
    '\u24E6': 'w',
    '\uFF57': 'w',
    '\u1E81': 'w',
    '\u1E83': 'w',
    '\u0175': 'w',
    '\u1E87': 'w',
    '\u1E85': 'w',
    '\u1E98': 'w',
    '\u1E89': 'w',
    '\u2C73': 'w',
    '\u24E7': 'x',
    '\uFF58': 'x',
    '\u1E8B': 'x',
    '\u1E8D': 'x',
    '\u24E8': 'y',
    '\uFF59': 'y',
    '\u1EF3': 'y',
    '\u00FD': 'y',
    '\u0177': 'y',
    '\u1EF9': 'y',
    '\u0233': 'y',
    '\u1E8F': 'y',
    '\u00FF': 'y',
    '\u1EF7': 'y',
    '\u1E99': 'y',
    '\u1EF5': 'y',
    '\u01B4': 'y',
    '\u024F': 'y',
    '\u1EFF': 'y',
    '\u24E9': 'z',
    '\uFF5A': 'z',
    '\u017A': 'z',
    '\u1E91': 'z',
    '\u017C': 'z',
    '\u017E': 'z',
    '\u1E93': 'z',
    '\u1E95': 'z',
    '\u01B6': 'z',
    '\u0225': 'z',
    '\u0240': 'z',
    '\u2C6C': 'z',
    '\uA763': 'z',
    '\u0386': '\u0391',
    '\u0388': '\u0395',
    '\u0389': '\u0397',
    '\u038A': '\u0399',
    '\u03AA': '\u0399',
    '\u038C': '\u039F',
    '\u038E': '\u03A5',
    '\u03AB': '\u03A5',
    '\u038F': '\u03A9',
    '\u03AC': '\u03B1',
    '\u03AD': '\u03B5',
    '\u03AE': '\u03B7',
    '\u03AF': '\u03B9',
    '\u03CA': '\u03B9',
    '\u0390': '\u03B9',
    '\u03CC': '\u03BF',
    '\u03CD': '\u03C5',
    '\u03CB': '\u03C5',
    '\u03B0': '\u03C5',
    '\u03C9': '\u03C9',
    '\u03C2': '\u03C3'
  };

  return diacritics;
});

S2.define('select2/data/base',[
  '../utils'
], function (Utils) {
  function BaseAdapter ($element, options) {
    BaseAdapter.__super__.constructor.call(this);
  }

  Utils.Extend(BaseAdapter, Utils.Observable);

  BaseAdapter.prototype.current = function (callback) {
    throw new Error('The `current` method must be defined in child classes.');
  };

  BaseAdapter.prototype.query = function (params, callback) {
    throw new Error('The `query` method must be defined in child classes.');
  };

  BaseAdapter.prototype.bind = function (container, $container) {
    // Can be implemented in subclasses
  };

  BaseAdapter.prototype.destroy = function () {
    // Can be implemented in subclasses
  };

  BaseAdapter.prototype.generateResultId = function (container, data) {
    var id = container.id + '-result-';

    id += Utils.generateChars(4);

    if (data.id != null) {
      id += '-' + data.id.toString();
    } else {
      id += '-' +


 = applyForce_worldAnchorA,
        worldAnchorB = applyForce_worldAnchorB,
        ri = applyForce_ri,
        rj = applyForce_rj,
        ri_x_f = applyForce_ri_x_f,
        rj_x_f = applyForce_rj_x_f;

    // Get world anchors
    this.getWorldAnchorA(worldAnchorA);
    this.getWorldAnchorB(worldAnchorB);

    // Get offset points
    worldAnchorA.vsub(bodyA.position,ri);
    worldAnchorB.vsub(bodyB.position,rj);

    // Compute distance vector between world anchor points
    worldAnchorB.vsub(worldAnchorA,r);
    var rlen = r.norm();
    r_unit.copy(r);
    r_unit.normalize();

    // Compute relative velocity of the anchor points, u
    bodyB.velocity.vsub(bodyA.velocity,u);
    // Add rotational velocity

    bodyB.angularVelocity.cross(rj,tmp);
    u.vadd(tmp,u);
    bodyA.angularVelocity.cross(ri,tmp);
    u.vsub(tmp,u);

    // F = - k * ( x - L ) - D * ( u )
    r_unit.mult(-k*(rlen-l) - d*u.dot(r_unit), f);

    // Add forces to bodies
    bodyA.force.vsub(f,bodyA.force);
    bodyB.force.vadd(f,bodyB.force);

    // Angular force
    ri.cross(f,ri_x_f);
    rj.cross(f,rj_x_f);
    bodyA.torque.vsub(ri_x_f,bodyA.torque);
    bodyB.torque.vadd(rj_x_f,bodyB.torque);
};

},{"../math/Vec3":52}],58:[function(require,module,exports){
var Vec3 = require('../math/Vec3');
var Transform = require('../math/Transform');
var RaycastResult = require('../collision/RaycastResult');
var Utils = require('../utils/Utils');

module.exports = WheelInfo;

/**
 * @class WheelInfo
 * @constructor
 * @param {Object} [options]
 *
 * @param {Vec3} [options.chassisConnectionPointLocal]
 * @param {Vec3} [options.chassisConnectionPointWorld]
 * @param {Vec3} [options.directionLocal]
 * @param {Vec3} [options.directionWorld]
 * @param {Vec3} [options.axleLocal]
 * @param {Vec3} [options.axleWorld]
 * @param {number} [options.suspensionRestLength=1]
 * @param {number} [options.suspensionMaxLength=2]
 * @param {number} [options.radius=1]
 * @param {number} [options.suspensionStiffness=100]
 * @param {number} [options.dampingCompression=10]
 * @param {number} [options.dampingRelaxation=10]
 * @param {number} [options.frictionSlip=10000]
 * @param {number} [options.steering=0]
 * @param {number} [options.rotation=0]
 * @param {number} [options.deltaRotation=0]
 * @param {number} [options.rollInfluence=0.01]
 * @param {number} [options.maxSuspensionForce]
 * @param {boolean} [options.isFrontWheel=true]
 * @param {number} [options.clippedInvContactDotSuspension=1]
 * @param {number} [options.suspensionRelativeVelocity=0]
 * @param {number} [options.suspensionForce=0]
 * @param {number} [options.skidInfo=0]
 * @param {number} [options.suspensionLength=0]
 * @param {number} [options.maxSuspensionTravel=1]
 * @param {boolean} [options.useCustomSlidingRotationalSpeed=false]
 * @param {number} [options.customSlidingRotationalSpeed=-0.1]
 */
function WheelInfo(options){
    options = Utils.defaults(options, {
        chassisConnectionPointLocal: new Vec3(),
        chassisConnectionPointWorld: new Vec3(),
        directionLocal: new Vec3(),
        directionWorld: new Vec3(),
        axleLocal: new Vec3(),
        axleWorld: new V


ault;

// scss-docs-start theme-colors-map
$theme-colors: (
  "primary":    $primary,
  "secondary":  $secondary,
  "success":    $success,
  "info":       $info,
  "warning":    $warning,
  "danger":     $danger,
  "light":      $light,
  "dark":       $dark,
  "white":      $white
) !default;
// scss-docs-end theme-colors-map

// Gradient colors
$primary-gradient:            #7928CA !default;
$primary-gradient-state:      #FF0080 !default;

$secondary-gradient:          #627594 !default;
$secondary-gradient-state:    #A8B8D8 !default;

$info-gradient:               #2152ff !default;
$info-gradient-state:         #21d4fd !default;

$success-gradient:            #17ad37 !default;
$success-gradient-state:      #98ec2d !default;

$danger-gradient:             #ea0606 !default;
$danger-gradient-state:       #ff667c !default;

$warning-gradient:            #f53939 !default;
$warning-gradient-state:      #fbcf33 !default;

$dark-gradient:               #141727 !default;
$dark-gradient-state:         #3A416F !default;

$light-gradient:              #CED4DA !default;
$light-gradient-state:        #EBEFF4 !default;

// Gradient Colors map
$theme-gradient-colors: (
  "primary":    ($primary-gradient, $primary-gradient-state),
  "secondary":  ($secondary-gradient, $secondary-gradient-state),
  "success":    ($success-gradient, $success-gradient-state),
  "info":       ($info-gradient, $info-gradient-state),
  "warning":    ($warning-gradient, $warning-gradient-state),
  "danger":     ($danger-gradient, $danger-gradient-state),
  "light":      ($light-gradient, $light-gradient-state),
  "dark":       ($dark-gradient, $dark-gradient-state)
) !default;

// Set a specific jump point for requesting color jumps
$theme-color-interval:        8% !default;

// The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.
// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast
$min-contrast-ratio:          4.5 !default;

// Customize the light and dark text colors for use in our color contrast function.
$color-contrast-dark:         $black !default;
$color-contrast-light:        $white !default;

// fusv-disable
$blue-100: tint-color($blue, 8) !default;
$blue-200: tint-color($blue, 6) !default;
$blue-300: tint-color($blue, 4) !default;
$blue-400: tint-color($blue, 2) !default;
$blue-500: $blue !default;
$blue-600: shade-color($blue, 2) !default;
$blue-700: shade-color($blue, 4) !default;
$blue-800: shade-color($blue, 6) !default;
$blue-900: shade-color($blue, 8) !default;

$indigo-100: tint-color($indigo, 8) !default;
$indigo-200: tint-color($indigo, 6) !default;
$indigo-300: tint-color($ind


 lspPacket = makeLspPacket(
        payload,
        'application/vscode-jsonrpc; charset=ascii',
      );
      var outputStream = Stream.fromIterable([
        lspPacket,
      ]).transform(LspPacketTransformer());

      await expectLater(
        outputStream.toList(),
        throwsA(const TypeMatcher<InvalidEncodingError>()),
      );
    });
  });
}

List<int> makeLspPacket(String json, [String? contentType]) {
  var utf8EncodedBody = utf8.encode(json);
  var header =
      'Content-Length: ${utf8EncodedBody.length}${contentType != null ? '\r\nContent-Type: $contentType' : ''}\r\n\r\n';
  var asciiEncodedHeader = ascii.encode(header);

  return asciiEncodedHeader.followedBy(utf8EncodedBody).toList();
}
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/src/utilities/extensions/flutter.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';

import '../../abstract_single_unit.dart';

void main() {
  defineReflectiveSuite(() {
    defineReflectiveTests(FlutterTest);
  });
}

@reflectiveTest
class FlutterTest extends AbstractSingleUnitTest {
  @override
  void setUp() {
    super.setUp();
    writeTestPackageConfig(flutter: true);
  }

  Future<void> test_enclosingWidgetExpression_node_instanceCreation() async {
    await resolveTestCode('''
import 'package:flutter/widgets.dart';

void f() {
  MyWidget(1234);
  MyWidget.named(5678);
}

class MyWidget extends StatelessWidget {
  MyWidget(int a);
  MyWidget.named(int a);
  Widget build(BuildContext context) => Text('');
}
''');
    var f = testUnit.declarations[0] as FunctionDeclaration;
    var body = f.functionExpression.body as BlockFunctionBody;
    var statements = body.block.statements;

    // MyWidget(1234);
    {
      var statement = statements[0] as ExpressionStatement;
      var creation = statement.expression as InstanceCreationExpression;
      var constructorName = creation.constructorName;
      var namedType = constructorName.type;
      var argumentList = creation.argumentList;
      expect(creation.findWidgetExpression, creation);
      expect(constructorName.findWidgetExpression, creation);
      expect(namedType.findWidgetExpression, creation);
      expect(argumentList.findWidgetExpression, isNull);
      expect(argumentList.arguments[0].findWidgetExpression, isNull);
    }

    // MyWidget.named(5678);
    {
      var statement = statements[1] as ExpressionStatement;
      var creation = statement.expression as InstanceCreationExpression;
      var constructorName = creation.constructorName;
      var namedType = constructorName.type;
      var argumentList = creation.argumentList;
      expect(creation.findWidgetExpression, creation);
      expect(constructorName.findWidgetExpression, creation);
      expect(namedType.findWidgetExpression, creation);
      expect(constructorName.name.findWidgetExpression, creation);
      expect(argumentList.findWidgetExpression, isNull);
      expect(argumentList.arguments[0].findWidgetExpression, isNull);
    }
  }

  Future<void> test_enclosingWidgetExpression_node_invocation() async {
    await resolveTestCode('''
import 'package:flutter/widgets.dart';

void f() {
  createEmptyText();
  createText('xyz');
}

Text createEmptyText() => Text('');


36] = "Mistscape Sash",
  [4737] = "Imperial Leather Spaulders",
  [4738] = "Imperial Leather Belt",
  [4739] = "Plainstrider Meat",
  [4740] = "Plainstrider Feather",
  [4741] = "Stromgarde Cavalry Leggings",
  [4742] = "Mountain Cougar Pelt",
  [4743] = "Pulsating Crystalline Shard",
  [4744] = "Arcane Runed Bracers",
  [4745] = "War Rider Bracers",
  [4746] = "Doomsayer\'s Robe",
  [4747] = "Stormbull Well Water",
  [4748] = "Redhorn Well Water",
  [4749] = "Wildmane Well Water",
  [4751] = "Windfury Talon",
  [4752] = "Azure Feather",
  [4753] = "Bronze Feather",
  [4755] = "Water Pitcher",
  [4756] = "Ruined Cat Pelt",
  [4757] = "Cracked Egg Shells",
  [4758] = "Prairie Wolf Paw",
  [4759] = "Plainstrider Talon",
  [4763] = "Blackwood Recurve Bow",
  [4765] = "Enamelled Broadsword",
  [4766] = "Feral Blade",
  [4767] = "Coppercloth Gloves",
  [4768] = "Adept\'s Gloves",
  [4769] = "Trophy Swoop Quill",
  [4770] = "Bristleback Belt",
  [4771] = "Harvest Cloak",
  [4772] = "Warm Cloak",
  [4775] = "Cracked Bill",
  [4776] = "Ruffled Feather",
  [4777] = "Ironwood Maul",
  [4778] = "Heavy Spiked Mace",
  [4779] = "Dull Kodo Tooth",
  [4780] = "Kodo Horn Fragment",
  [4781] = "Whispering Vest",
  [4782] = "Solstice Robe",
  [4783] = "Totem of Hawkwind",
  [4784] = "Lifeless Stone",
  [4785] = "Brimstone Belt",
  [4786] = "Wise Man\'s Belt",
  [4787] = "Burning Pitch",
  [4788] = "Agile Boots",
  [4789] = "Stable Boots",
  [4790] = "Inferno Cloak",
  [4791] = "Enchanted Water",
  [4792] = "Spirit Cloak",
  [4793] = "Sylvan Cloak",
  [4794] = "Wolf Bracers",
  [4795] = "Bear Bracers",
  [4796] = "Owl Bracers",
  [4797] = "Fiery Cloak",
  [4798] = "Heavy Runed Cloak",
  [4799] = "Antiquated Cloak",
  [4800] = "Mighty Chain Pants",
  [4801] = "Stalker Claws",
  [4802] = "Cougar Claws",
  [4803] = "Prairie Alpha Tooth",
  [4804] = "Prairie Wolf Heart",
  [4805] = "Flatland Cougar Femur",
  [4806] = "Plainstrider Scale",
  [4807] = "Swoop Gizzard",
  [4808] = "Well Stone",
  [4809] = "Ambercorn",
  [4810] = "Boulder Pads",
  [4813] = "Small Leather Collar",
  [4814] = "Discolored Fang",
  [4816] = "Legionnaire\'s Leggings",
  [4817] = "Blessed Claymore",
  [4818]