                                       | 没有后缀请用""                                  |
| setSelectFileTypes(String... fileTypes)                      | 设置选择文件类型                                       | 没有后缀请用""                                  |
| setSortType(int sortType)                                    | 设置排序规则                                           | 类型请看MConstants                              |
| setRadio()                                                   | 设置单选(如果需要单选文件夹请使用setMaxCount(0)来替换) | 默认多选                                        |
| setShowSelectStorageBtn(boolean var)                         | 设置是否显示内部存储选择按钮                           | 默认true                                        |
| setShowTitlebarFragment(boolean var)                         | 是否显示标题栏                                         | 默认true                                        |
| setShowTabbarFragment(boolean var)                           | 是否显示面包屑                                         | 默认true                                        |
| setAlwaysShowHandleFragment(boolean var)                     | 是否总是显示长按弹出选项                               | 默认false                                       |
| setTitlebarMainTitle(FontBean titlebarMainTitle)             | 设置标题栏主标题                                       | 还可以设置字体大小,颜色等                       |
| setTitlebarBG(Integer titlebarBG)                            | 设置标题栏背景颜色                                     |                                                 |
| setFileItemListener(FileItemListener fileItemListener)       | 设置文件item点击回调                                   | 点击是文件才会回调,如果点击是文件夹则不会       |
| setMorePopupItemListeners(CommonItemListener... morePopupItemListener) | 设置右上角选项回调                                     |                                                 |
| setHandleItemListeners(CommonItemListener... handleItemListener) | 设置长按弹出选项回调                                   |                                                 |
| setTitlebarFragment(AbstractTitlebarFragment titlebarFragment) | 设置自定义标题栏UI                                     | 自己的Fragment必须继承AbstractTitlebarFragment  |
| setHandleFragment(AbstractHandleFragment handleFragment)     | 设置长按弹出自定义UI                                   | 自己的Fragment必须继承AbstractHandleFragment    |
| setLifeCycle(AbstractLifeCycle lifeCycle)                    | 设置一些生命周期钩子                                   | 重写对应的方法即可                              |
| start()                                                      | 开始构建                                               | 必须调用                                        |
| ......                                                       | ......                                                 |                                                 |

## 五、！！！特别注意 ！！！

#### 分区存储

##### 该库以及适配了分区存储，不需要额外适配，你只需要写你的业务代码即可，其他的交给它。

- 注意该库已经在库的`AndroidManifest.xml`中添加了：

  ```xml
  <!-- 外部


using UnityEngine;

namespace SaintsField.Samples.Scripts
{
    public class MinMaxSliderExample: MonoBehaviour
    {
        [MinMaxSlider(-1f, 3f, 0.3f)]
        public Vector2 vector2Step03;

        [MinMaxSlider(0, 20, 3)]
        public Vector2Int vector2IntStep3;

        [MinMaxSlider(-1f, 3f)]
        public Vector2 vector2Free;

        [MinMaxSlider(0, 20)]
        public Vector2Int vector2IntFree;

        // not recommended
        [SerializeField]
        [MinMaxSlider(0, 100, minWidth:-1, maxWidth:-1)]
        private Vector2Int _autoWidth;
        [SerializeField]
        [MinMaxSlider(-100f, 100f, minWidth:-1, maxWidth:-1)]
        private Vector2 _autoWidthFloat;

        [field: SerializeField, MinMaxSlider(-100f, 100f)]
        public Vector2 OuterRange { get; private set; }

        [SerializeField, MinMaxSlider(nameof(GetOuterMin), nameof(GetOuterMax), 1)] public Vector2Int _innerRange;

        private float GetOuterMin() => OuterRange.x;
        private float GetOuterMax() => OuterRange.y;

        [field: SerializeField]
        public float DynamicMin { get; private set; }
        [field: SerializeField]
        public float DynamicMax { get; private set; }

        [SerializeField, MinMaxSlider(nameof(DynamicMin), nameof(DynamicMax))] private Vector2 _propRange;
        [SerializeF


x, 0, 10, -1.7586F, 1.805F, 3.7085F, 4, 2, 4, 0.0F, false));
        Bijiareflex.cubeList.add(new ModelBox(Bijiareflex, 28, 27, -2.0586F, 1.805F, 4.2085F, 1, 2, 3, 0.0F, false));
        Bijiareflex.cubeList.add(new ModelBox(Bijiareflex, 28, 19, 1.5414F, 1.805F, 4.2085F, 1, 2, 3, 0.0F, false));
        Bijiareflex.cubeList.add(new ModelBox(Bijiareflex, 69, 60, -1.2586F, 1.805F, 1.0085F, 3, 2, 7, 0.0F, false));
        Bijiareflex.cubeList.add(new ModelBox(Bijiareflex, 73, 39, -2.2586F, 3.105F, 3.7085F, 5, 1, 4, 0.0F, false));
        Bijiareflex.cubeList.add(new ModelBox(Bijiareflex, 9, 23, -1.2586F, 3.105F, 7.2085F, 3, 1, 1, 0.0F, false));
        Bijiareflex.cubeList.add(new ModelBox(Bijiareflex, 0, 0, -6.2586F, -1.695F, -6.9915F, 3, 5, 5, 0.0F, false));
        Bijiareflex.cubeList.add(new ModelBox(Bijiareflex, 9, 27, -6.2086F, -1.145F, -7.3915F, 3, 4, 1, 0.0F, false));
        Bijiareflex.cubeList.add(new ModelBox(Bijiareflex, 9, 18, -6.2086F, -1.145F, -2.5915F, 3, 4, 1, 0.0F, false));
        Bijiareflex.cubeList.add(new ModelBox(Bijiareflex, 35, 44, -6.2086F, -2.095F, -6.4915F, 3, 1, 4, 0.0F, false));
        Bijiareflex.cubeList.add(new ModelBox(Bijiareflex, 19, 44, -6.2086F, 2.705F, -6.4915F, 3, 1, 4, 0.0F, false));
        Bijiareflex.cubeList.add(new ModelBox(Bijiareflex, 17, 54, -3.2586F, -0.695F, -6.4915F, 1, 3, 4, 0.0F, false));
        Bijiareflex.cubeList.add(new ModelBox(Bijiareflex, 0, 80, 3.3414F, -2.895F, -7.4915F, 1, 1, 8, 0.0F, false));
        Bijiareflex.cubeList.add(new ModelBox(Bijiareflex, 11, 70, -3.8586F, -2.895F, -7.4915F, 1, 1, 8, 0.0F, false));
        Bijiareflex.cubeList.add(new ModelBox(Bijiareflex, 63, 16, -0.7586F, 3.405F, -10.1915F, 4, 1, 11, 0.0F, false));

        sight87_r1 = new ModelRenderer(this);
        sight87_r1.setRotationPoint(-12.8258F, -34.5776F, -6.4915F);
        Bijiareflex.addChild(sight87_r1);
        setRotationAngle(sight87_r1, 0.0F, 0.0F, 2.5653F);
        sight87_r1.cubeList.add(new ModelBox(sight87_r1


                       "podcastId": "dd16b2eb-657e-4064-b470-5b99397ce729",
                              "proxyURL": "/api/v1/podcasts/dd16b2eb-657e-4064-b470-5b99397ce729/items/27184b1a-7642-4ffd-ac7e-14fb36f7f15c/Foo",
                              "pubDate": "2019-06-24T05:28:54.000000034+02:00",
                              "status": "NOT_DOWNLOADED",
                              "title": "Foo",
                              "url": "https://external.domain.tld/foo/bar.mp4"
                            }
                          ],
                          "empty": false,
                          "first": true,
                          "last": true,
                          "number": 0,
                          "numberOfElements": 1,
                          "size": 12,
                          "totalElements": 1,
                          "totalPages": 1
                        }""")
                }
        }
    }

    @Nested
    @DisplayName("should find playlist associated to an item")
    inner class ShouldFindPlayListsAssociatedToAnItem {

        val item = Item(
            id = UUID.fromString("27184b1a-7642-4ffd-ac7e-14fb36f7f15c"),
            title = "Foo",
            url = "https://external.domain.tld/foo/bar.mp4",

            pubDate = now(),
            downloadDate = now(),
            creationDate = now(),

            description = "desc",
            mimeType = "audio/mp3",
            length = 100,
            fileName = null,
            status = Status.NOT_DOWNLOADED,

            podcast = Item.Podcast(
                id = UUID.fromString("8e2df56f-959b-4eb4-b5fa-0fd6027ae0f9"),
                title = "Podcast Bar",
                url = "https://external.domain.tld/bar.rss"
            ),
            cover = Item.Cover(
                id = UUID.fromString("f4efe8db-7abf-4998-b15c-9fa2e06096a1"),
                url = URI("https://external.domain.tld/foo/bar.png"),
                width = 200,
                height = 200
            )
        )

        @Test
        fun `with no watch list associated to this item`() {
            /* Given */
            whenever(itemService.findPlaylistsContainingItem(item.id))
                .thenReturn(emptyList())

            /* When */
            rest
                .get()
                .uri("/api/v1/podcasts/{podcastId}/items/{id}/playlists", item.podcast.id, item.id)
                .exchange()
                /* Then */
                .expectStatus().isOk
                .expectBody()
                .assertThatJson {
                    isEqualTo("""{
                          "content": []
                        }""")
                }
        }

        @Test
        fun `with 3 playlists associated to this item`() {
            /* Given */
            whenever(itemService.findPlaylistsContainingItem(item.id)).thenReturn(listOf(
                ItemPlaylist(UUID.fromString("50958264-d5ed-4a9a-a875-5173bb207720"), "foo"),
                ItemPlaylist(UUID.fromString("e053b63c-dc1d-4a3a-9c95-8f616a74d2aa"), "bar"),
                ItemPlaylist(UUID.fromString("6761208b-85e7-4098-817a-2db7c4de7ceb"), "other")
            ))

            /* When */
            rest
                .get()
                .uri("/api/v1/podcasts/{podcastId}/items/{id}/playlists", item.podcast.id, item.id)
                .exchange()
                /* Then */
                .expectStatus().isOk
                .expectBody()
                .assertThatJson {
                    isEqualTo("""{
                          "content": [


[35344] = "塑能師絲質風帽",
[35345] = "塑能師絲質手甲",
[35346] = "塑能師絲質衣飾",
[35347] = "塑能師絲質長褲",
[35348] = "釣魚藏寶袋",
[35349] = "史納立的水桶",
[35350] = "恰克的水桶",
[35352] = "賢者的閃電節杖",
[35353] = "高階祭司納菲賽特的卷軸",
[35354] = "高階祭司塔烈卡的卷軸",
[35355] = "高階祭司安杜拉斯的卷軸",
[35356] = "龍皮手套",
[35357] = "龍皮頭盔",
[35358] = "龍皮腿甲",
[35359] = "龍皮肩甲",
[35360] = "龍皮長袍",
[35361] = "科多獸皮手套",
[35362] = "科多獸皮頭盔",
[35363] = "科多獸皮腿甲",
[35364] = "科多獸皮肩甲",
[35365] = "科多獸皮長袍",
[35366] = "投機者皮甲手套",
[35367] = "投機者皮甲頭盔",
[35368] = "投機者皮甲腿甲",
[35369] = "投機者皮甲肩甲",
[35370] = "投機者皮甲外套",
[35371] = "龍革手套",
[35372] = "龍革頭盔",
[35373] = "龍革腿甲",
[35374] = "龍革肩甲",
[35375] = "龍革長袍",
[35376] = "潛獵者鍊甲護甲",
[35377] = "潛獵者鍊甲護手",
[35378] = "潛獵者鍊甲頭盔",
[35379] = "潛獵者鍊甲護腿",
[35380] = "潛獵者鍊甲肩甲",
[35381] = "先知鎖鍊護甲",
[35382] = "先知鎖鍊護手",
[35383] = "先知鎖鍊頭盔",
[35384] = "先知鎖鍊護腿",
[35385] = "先知鎖鍊肩甲",
[35386] = "先知鎖甲護甲",
[35387] = "先知鎖甲護手",
[35388] = "先知鎖甲頭盔",
[35389] = "先知鎖甲護腿",
[35390] = "先知鎖甲肩甲",
[35391] = "先知環甲護胸",
[35392] = "先知環甲手套",
[35393] = "先知環甲首盔",
[35394] = "先知環甲腿甲",
[35395]


ch = "x86", target_arch = "x86_64")))]
    #[inline(always)]
    pub fn cpu_relax() {}

    fn pop(&self, private_pop_handle: &mut Handle<T>) -> Result<T, usize> {
        let mut v;
        let mut pop_index = self.pop_index.fetch_add(1, Ordering::Relaxed);
        let id = pop_index / SPMCQUEUE_CELLS_NUM;
        // pop_index in node
        pop_index &= SPMCQUEUE_CELLS_BIT;

        // Try to fill in the nodes we need
        let node_ptr = private_pop_handle.pop_node.load(Ordering::Acquire);
        let private_pop_node = self.update_private_node(private_pop_handle, node_ptr, id);
        private_pop_handle.pop_node.store(
            private_pop_node as *const Node<T> as *mut Node<T>,
            Ordering::Release,
        );

        if self.stopped.load(Ordering::Acquire) {
            // queue is stopped, and return None,
            return self.try_clean_none(private_pop_handle, pop_index);
        }

        // pop_index in private_pop_node is the need'd cell
        // to test SPMCQUEUE_SPINS times to probes the datas
        let mut times = SPMCQUEUE_SPINS;
        loop {
            v = private_pop_node.cells[pop_index].load(Ordering::Acquire);
            if !v.is_null() {
                return self.get_data(v, private_pop_handle, pop_index);
            }
            times -= 1;
            if times == 0 {
                break;
            }
            Self::cpu_relax();
            // thread::yield_now();
        }

        // now We've tried many times. should wait for data
        let ptr_handle = private_pop_handle.thread.load(Ordering::Acquire);
        let ptr = Box::into_raw(Box::new(Payload::Blocked(ptr_handle)));
        v = private_pop_node.cells[pop_index].swap(ptr, Ordering::Relaxed);
        if v.is_null() {
            // we should wait for the data..(woke by producers)
            private_pop_handle.ptr = ptr;
            Err(pop_index)
        } else {
            // v is not null, We got the data
            unsafe {
                // just reclaim the not needed data
                Box::from_raw(ptr);
            }
            self.get_data(v, private_pop_handle, pop_index)
        }
    }

    fn wait(&self, private_pop_handle: &mut Handle<T>, pop_index: usize) -> Result<T, usize> {
        // we should wait for the data..(woke by producers)
        let private_pop_node = unsafe { &*private_pop_handle.pop_node.load(Ordering::Acquire) };
        loop {
            let v = private_pop_node.cells[pop_index].load(Ordering::Acquire);
            if v != private_pop_handle.ptr {
                private_pop_handle.ptr = ptr::null_mut();
                return self.get_data(v, private_pop_handle, pop_index);
            }
            if self.stopped.load(Ordering::Acquire) {
                // queue is stopped, and return None,
                return self.try_clean_none(private_pop_handle, pop_index);
            }
            thread::park();
        }
    }

    fn wait_timeout(
        &self,
        private_pop_handle: &mut Handle<T>,
        pop_index: usize,
        timeout: Duration,
    ) -> Result<T, usize> {
        // we should wait for the data..(woke by producers)
        let beginning_park = Instant::now();
        let mut timeout_remaining;
        let private_pop_node = unsafe { &*private_pop_handle.pop_node.load(Ordering::Acquire) };
        loop {
            let v = private_pop_node.cells[pop_index].load(Ordering::Acquire);
            if v != private_


op && CurrentToken->is(Keywords.kw_in)) {
        PossibleObjCForInToken = CurrentToken;
        PossibleObjCForInToken->setType(TT_ObjCForIn);
      }
      // When we discover a 'new', we set CanBeExpression to 'false' in order to
      // parse the type correctly. Reset that after a comma.
      if (CurrentToken->is(tok::comma))
        Contexts.back().CanBeExpression = true;

      if (Style.isTableGen()) {
        if (CurrentToken->is(tok::comma)) {
          if (Contexts.back().IsTableGenCondOpe)
            CurrentToken->setType(TT_TableGenCondOperatorComma);
          next();
        } else if (CurrentToken->is(tok::colon)) {
          if (Contexts.back().IsTableGenCondOpe)
            CurrentToken->setType(TT_TableGenCondOperatorColon);
          next();
        }
        // In TableGen there must be Values in parens.
        if (!parseTableGenValue())
          return false;
        continue;
      }

      FormatToken *Tok = CurrentToken;
      if (!consumeToken())
        return false;
      updateParameterCount(&OpeningParen, Tok);
      if (CurrentToken && CurrentToken->HasUnescapedNewline)
        HasMultipleLines = true;
    }
    return false;
  }

  bool isCSharpAttributeSpecifier(const FormatToken &Tok) {
    if (!Style.isCSharp())
      return false;

    // `identifier[i]` is not an attribute.
    if (Tok.Previous && Tok.Previous->is(tok::identifier))
      return false;

    // Chains of [] in `identifier[i][j][k]` are not attributes.
    if (Tok.Previous && Tok.Previous->is(tok::r_square)) {
      auto *MatchingParen = Tok.Previous->MatchingParen;
      if (!MatchingParen || MatchingParen->is(TT_ArraySubscriptLSquare))
        return false;
    }

    const FormatToken *AttrTok = Tok.Next;
    if (!AttrTok)
      return false;

    // Just an empty declaration e.g. string [].
    if (AttrTok->is(tok::r_square))
      return false;

    // Move along the tokens inbetween the '[' and ']' e.g. [STAThread].
    while (AttrTok && AttrTok->isNot(tok::r_square))
      AttrTok = AttrTok->Next;

    if (!AttrTok)
      return false;

    // Allow an attribute to be the only content of a file.
    AttrTok = AttrTok->Next;
    if (!AttrTok)
      return true;

    // Limit this to being an access modifier that follows.
    if (AttrTok->isAccessSpecifierKeyword() ||
        AttrTok->isOneOf(tok::comment, tok::kw_class, tok::kw_static,
                         tok::l_square, Keywords.kw_internal)) {
      return true;
    }

    // incase its a [XXX] retval func(....
    if (AttrTok->Next &&
        AttrTok->Next->startsSequence(tok::identifier, tok::l_paren)) {
      return true;
    }

    return false;
  }

  bool parseSquare() {
    if (!CurrentToken)
      return false;

    // A '[' could be an index subscript (after an identifier or after
    // ')' or ']'), it could be the start of an Objective-C method
    // expression, it could the start of an Objective-C array literal,
    // or it could be a C++ attribute specifier [[foo::bar]].
    FormatToken *Left = CurrentToken->Previous;
    Left->ParentBracket = Contexts.back().ContextKind;
    FormatToken *Parent = Left->getPreviousNonComment();

    // Cases where '>' is followed by '['.
    // In C++, this can happen either in array of templates (foo<int>[10])
    // or when array is a nested template type (unique_ptr<type1<type2>[]>).
    bool CppArrayTemplates


atch, 0, ruleCount/4+1)
	resultDone := make(chan struct{})

	go func() {
		defer close(resultDone)
		for result := range resultChan {
			if result != nil && result.Result {
				matches = append(matches, result)
			}
		}
	}()

	// 等待所有指纹任务完成
	wg.Wait()
	close(resultChan)

	// 等待结果收集完成
	<-resultDone

	// 记录性能信息
	duration := time.Since(startTime)
	logger.Debug(fmt.Sprintf("目标 %s 指纹识别完成，耗时: %v, 匹配数量: %d/%d, 实际任务数: %d",
		target, duration, len(matches), ruleCount, submittedTasks))

	return matches
}

// handleMatchResults 处理匹配结果，将结果输出到终端和文件
func handleMatchResults(targetResult *TargetResult, options *types.CmdOptions, printResult func(string), outputFormat string) {
	output.HandleMatchResults(&output.TargetResult{
		URL:        targetResult.URL,
		StatusCode: targetResult.StatusCode,
		Title:      targetResult.Title,
		ServerInfo: targetResult.Server,
		Matches:    convertFingerMatches(targetResult.Matches),
		Wappalyzer: targetResult.Wappalyzer,
	}, options.Output, options.SockOutput, printResult, outputFormat, targetResult.LastResponse)
}

// convertFingerMatches 将pkg.FingerMatch切片转换为output.FingerMatch切片
func convertFingerMatches(matches []*FingerMatch) []*output.FingerMatch {
	result := make([]*output.FingerMatch, len(matches))
	for i, match := range matches {
		result[i] = &output.FingerMatch{
			Finger:   match.Finger,
			Result:   match.Result,
			Request:  match.Request,
			Response: match.Response,
		}
	}
	return result
}

// printSummary 打印汇总信息
func printSummary(targets []string, results map[string]*TargetResult) {
	// 将pkg.TargetResult映射转换为output.TargetResult映射
	outputResults := make(map[string]*output.TargetResult)
	for key, result := range results {
		outputResults[key] = &output.TargetResult{
			URL:        result.URL,
			StatusCode: result.StatusCode,
			Title:      result.Title,
			ServerInfo: result.Server,
			Matches:    convertFingerMatches(result.Matches),
			Wappalyzer: result.Wappalyzer,
		}
	}
	output.PrintSummary(targets, outputResults)
}
package pgengine_test

import (
	"context"
	"encoding/json"
	"errors"
	"testing"

	"github.com/cybertec-postgresql/pg_timetable/internal/pgengine"
	"github.com/jackc/pgx/v5/pgconn"
	"github.com/pashagolub/pgxmock/v4"
	"github.com/stretchr/testify/assert"
)

var (
	mockPool pgxmock.PgxPoolIface
	mockConn pgxmock.PgxConnIface
	ctx      = context.Background()
)


romBuffer(i, r);
  factory ListWorkloadIdentityPoolsResponse.fromJson($core.String i,
          [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(i, r);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'ListWorkloadIdentityPoolsResponse',
      package:
          const $pb.PackageName(_omitMessageNames ? '' : 'google.iam.v1beta'),
      createEmptyInstance: create)
    ..pc<WorkloadIdentityPool>(
        1, _omitFieldNames ? '' : 'workloadIdentityPools', $pb.PbFieldType.PM,
        subBuilder: WorkloadIdentityPool.create)
    ..aOS(2, _omitFieldNames ? '' : 'nextPageToken')
    ..hasRequiredFields = false;

  @$core.Deprecated('Using this can add significant overhead to your binary. '
      'Use [GeneratedMessageGenericExtensions.deepCopy] instead. '
      'Will be removed in next major version')
  ListWorkloadIdentityPoolsResponse clone() =>
      ListWorkloadIdentityPoolsResponse()..mergeFromMessage(this);
  @$core.Deprecated('Using this can add significant overhead to your binary. '
      'Use [GeneratedMessageGenericExtensions.rebuild] instead. '
      'Will be removed in next major version')
  ListWorkloadIdentityPoolsResponse copyWith(
          void Function(ListWorkloadIdentityPoolsResponse) updates) =>
      super.copyWith((message) =>
              updates(message as ListWorkloadIdentityPoolsResponse))
          as ListWorkloadIdentityPoolsResponse;

  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static ListWorkloadIdentityPoolsResponse create() =>
      ListWorkloadIdentityPoolsResponse._();
  ListWorkloadIdentityPoolsResponse createEmptyInstance() => create();
  static $pb.PbList<ListWorkloadIdentityPoolsResponse> createRepeated() =>
      $pb.PbList<ListWorkloadIdentityPoolsResponse>();
  @$core.pragma('dart2js:noInline')
  static ListWorkloadIdentityPoolsResponse getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<ListWorkloadIdentityPoolsResponse>(
          create);
  static ListWorkloadIdentityPoolsResponse? _defaultInstance;

  /// A list of pools.
  @$pb.TagNumber(1)
  $core.List<WorkloadIdentityPool> get workloadIdentityPools => $_getList(0);

  /// A token, which can be sent as `page_token` to retrieve the next page.
  /// If this field is omitted, there are no subsequent pages.
  @$pb.TagNumber(2)
  $core.String get nextPageToken => $_getSZ(1);
  @$pb.TagNumber(2)
  set nextPageToken($core.String v) {
    $_setString(1, v);
  }

  @$pb.TagNumber(2)
  $core.bool hasNextPageToken() => $_has(1);
  @$pb.TagNumber(2)
  void clearNextPageToken() => clearField(2);
}

/// Request message for GetWorkloadIdentityPool.
class GetWorkloadIdentityPoolRequest extends $pb.GeneratedMessage {
  factory GetWorkloadIdentityPoolRequest({
    $core.String? name,
  }) {
    final $result = create();
    if (name != null) {
      $result.name = name;
    }
    return $result;
  }
  GetWorkloadIdentityPoolRequest._() : super();
  factory GetWorkloadIdentityPoolRequest.fromBuffer($core.List<$core.int> i,
          [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(i, r);
  factory GetWorkloadIdentityPoolRequest.fromJson


ER  The DispatchHandle was not valid.
**/
typedef
EFI_STATUS
(EFIAPI *EFI_MM_USB_UNREGISTER)(
  IN CONST EFI_MM_USB_DISPATCH_PROTOCOL  *This,
  IN       EFI_HANDLE                    DispatchHandle
  );

///
/// Interface structure for the MM USB MMI Dispatch Protocol
///
/// This protocol provides the parent dispatch service for the USB MMI source generator.
///
struct _EFI_MM_USB_DISPATCH_PROTOCOL {
  EFI_MM_USB_REGISTER    Register;
  EFI_MM_USB_UNREGISTER  UnRegister;
};

extern EFI_GUID gEfiMmUsbDispatchProtocolGuid;

#endif


581 15.3998L1.72264 12.0717C1.72967 12.0469 1.73811 12.022 1.74749 11.9977C1.74795 11.9953 1.74795 11.9929 1.74749 11.9906C1.73781 11.9663 1.72951 11.9414 1.72264 11.9161L0.792643 8.56687C0.691862 8.21016 0.802018 7.96078 0.912643 7.81406C0.986929 7.71549 1.08331 7.63573 1.19403 7.58118C1.30475 7.52664 1.42672 7.49883 1.55014 7.5H2.43702C2.91655 7.5 3.38202 7.71516 3.65577 8.0625L5.27624 10.0336L9.83811 9.96609L6.81749 3.30984C6.7657 3.19568 6.74335 3.07036 6.75249 2.94533C6.76163 2.8203 6.80196 2.69956 6.8698 2.59414C6.93764 2.48872 7.03082 2.40198 7.14083 2.34186C7.25083 2.28175 7.37416 2.25016 7.49952 2.25H8.76092C8.9369 2.25354 9.10983 2.29667 9.26685 2.3762C9.42388 2.45572 9.56097 2.5696 9.66796 2.70937L15.5297 9.83438L18.2376 9.76312C18.4359 9.75234 18.9853 9.74859 19.1123 9.74859C21.7026 9.75 23.2495 10.5909 23.2495 12C23.2495 12.4434 23.0723 13.2656 21.8869 13.7887C21.187 14.0981 20.2533 14.2547 19.1114 14.2547C18.9858 14.2547 18.4378 14.2509 18.2367 14.2402L15.5292 14.168L9.65296 21.293C9.54588 21.4321 9.40891 21.5454 9.25216 21.6246C9.0954 21.7037 8.92288 21.7465 8.74733 21.75Z" fill="#112211"/>
</svg>
<svg width="22" height="23" viewBox="0 0 22 23" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15.5222 3.25C15.8302 3.25 16.1255 3.37233 16.3433 3.59008C16.561 3.80783 16.6833 4.10317 16.6833 4.41111V19.5056H18.425C18.579 19.5056 18.7266 19.5667 18.8355 19.6756C18.9444 19.7845 19.0056 19.9321 19.0056 20.0861C19.0056 20.2401 18.9444 20.3878 18.8355 20.4966C18.7266 20.6055 18.579 20.6667 18.425 20.6667H3.33056C3.17658 20.6667 3.02892 20.6055 2.92004 20.4966C2.81117 20.3878 2.75 20.2401 2.75 20.0861C2.75 19.9321 2.81117 19.7845 2.92004 19.6756C3.02892 19.5667 3.17658 19.5056 3.33056 19.5056H5.07222V4.41111C5.07222 4.10317 5.19455 3.80783 5.4123 3.59008C5.63005 3.37233 5.92539 3.25 6.23333 3.25H15.5222ZM13.2 13.7C13.5079 13.7 13.8033 13.5


   [6]   - SPRPort06
# ALL-NEXT:      [7]   - SPRPort07
# ALL-NEXT:      [8]   - SPRPort08
# ALL-NEXT:      [9]   - SPRPort09
# ALL-NEXT:      [10]  - SPRPort10
# ALL-NEXT:      [11]  - SPRPort11
# ALL-NEXT:      [12]  - SPRPortInvalid

# ALL:           Resource pressure per iteration:
# ALL-NEXT:      [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]
# ALL-NEXT:      2.00   2.00   3.33   3.33   5.00   2.00   2.00   5.00   5.00   5.00   2.00   3.34    -

# ALL:           Resource pressure by instruction:
# ALL-NEXT:      [0]    [1]    [2]    [3]    [4]    [5]    [6]    [7]    [8]    [9]    [10]   [11]   [12]   Instructions:
# ALL-NEXT:       -      -     0.33   0.33    -      -      -      -     1.00   1.00   1.00   0.34    -     addq	$44, 64(%r14)
# ALL-NEXT:       -      -     0.33   0.34   1.00    -     1.00   1.00    -      -      -     0.33    -     addq	$44, 128(%r14)
# ALL-NEXT:       -      -     0.34   0.33    -     1.00    -      -     1.00   1.00    -     0.33    -     addq	$44, 192(%r14)
# ALL-NEXT:       -     1.00   0.33   0.33   1.00    -      -     1.00    -      -      -     0.34    -     addq	$44, 256(%r14)
# ALL-NEXT:      1.00    -     0.33   0.34    -      -      -      -     1.00   1.00    -     0.33    -     addq	$44, 320(%r14)
# ALL-NEXT:       -      -     0.34   0.33   1.00    -      -     1.00    -      -     1.00   0.33    -     addq	$44, 384(%r14)
# ALL-NEXT:       -      -     0.33   0.33    -      -     1.00    -     1.00   1.00    -     0.34    -     addq	$44, 448(%r14)
# ALL-NEXT:       -      -     0.33   0.34   1.00   1.00    -     1.00    -      -      -     0.33    -     addq	$44, 512(%r14)
# ALL-NEXT:       -     1.00   0.34   0.33    -      -      -      -     1.00   1.00    -     0.33    -     addq	$44, 576(%r14)
# ALL-NEXT:      1.00    -     0.33   0.33   1.00    -      -     1.00    -      -      -     0.34    -     addq	$44, 640(%r14)

# ALL:           Timeline view:

# NOALIAS-NEXT:                      0123456789
# NOALIAS-NEXT:  Index     0123456789          0123

# YESALIAS-NEXT:                     0123456789          0123456789          0123456789          01234
# YESALIAS-NEXT: Index     0123456789          0123456789          0123456789          0123456789

# NOALIAS:       [0,0]     DeeeeeeeeeeeeER.    .  .   addq	$44, 64(%r14)
# NOALIAS-NEXT:  [0,1]     .DeeeeeeeeeeeeER    .  .   addq	$44


='assets/'][href$='.mov']::before,
.article a[href^='assets/'][href$='.flv']::before,
.article a[href^='assets/'][href$='.avi']::before {
  background-image: url('/icons/file/mp4.svg');
}

.article a[href^='assets/'][href$='.jpg']::before,
.article a[href^='assets/'][href$='.png']::before {
  background-image: url('/icons/file/jpg.svg');
}

.article a[href^='assets/'][href$='.html']::before {
  background-image: url('/icons/file/html.svg');
}

.article a[href^='assets/'][href$='.json']::before {
  background-image: url('/icons/file/json.svg');
}

.article a[href^='assets/'][href$='.css']::before {
  background-image: url('/icons/file/css.svg');
}

.article a[href^='assets/'][href$='.java']::before {
  background-image: url('/icons/file/java.svg');
}

.article a[href^='assets/'][href$='.js']::before {
  background-image: url('/icons/file/vscode.svg');
}

.article a[href^='assets/'][href$='.xmind']::before {
  background-image: url('/icons/file/xmind.svg');
}

.article a[href^='assets/'][href$='.md']::before {
  background-image: url('/icons/file/md.svg');
}

.article a[href*='weibo.com'] {
  color: #d3211b;
}

.article a[href*='vuejs.org'] {
  color: #42b883;
}

.article a[href*='zhihu.com'] {
  color: #017cdd;
}

.article a[href*='t.bilibili.com'] {
  color: #00aaf4;
}

.article a[href*='bilibili.com'] {
  color: #00aaf4;
}

.article a[href*='douban.com'] {
  color: #071;
}

.article a[href*='oschina.net'] {
  color: #21b351;
}

.article a[href*='ld246.com'] {
  color: #3d4045;
}

.article a[href*='music.163.com'] {
  color: #f10c01;
}

.article a[href*='runoob.com'] {
  color: #96b97d;
}

.article a[href*='iconfont.cn'] {
  color: #4068ee;
}

.article a[href*='pan.baidu.com'] {
  color: #36cef7;
}

.article a[href*='yuque.com'] {
  color: #49c95c;
}

.article a[href*='52pojie.cn'] {
  color: #e21010;
}

.article a[href*='sspai.com'] {
  color: #d8171c;
}

.article a[href*='uisdc.com'] {
  color: #f12d01;
}

.article a[href*='cn.bing.com'] {
  color: #3ca1fa;
}

.article a[href*='jianshu.com'] {
  color: #e28979;
}

.article a[href*='blog.csdn.net']


m cookies to include in requests.

timeout (int): Request timeout in seconds (default is 10).

headers (dict): Additional HTTP headers to include.

http_proxies (list): List of HTTP proxies to use.

socks4_proxies (list): List of SOCKS4 proxies to use.

socks5_proxies (list): List of SOCKS5 proxies to use.

Example Usage

To use the PHP_Unit_Exploit_Scanner class, call the scan method by providing the required parameters. Here's an example:

from bane.scanners.vulnerabilities import PHP_Unit_Exploit_Scanner

#Example usage of the PHP_Unit_Exploit_Scanner class
result = PHP_Unit_Exploit_Scanner.scan(
    u="https://example.com",
    user_agent="CustomUserAgent",
    cookie="CustomCookie",
    timeout=10,
    headers={"Custom-Header": "Value"},
    http_proxies={"http": "http://1.2.3.4:80", "https": "http://1.2.3.4:80"},
    socks4_proxies=["5.6.7.8:1080"],
    socks5_proxies=["9.10.11.12:1080"]
)

#Check the result
if result:
    print("The website is vulnerable to PHP Unit exploit.")
else:
    print("The website is not vulnerable to PHP Unit exploit.")

RCE_Scanner Class

Class Overview

The RCE_Scanner class is part of the "bane" module and is used for scanning web forms for Remote Code Execution (RCE) vulnerabilities using various payload injections.

Method: `scan`

Method Overview

The `scan` method is used to scan a website for RCE vulnerabilities by searching and testing forms with potential payloads. It takes multiple parameters to configure the scan operation.

Parameters

u (str): The target website URL to start the scan.

max_pages (int): The maximum number of pages to scan (default is 5).

pages (list): List of specific pages to scan (overrides max_pages).

payloads (dict): A dictionary of RCE payloads to use in the scan.

payload_index (int): The index of the payload to use from the payloads dictionary.

email_extension (str): Email extension to use for email payloads (default is '@gmail.com').

phone_pattern (str): Phone number pattern for phone payloads (default is 'XXX-XXX-XXXX').

save_to_file (str): Save the scan result to a JSON file (default is None).

dont_change (dict): Dictionary of parameters that should not be changed during the scan.

number (tuple): Range of numbers to use for numeric payloads (default is (1, 9)).

injection (dict): Injection type and target parameter for payloads.

code_operator_right (str): Operator to use on the right side of code payloads (default is ' ; ').

code_operator_left (str): Operator to use on the left side of code payloads (default is ' ').

<li


// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (c) 2016, NVIDIA CORPORATION.
 */

#include <clk-uclass.h>
#include <dm.h>
#include <log.h>
#include <malloc.h>
#include <asm/arch/clock.h>
#include <asm/arch-tegra/clk_rst.h>

#define TEGRA_CAR_CLK_PLL	BIT(0)
#define TEGRA_CAR_CLK_PERIPH	BIT(1)

static int tegra_car_clk_request(struct clk *clk)
{
	debug("%s(clk=%p) (dev=%p, id=%lu)\n", __func__, clk, clk->dev,
	      clk->id);

	/*
	 * Note that the first PERIPH_ID_COUNT clock IDs (where the value
	 * varies per SoC) are the peripheral clocks, which use a numbering
	 * scheme that matches HW registers 1:1. There are other clock IDs
	 * beyond this that are assigned arbitrarily by the Tegra CAR DT
	 * binding.
	 */
	if (clk->id < PERIPH_ID_COUNT) {
		clk->data |= TEGRA_CAR_CLK_PERIPH;
		return 0;
	}

	/* If check for periph failed, then check for PLL clock id */
	int id = clk_id_to_pll_id(clk->id);

	if (clock_id_is_pll(id)) {
		clk->id = id;
		clk->data |= TEGRA_CAR_CLK_PLL;
		return 0;
	}

	return -EINVAL;
}

static ulong tegra_car_clk_get_rate(struct clk *clk)
{
	debug("%s(clk=%p) (dev=%p, id=%lu)\n", __func__, clk, clk->dev,
	      clk->id);

	if (clk->data & TEGRA_CAR_CLK_PLL)
		return clock_get_rate(clk->id);

	if (clk->data & TEGRA_CAR_CLK_PERIPH) {
		enum clock_id parent;

		parent = clock_get_periph_parent(clk->id);
		return clock_get_periph_rate(clk->id, parent);
	}

	return -1U;
}

static ulong tegra_car_clk_set_rate(struct clk *clk, ulong rate)
{
	enum clock_id parent;

	debug("%s(clk=%p, rate=%lu) (dev=%p, id=%lu)\n", __func__, clk, rate,
	      clk->dev, clk->id);

	if (clk->data & TEGRA_CAR_CLK_PLL)
		return 0;

	parent = clock_get_periph_parent(clk->id);
	return clock_adjust_periph_pll_div(clk->id, parent, rate, NULL);
}

static int tegra_car_clk_enable(struct clk *clk)
{
	debug("%s(clk=%p) (dev=%p, id=%lu)\n", __func__, clk, clk->dev,
	      clk->id);

	if (clk->data & TEGRA_CAR_CLK_PLL)
		return 0;

	clock_enable(clk->id);

	return 0;
}

static int tegra_car_clk_disable(struct clk *clk)
{
	debug("%s(clk=%p) (dev=%p, id=%lu)\n", __func__, clk, clk->dev,
	      clk->id);

	if (clk->data & TEGRA_CAR_CLK_PLL)
		return 0;

	clock_disable(clk->id);

	return 0;
}

static struct clk_ops tegra_car_clk_ops = {
	.request = tegra_car_clk_request,
	.get_rate = tegra_car_clk_get_rate,
	.set_rate = tegra_car_clk_set_rate,
	.enable = tegra_car_clk_enable,
	.disable = tegra_car_clk_disable,
};

static int tegra_car_clk_probe(struct udevice *dev)
{
	debug("%s(dev=%p)\n", __func__, dev);

	clock_init();
	clock_verify();

	return 0;
}

U_BOOT_DRIVER(tegra_car_clk) = {
	.name = "tegra_car_clk",
	.id = UCLASS_CLK,
	.probe = tegra_car_clk_probe,
	.ops = &tegra_car_clk_ops,
};


 U+361a, U+3623, U+3625, U+362d, U+3635, U+3639, U+363e, U+3647-3649, U+364e, U+365f, U+3661, U+367a, U+3681, U+369a, U+36a5, U+36aa, U+36ac, U+36b0-36b1, U+36b5, U+36b9, U+36bc, U+36c1, U+36c3-36c5, U+36c7-36c8, U+36d3-36d4, U+36d6, U+36dd, U+36e1-36e2, U+36e5-36e6, U+36f5, U+3701, U+3703, U+3708, U+370a, U+370d, U+371c, U+3722-3723, U+3725, U+372c-372d, U+3730, U+3732-3733, U+373a, U+3740, U+3743, U+3762, U+376f, U+3797, U+37a0, U+37b9, U+37be, U+37d6, U+37f2, U+37f8, U+37fb, U+380f, U+3819, U+3820, U+382d, U+3836, U+3838, U+3863, U+3875, U+38a0, U+38c3, U+38cc, U+38d1, U+38d4, U+38ec, U+38fa, U+3908, U+3914, U+3927, U+3932, U+393f, U+394d, U+3963, U+3978, U+3980, U+3989-398a, U+3992, U+3999, U+399b, U+39a1, U+39a4, U+39b8, U+39dc, U+39e2, U+39e5, U+39ec, U+39f8, U+39fb, U+39fe, U+3a01-3a03, U+3a06, U+3a17-3a18, U+3a29-3a2a, U+3a34, U+3a4b, U+3a52, U+3a57, U+3a5c, U+3a5e, U+3a66-3a67, U+3a97, U+3aab, U+3abd, U+3ade, U+3ae0, U+3af0, U+3af2, U+3af5, U+3afb, U+3b0e, U+3b19, U+3b22, U+3b2b, U+3b39, U+3b42, U+3b58, U+3b60, U+3b71-3b72, U+3b7b-3b7c, U+3b80;
}
/* [G_88] */
@font-face {
  font-family: 'Chiron Hei HK WS';
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url('/chiron-hei-hk/woff2/chironheihkvf.G_88.woff2') format('woff2-variations'), url('/chiron-hei-hk/woff2/chironheihkvf.G_88.woff2') format('woff2 supports variations');
  unicode-range: U+2f3f, U+2f42, U+2f45, U+2f63-2f64, U+2f83, U+2f8f, U+3003-3007, U+3012-3013, U+3016-3019, U+3020-3025, U+303d, U+3041, U+3043, U+3045, U+3047, U+3049


"kitline_" + i.ToString(), lf.a, lf_pt,
        //                Color.black, linewidth/2);

        //            gObject.transform.parent = plant_graph.transform;

        //            //Kit
        //            GameObject kit_model = Geometry.CreateSphere(
        //                "kit_" + i.ToString(),  lf_pt, sphereRadius,
        //                Color.black);

        //            kit_model.transform.parent = plant_graph.transform;
        //        }
        //        if (cur.kits[i].GetType() == typeof(Flower))  // ǻ
        //        {
        //            Flower lf = (Flower)cur.kits[i];

        //            // ڲģ͵ͬԿҪup forward
        //            //Vector3 lf_pt = lf.a + (lf.rotation * Vector3.up).normalized * lf.local_scale.x / 2;
        //            //Vector3 lf_pt = lf.a + (lf.rotation * Vector3.forward).normalized * lf.local_scale.x / 2;
        //            Vector3 lf_pt = lf.a + (cur.b - cur.a).normalized * lf.local_scale.x / 2;

        //            // linerenderer
        //            GameObject gObject = Geometry.CreateLineRenderer(
        //                "kitline_" + i.ToString(), lf.a, lf_pt,
        //                Color.black, linewidth/2);

        //            gObject.transform.parent = plant_graph.transform;

        //            //Kit
        //            GameObject kit_model = Geometry.CreateSphere(
        //                "kit_" + i.ToString(), lf_pt, sphereRadius,
        //                Color.black);

        //            kit_model.transform.parent = plant_graph.transform;
        //        }
        //    }

        //    foreach (var child in cur.childs)
        //    {
        //        queue.Enqueue(child);
        //    }
        //}

        for (int i = 0; i < skeleton_lines.Count; i += 2)
        {
            // linerenderer
            GameObject gObject = Geometry.CreateLineRenderer(
                "branch_" + i.ToString(), skeleton_lines[i + 0], skeleton_lines[i + 1],
                Color.gray, linewidth);

            gObject.transform.parent = plant_graph.transform;

            // С
            if (i == 0)  // ڵλ
            {
                var nodeObj1 = Geometry.CreateSphere("node_" + i.ToString(), skeleton_lines[0],
                    sphereRadius, Color.green);
                nodeObj1.transform.parent = plant_graph.transform;
            }
            var nodeObj2 = Geometry.CreateSphere("node_" + i.ToString(), skeleton_lines[i + 1],
                sphereRadius, Color.green);
            nodeObj2.transform.parent = plant_graph.transform;
        }

        return plant_graph;
    }

    public static GameObject GetMyStructureNetGraph_GameObject(Plant plant, int curlevel = 0)
    {
        // ͳһֵohԲõ
        {
            int count_leaf = 0;
            int count_branch = 0;
            int count_flower = 0;
            foreach (var item in plant.m_hierarchy_boxes)
            {

                if (item.Value.Item2 == false)  // ǲչ
                {
                    if (item.Key.boxType == MinBoundingBox.BoxType.leaf)
                        count_leaf++;
                    if (item.Key.boxType == MinBoundingBox.BoxType.flower)
                        count_flower++;
                    if (item.Key.boxType == MinBoundingBox.BoxType.endBranch)


ublic void setScore600(Long score600) {
		this.score600 = score600;
	}

	public Long getScore650() {
		return this.score650;
	}
	public void setScore650(Long score650) {
		this.score650 = score650;
	}

	public Long getScore700() {
		return this.score700;
	}
	public void setScore700(Long score700) {
		this.score700 = score700;
	}

	public Long getScore750() {
		return this.score750;
	}
	public void setScore750(Long score750) {
		this.score750 = score750;
	}

	public Long getScore800() {
		return this.score800;
	}
	public void setScore800(Long score800) {
		this.score800 = score800;
	}

	public Long getScore850() {
		return this.score850;
	}
	public void setScore850(Long score850) {
		this.score850 = score850;
	}

	public Long getScore900() {
		return this.score900;
	}
	public void setScore900(Long score900) {
		this.score900 = score900;
	}

	public Long getScore950() {
		return this.score950;
	}
	public void setScore950(Long score950) {
		this.score950 = score950;
	}

}
package com.alipay.api.domain;

import com.alipay.api.AlipayObject;
import com.alipay.api.internal.mapping.ApiField;

/**
 * 插件版本撤销灰度
 *
 * @author auto create
 * @since 1.0, 2024-04-23 10:19:06
 */
public class AlipayOpenMiniPluginuseconfigUpgradeCancelModel extends AlipayObject {

	private static final long serialVersionUID = 5172469856476399517L;

	/**
	 * 小程序客户端类型，默认为支付宝端。常见支持如下客户端：
com.alipay.alipaywallet：支付宝端；
com.alibaba.android.rimet：DINGDING端；
com.amap.app：高德端；
com.alibaba.ailabs.genie.webapps：天猫精灵端；
com.alipay.iot.xpaas：支付宝IoT端。
如需更多端投放，请联系业务BD。
	 */
	@ApiField("bundle_id")
	private String bundleId;

	/**
	 * 插件研发版本
	 */
	@ApiField("plugin_dev_version")
	private String pluginDevVersion;

	/**
	 * 插件appid
	 */
	@ApiField("plugin_id")
	private String pluginId;

	public String getBundleId() {
		return this.bundleId;
	}
	public void setBundleId(String bundleId) {
		this.bundleId = bundleId;
	}


n of his people, to call him, saying, Behold, there is a people come out from Egypt: behold, they cover the face of the earth, and they abide over against me: ^verse-5

**6**  Come now therefore, I pray thee, curse me this people; for they are too mighty for me: peradventure I shall prevail, that we may smite them, and that I may drive them out of the land: for I [[#^note-6a|wot]] that he whom thou blessest is blessed, and he whom thou cursest is cursed. ^verse-6

**7**  And the elders of Moab and the elders of Midian departed with the [[#^note-7a|rewards]] of [[#^note-7b|divination]] in their hand; and they came unto Balaam, and spake unto him the words of Balak. ^verse-7

**8**  And he said unto them, Lodge here this night, and I will bring you word again, as the Lord shall speak unto me: and the [[#^note-8a|princes]] of Moab abode with Balaam. ^verse-8

**9**  And God came unto Balaam, and said, What men are these with thee? ^verse-9

**10**  And Balaam said unto God, Balak the son of Zippor, king of Moab, hath sent unto me, saying, ^verse-10

**11**  Behold, there is a people come out of Egypt, which covereth the face of the earth: come now, curse me them; peradventure I shall be able to overcome them, and drive them out. ^verse-11

**12**  And God said unto Balaam, Thou shalt not go with them; thou shalt not curse the people: for they are blessed. ^verse-12

**13**  And Balaam rose up in the morning, and said unto the princes of Balak, Get you into your land: for the Lord refuseth to give me leave to go with you. ^verse-13

**14**  And the princes of Moab rose up, and they went unto Balak, and said, Balaam refuseth to come with us. ^verse-14

**15**  ¶ And Balak sent yet again princes, more, and more honourable than they. ^verse-15

**16**  And they came to Balaam, and said to him, Thus saith Balak the son of Zippor, Let nothing, I pray thee, hinder thee from coming unto me: ^verse-16

**17**  For I will promote thee unto very great honour, and I will do whatsoever thou sayest unto me: come therefore, I pray thee, curse me this people. ^verse-17

**18**  And Balaam answered and said unto the servants of Balak, If Balak would give me his house full of silver and gold, I cannot go beyond the word of the Lord my God, to do less or more. ^verse-18

**19**  Now therefore, I pray you, tarry ye also here this night, that I may know what the Lord will say unto me more. ^verse-19

**20**  And God came unto Balaam at night, and said unto him, If the men come to call thee, rise up, and go with them; but yet the word which I shall say unto thee, that shalt thou do. ^verse-20

**21**  And Balaam rose up in the morning, and saddled his ass, and went with the princes of Moab. ^verse-21

**22**  ¶ And God's anger was kindled because he went: and the angel of the Lord stood in the way for an adversary against him. Now he was riding upon his ass, and his two servants were with him. ^verse-22

**23**  And the ass [[#^note-23a|


return;
        }
        final LocaleMatcher withPTExplicit = newLocaleMatcher("pt_PT, pt_BR, es, es_419");
        final LocaleMatcher withPTImplicit = newLocaleMatcher("pt_PT, pt, es, es_419");
        // Could happen because "pt_BR" is a tier_1 language and "pt_PT" is tier_2.

        final LocaleMatcher withoutPT = newLocaleMatcher("pt_BR, es, es_419");
        // European user who prefers Spanish over Brazillian Portuguese as a fallback.

        assertEquals("pt_PT", withPTExplicit.getBestMatch("pt_PT, es, pt").toString());
        assertEquals("pt_PT", withPTImplicit.getBestMatch("pt_PT, es, pt").toString());
        assertEquals("es", withoutPT.getBestMatch("pt_PT, es, pt").toString());

        // Brazillian user who prefers South American Spanish over European Portuguese as a fallback.
        // The asymmetry between this case and above is because it's "pt_PT" that's missing between the
        // matchers as "pt_BR" is a much more common language.
        assertEquals("pt_BR", withPTExplicit.getBestMatch("pt, es_419, pt_PT").toString());
        assertEquals("pt", withPTImplicit.getBestMatch("pt, es_419, pt_PT").toString());
        assertEquals("pt_BR", withoutPT.getBestMatch("pt, es_419, pt_PT").toString());

        // Code that adds the user's country can get "pt_US" for a user's language.
        // That should fall back to "pt_BR".
        assertEquals("pt_BR", withPTExplicit.getBestMatch("pt_US, pt_PT").toString());
        assertEquals("pt", withPTImplicit.getBestMatch("pt_US, pt_PT").toString());
    }

    public void testVariantWithScriptMatch() {
        if (logKnownIssue("CLDR-14166", "Skip until CLDR updated for new ICU4J LocaleMatcher")) {
            return;
        }
        final LocaleMatcher matcher = newLocaleMatcher("fr, en, sv");
        assertEquals("en", matcher.getBestMatch("en-GB").toString());
        assertEquals("en", matcher.getBestMatch("en-GB, sv").toString());
    }

    public void testVariantWithScriptMatch2() {
        if (logKnownIssue("CLDR-14166", "Skip until CLDR updated for new ICU4J LocaleMatcher")) {
            return;
        }
        final LocaleMatcher matcher = newLocaleMatcher("en, sv");
        assertEquals("en", matcher.getBestMatch("en-GB, sv").toString());
    }

    public void testPerf() {
        if (logKnownIssue("CLDR-14166", "Skip until CLDR updated for new ICU4J LocaleMatcher")) {
            return;
        }
        fi


_G["weapons_table"]["weapons"]["shells"]["Bofors_40mm_HE"] = {
	AP_cap_caliber = 40,
	Da0 = 0.0006,
	Da1 = 0.0003,
	Dv0 = 0.004,
	_file = "./Mods/tech/WWII Units/Database/Weapons/ammunition.lua",
	_origin = "WWII Armour and Technics",
	caliber = 40,
	cartridge = 0,
	cartridge_mass = 0,
	category = 7,
	charTime = 0,
	cumulative_mass = 0,
	cumulative_thickness = 0,
	cx = { 0.5, 0.63, 0.74, 0.18, 1.65 },
	damage_factor = 639,
	display_name = "Bofors 40mm HE",
	explosive = 0.45,
	full_scale_time = -1,
	j = 0,
	k1 = 4.5e-09,
	l = 0,
	life_time = 12,
	manualWeaponFlag = 21,
	mass = 0.9,
	model_name = "tracer_bullet_red",
	name = "Bofors_40mm_HE",
	payload = 0.083071810965479,
	payload_type = 0,
	piercing_mass = 0


dif
	MSG_PUTS("\nCompiled with (+) or without (-):\n");

    /* print all the features */
    for (i = 0; features[i] != NULL; ++i)
    {
	version_msg(features[i]);
	if (msg_col > 0)
	    msg_putchar(' ');
    }

    msg_putchar('\n');
#ifdef SYS_VIMRC_FILE
    version_msg("   system vimrc file: \"");
    version_msg(SYS_VIMRC_FILE);
    version_msg("\"\n");
#endif
#ifdef USR_VIMRC_FILE
    version_msg("     user vimrc file: \"");
    version_msg(USR_VIMRC_FILE);
    version_msg("\"\n");
#endif
#ifdef USR_VIMRC_FILE2
    version_msg(" 2nd user vimrc file: \"");
    version_msg(USR_VIMRC_FILE2);
    version_msg("\"\n");
#endif
#ifdef USR_VIMRC_FILE3
    version_msg("  3d user vimrc file: \"");
    version_msg(USR_VIMRC_FILE3);
    version_msg("\"\n");
#endif
#ifdef USR_EXRC_FILE
    version_msg("      user exrc file: \"");
    version_msg(USR_EXRC_FILE);
    version_msg("\"\n");
#endif
#ifdef USR_EXRC_FILE2
    version_msg("  2nd user exrc file: \"");
    version_msg(USR_EXRC_FILE2);
    version_msg("\"\n");
#endif
#ifdef USE_GUI
# ifdef SYS_GVIMRC_FILE
    version_msg("  system gvimrc file: \"");
    version_msg(SYS_GVIMRC_FILE);
    MSG_PUTS("\"\n");
# endif
    version_msg("    user gvimrc file: \"");
    version_msg(USR_GVIMRC_FILE);
    version_msg("\"\n");
# ifdef USR_GVIMRC_FILE2
    version_msg("2nd user gvimrc file: \"");
    version_msg(USR_GVIMRC_FILE2);
    version_msg("\"\n");
# endif
# ifdef USR_GVIMRC_FILE3
    version_msg(" 3d user gvimrc file: \"");
    version_msg(USR_GVIMRC_FILE3);
    version_msg("\"\n");
# endif
#endif
#ifdef USE_GUI
# ifdef SYS_MENU_FILE
    version_msg("    system menu file: \"");
    version_msg(SYS_MENU_FILE);
    MSG_PUTS("\"\n");
# endif
#endif
#ifdef HAVE_PATHDEF
    if (*default_vim_dir != NUL)
    {
	version_msg("  fall-back for $VIM: \"");
	version_msg((char *)default_vim_dir);
	MSG_PUTS("\"\n");
    }
    if (*default_vimruntime_dir != NUL)
    {
	version_msg(" f-b for $VIMRUNTIME: \"");
	version_msg((char *)default_vimruntime_dir);
	MSG_PUTS("\"\n");
    }
    version_msg("Compilation: ");
    version_msg((char *)all_cflags);
    msg_putchar('\n');
#ifdef VMS
    if (*compiler_version != NUL)
    {
	version_msg("Compiler: ");
	version_msg((char *)compiler_version);
	msg_putchar('\n');
    }
#endif
    version_msg("Linking: ");
    version_msg((char *)all_lflags);
#endif
#ifdef DEBUG
    msg_putchar('\n');
    version_msg("  DEBUG BUILD");
#endif
}

/*
 * Output a string for the version message.  If it's going to wrap, output a
 * newline, unless the message is too long to fit on the screen anyway.
 */
    static void
version_msg(s)
    char	*s;
{
    int		len = strlen(s);

    if (len < (int)Columns && msg_col + len >= (int)Columns)
	msg_putchar('\n');
    MSG_PUTS(s);
}


_base_ = './faster_rcnn_hrnetv2p_w32_1x_coco.py'
# learning policy
lr_config = dict(step=[16, 22])
runner = dict(type='EpochBasedRunner', max_epochs=24)


_action_destroy(rule->dr_actions[i]);

	kfree(rule->dr_actions);
	return 0;
}

static int mlx5_cmd_dr_update_fte(struct mlx5_flow_root_namespace *ns,
				  struct mlx5_flow_table *ft,
				  struct mlx5_flow_group *group,
				  int modify_mask,
				  struct fs_fte *fte)
{
	struct fs_fte fte_tmp = {};
	int ret;

	if (mlx5_dr_is_fw_table(ft->flags))
		return mlx5_fs_cmd_get_fw_cmds()->update_fte(ns, ft, group, modify_mask, fte);

	/* Backup current dr rule details */
	fte_tmp.fs_dr_rule = fte->fs_dr_rule;
	memset(&fte->fs_dr_rule, 0, sizeof(struct mlx5_fs_dr_rule));

	/* First add the new updated rule, then delete the old rule */
	ret = mlx5_cmd_dr_create_fte(ns, ft, group, fte);
	if (ret)
		goto restore_fte;

	ret = mlx5_cmd_dr_delete_fte(ns, ft, &fte_tmp);
	WARN_ONCE(ret, "dr update fte duplicate rule deletion failed\n");
	return ret;

restore_fte:
	fte->fs_dr_rule = fte_tmp.fs_dr_rule;
	return ret;
}

static int mlx5_cmd_dr_set_peer(struct mlx5_flow_root_namespace *ns,
				struct mlx5_flow_root_namespace *peer_ns)
{
	struct mlx5dr_domain *peer_domain = NULL;

	if (peer_ns)
		peer_domain = peer_ns->fs_dr_domain.dr_domain;
	mlx5dr_domain_set_peer(ns->fs_dr_domain.dr_domain,
			       peer_domain);
	return 0;
}

static int mlx5_cmd_dr_create_ns(struct mlx5_flow_root_namespace *ns)
{
	ns->fs_dr_domain.dr_domain =
		mlx5dr_domain_create(ns->dev,
				     MLX5DR_DOMAIN_TYPE_FDB);
	if (!ns->fs_dr_domain.dr_domain) {
		mlx5_core_err(ns->dev, "Failed to create dr flow namespace\n");
		return -EOPNOTSUPP;
	}
	return 0;
}

static int mlx5_cmd_dr_destroy_ns(struct mlx5_flow_root_namespace *ns)
{
	return mlx5dr_domain_destroy(ns->fs_dr_domain.dr_domain);
}

bool mlx5_fs_dr_is_supported(struct mlx5_core_dev *dev)
{
	return mlx5dr_is_supported(dev);
}

static const struct mlx5_flow_cmds mlx5_flow_cmds_dr = {
	.create_flow_table = mlx5_cmd_dr_create_flow_table,
	.destroy_flow_table = mlx5_cmd_dr_destroy_flow_table,
	.modify_flow_table = mlx5_cmd_dr_modify_flow_table,
	.create_flow_group = mlx5_cmd_dr_create_flow_group,
	.destroy_flow_group = mlx5_cmd_dr_destroy_flow_group,
	.create_fte = mlx5_cmd_dr_create_fte,
	.update_fte = mlx5_cmd_dr_update_fte,
	.delete_fte = mlx5_cmd_dr_delete_fte,
	.update_root_ft = mlx5_cmd_dr_update_root_ft,
	.packet_reformat_alloc = mlx5_cmd_dr_packet_reformat_alloc,
	.packet_reformat_dealloc = mlx5_cmd_dr_packet_reformat_dealloc,
	.modify_header_alloc = mlx5_cmd_dr_modify_header_alloc,
	.modify_header_dealloc = mlx5_cmd_dr_modify_header_dealloc,
	.create_match_definer = mlx5_cmd_dr_create_match_definer,
	.destroy_match_definer = mlx5_cmd_dr_destroy_match_definer,
	.set_peer = mlx5_cmd_dr_set_peer,
	.create_ns = mlx5_cmd_dr_create_ns,
	.destroy_ns = mlx5_cmd_dr_destroy_ns,
};

const struct mlx5_flow_cmds *mlx5_fs_cmd_get_dr_cmds(void)
{
		return &mlx5_flow_cmds_dr;
}


     0.0, 0.0, 0.0, 1.0
            );
          }

          mat4 rotX(float angle) {
            return mat4(
              1.0, 0.0, 0.0, 0.0,
              0.0, cos(angle), -sin(angle), 0.0,
              0.0, sin(angle), cos(angle), 0.0,
              0.0, 0.0, 0.0, 1.0
            );
          }

          mat4 rotY(float angle) {
            return mat4(
              cos(angle), 0.0, sin(angle), 0.0,
              0.0, 1.0, 0.0, 0.0,
              -sin(angle), 0.0, cos(angle), 0.0,
              0.0, 0.0, 0.0, 1.0
            );
          }

          mat4 rotZ(float angle) {
            return mat4(
              cos(angle), -sin(angle), 0.0, 0.0,
              sin(angle), cos(angle), 0.0, 0.0,
              0.0, 0.0, 1.0, 0.0,
              0.0, 0.0, 0.0, 1.0
            );
          }

          mat4 translate(float x, float y, float z) {
            return mat4(
              1.0, 0.0, 0.0, x,
              0.0, 1.0, 0.0, y,
              0.0, 0.0, 1.0, z,
              0.0, 0.0, 0.0, 1.0
            );
          }

          mat4 translateX(float x) {
            return translate(x, 0.0, 0.0);
          }

          mat4 translateY(float y) {
            return translate(0.0, y, 0.0);
          }

          mat4 translateZ(float z) {
            return translate(0.0, 0.0, z);
          }

          vec3 applyTransform(mat4 t, vec3 p) {
            vec4 p4 = transpose(t) * vec4(p, 1.0);
            return p4.xyz / p4.w;
          }

          float sdBox(vec3 p, vec3 b) {
            vec3 d = abs(p) - b;
            return length(max(d,0.0)) + min(max(d.x,max(d.y,d.z)),0.0);
          }

          const int kSteps = 120;
          const float kEpsilon = 1./512.;

          struct Hit {
            float dist;
            vec3 boxP;
          };

          Hit sceneSDF(vec3 boxP) {
            // boxP.z += sin(t) * 1.;
            // boxP.x += sin(t * 1.5) * .1;
            // boxP = mod(boxP + 5., 10.) - 5.;
            boxP.y -= 40.;

            boxP.z += 1.;

            boxP = applyTransform(rotY(spinny), boxP);
            boxP = applyTransform(rotZ(PI/5.1) * rotX(PI/4.), boxP);
            // boxP *= 1. - texture2D(sf_t, vec2(0))[0] * 0.4;

            // boxP.y += texture2D(sf_t, vec2(abs(boxP.x/480.), 0))[0] * 10.;

            float contort = sin(min(max(boxP.x * boxP.y, -1000.), 1000.) * .011 + mod(t, 2. * 3.1415)) * 10.;

            return Hit(
              sdBox(boxP, vec3(15.)) + contort * pow(texture2D(sf_t, vec2(0.1, 0))[0] + 0.5, 5.) * 0.3,
              boxP / 20.
            );
          }

          // http://jam


 translateY(100%);
}
.offcanvas.showing, .offcanvas.show:not(.hiding) {
  transform: none;
}
.offcanvas.showing, .offcanvas.hiding, .offcanvas.show {
  visibility: visible;
}

.offcanvas-backdrop {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1040;
  width: 100vw;
  height: 100vh;
  background-color: #000;
}
.offcanvas-backdrop.fade {
  opacity: 0;
}
.offcanvas-backdrop.show {
  opacity: 0.5;
}

.offcanvas-header {
  display: flex;
  align-items: center;
  padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);
}
.offcanvas-header .btn-close {
  padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5);
  margin: calc(-0.5 * var(--bs-offcanvas-padding-y)) calc(-0.5 * var(--bs-offcanvas-padding-x)) calc(-0.5 * var(--bs-offcanvas-padding-y)) auto;
}

.offcanvas-title {
  margin-bottom: 0;
  line-height: var(--bs-offcanvas-title-line-height);
}

.offcanvas-body {
  flex-grow: 1;
  padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);
  overflow-y: auto;
}

.placeholder {
  display: inline-block;
  min-height: 1em;
  vertical-align: middle;
  cursor: wait;
  background-color: currentcolor;
  opacity: 0.5;
}
.placeholder.btn::before {
  display: inline-block;
  content: "";
}

.placeholder-xs {
  min-height: 0.6em;
}

.placeholder-sm {
  min-height: 0.8em;
}

.placeholder-lg {
  min-height: 1.2em;
}

.placeholder-glow .placeholder {
  animation: placeholder-glow 2s ease-in-out infinite;
}

@keyframes placeholder-glow {
  50% {
    opacity: 0.2;
  }
}
.placeholder-wave {
  -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
  mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);
  -webkit-mask-size: 200% 100%;
  mask-size: 200% 100%;
  animation: placeholder-wave 2s linear infinite;
}

@keyframes placeholder-wave {
  100% {
    -webkit-mask-position: -200% 0%;
    mask-position: -200% 0%;
  }
}
.clearfix::after {
  display: block;
  clear: both;
  content: "";
}

.text-bg-primary {
  color: #fff !important;
  background-color: RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important;
}

.text-bg-secondary {
  color: #fff !important;
  background-color: RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important;
}

.text-bg-success {
  color: #fff !important;
  background-color: RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important;
}

.text-bg-info {
  color: #000 !important;
  background-color: RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important;
}

.text-bg-warning {
  color:


	for (const bctbx_list_t *elem = algorithms; elem != NULL; elem = elem->next)
		algoList.push_back((const char *)elem->data);
	AuthInfo::toCpp(info)->setAvailableAlgorithms(algoList);
}

void linphone_auth_info_add_available_algorithm(LinphoneAuthInfo *info, const char *algorithm) {
	AuthInfo::toCpp(info)->addAvailableAlgorithm(L_C_TO_STRING(algorithm));
}

void linphone_auth_info_set_userid(LinphoneAuthInfo *info, const char *userid) {
	AuthInfo::toCpp(info)->setUserid(L_C_TO_STRING(userid));
}

void linphone_auth_info_set_realm(LinphoneAuthInfo *info, const char *realm) {
	AuthInfo::toCpp(info)->setRealm(L_C_TO_STRING(realm));
}

void linphone_auth_info_set_domain(LinphoneAuthInfo *info, const char *domain) {
	AuthInfo::toCpp(info)->setDomain(L_C_TO_STRING(domain));
}

void linphone_auth_info_set_ha1(LinphoneAuthInfo *info, const char *ha1) {
	AuthInfo::toCpp(info)->setHa1(L_C_TO_STRING(ha1));
}

void linphone_auth_info_set_tls_cert(LinphoneAuthInfo *info, const char *tls_cert) {
	AuthInfo::toCpp(info)->setTlsCert(L_C_TO_STRING(tls_cert));
}

void linphone_auth_info_set_tls_key(LinphoneAuthInfo *info, const char *tls_key) {
	AuthInfo::toCpp(info)->setTlsKey(L_C_TO_STRING(tls_key));
}

void linphone_auth_info_set_tls_cert_path(LinphoneAuthInfo *info, const char *tls_cert_path) {
	AuthInfo::toCpp(info)->setTlsCertPath(L_C_TO_STRING(tls_cert_path));
}

void linphone_auth_info_set_tls_key_path(LinphoneAuthInfo *info, const char *tls_key_path) {
	AuthInfo::toCpp(info)->setTlsKeyPath(L_C_TO_STRING(tls_key_path));
}

void linphone_auth_info_set_tls_key_password(LinphoneAuthInfo *info, const char *tls_key_password) {
	AuthInfo::toCpp(info)->setTlsKeyPassword(L_C_TO_STRING(tls_key_password));
}

void linphone_auth_info_clear_available_algorithms(LinphoneAuthInfo *info) {
	AuthInfo::toCpp(info)->clearAvailableAlgorithms();
}

const char *linphone_auth_info_get_username(const LinphoneAuthInfo *info) {
	const char *username = AuthInfo::toCpp(info)->getUsername().c_str();
	return strlen(username) != 0 ? username : NULL;
}

const char *linphone_auth_info_get_algorithm(const LinphoneAuthInfo *info) {
	const char *algo = AuthInfo::toCpp(info)->getAlgorithm().c_str();
	return strlen(algo) != 0 ? algo : NULL;
}

bctbx_list_t *linphone_auth_info_get_available_algorithms(const LinphoneAuthInfo *info) {
	std::list<std::string> algoList = AuthInfo::toCpp(info)->getAvailableAlgorithms();
	bctbx_list_t *result = NULL;
	for (auto i = algoList.begin(); i != algoList.end(); ++i)
		result = bctbx_list_append(result, ms_strdup(i->c_str()));
	return result;
}

const char *linphone_auth_info_get_passwd(const LinphoneAuthInfo *info) {
	return linphone_auth_info_get_password(info);
}

const char *linphone_aut


portsLatest get() = true

    override val baseUrl: String

    init {
        val mirrors = MIRRORS
        val index = Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
            .getString(MIRROR_PREF, "0")!!.toInt().coerceAtMost(mirrors.size - 1)
        baseUrl = "https://" + mirrors[index]
    }

    override fun headersBuilder() = Headers.Builder()
        .add("User-Agent", System.getProperty("http.agent")!!)

    private val json: Json by injectLazy()

    override fun popularMangaRequest(page: Int) =
        GET("$baseUrl/prod-api/app-api/vv/mh-list/page?mhcate=2&pageSize=50&pageNo=$page", headers)

    override fun popularMangaParse(response: Response): MangasPage {
        val listing: ListingDto = response.parseAs()
        val mangas = listing.list.map { it.toSManga(baseUrl) }
        val hasNextPage = run {
            val url = response.request.url
            val pageSize = url.queryParameter("pageSize")!!.toInt()
            val pageNumber = url.queryParameter("pageNo")!!.toInt()
            pageSize * pageNumber < listing.totalCount
        }
        return MangasPage(mangas, hasNextPage)
    }

    override fun latestUpdatesRequest(page: Int) =
        GET("$baseUrl/prod-api/app-api/vv/mh-list/page?mhcate=4&pageSize=50&pageNo=$page", headers)

    override fun latestUpdatesParse(response: Response) = popularMangaParse(response)

    override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
        val url = "$baseUrl/prod-api/app-api/vv/mh-list/page".toHttpUrl().newBuilder()
            .apply { if (query.isNotBlank()) addQueryParameter("word", query) }
            .apply { parseFilters(filters, this) }
            .addEncodedQueryParameter("pageSize", "50")
            .addEncodedQueryParameter("pageNo", page.toString())
            .build()
        return Request.Builder().url(url).headers(headers).build()
    }

    override fun searchMangaParse(response: Response) = popularMangaParse(response)

    // for WebView
    override fun mangaDetailsRequest(manga: SManga) =
        GET("$baseUrl/#/pages/detail/detail?id=${manga.url}")

    override fun fetchMangaDetails(manga: SManga): Observable<SManga> {
        val request = GET("$baseUrl/prod-api/app-api/vv/mh-list/get?id=${manga.url}", headers)
        return client.newCall(request).asObservableSuccess().map { mangaDetailsParse(it) }
    }

    override fun mangaDetailsParse(response: Response) =
        response.parseAs<MangaDto>().toSManga(baseUrl)

    override fun chapterListRequest(manga: SManga) =
        GET("$baseUrl/prod-api/app-api/vv/mh-episodes/list?mhid=${manga.url}", headers)

    override fun chapterListParse(response: Response) =
        response.parseAs<List<ChapterDto>>().map { it.toSChapter() }

    // for WebView
    override fun pageListRequest(chapter: SChapter): Request {
        val (mangaId, chapterIndex) = chapter.url.split("/")
        return GET("$baseUrl/#/pages/read/read?no=$chapterIndex&id=$mangaId")
    }

    override fun fetchPageList(chapter: SChapter):


// because not all rows are indexed by partial indexes.
//
// The VectorIndexUpdateHelper is used to determine which partitions to update
// in each vector index and supply the quantized vectors to add to the
// partitions. This is necessary because these values are not part of the table,
// and are materialized only for the purpose of updating vector indexes.
//
// The mustValidateOldPKValues parameter indicates whether the expected previous
// row must be verified (using CPut).
//
// The traceKV parameter determines whether the individual K/V operations
// should be logged to the context. We use a separate argument here instead
// of a Value field on the context because Value access in context.Context
// is rather expensive.
func (tu *tableUpdater) rowForUpdate(
	ctx context.Context,
	oldValues, updateValues tree.Datums,
	pm row.PartialIndexUpdateHelper,
	vh row.VectorIndexUpdateHelper,
	oth row.OriginTimestampCPutHelper,
	mustValidateOldPKValues bool,
	traceKV bool,
) (tree.Datums, error) {
	tu.currentBatchSize++
	return tu.ru.UpdateRow(
		ctx, tu.b, oldValues, updateValues, pm, vh, oth, mustValidateOldPKValues, traceKV,
	)
}

// tableDesc returns the TableDescriptor for the table that the tableUpdater
// will modify.
func (tu *tableUpdater) tableDesc() catalog.TableDescriptor {
	return tu.ru.Helper.TableDesc
}
// Copyright 2025 The Cockroach Authors.
//
// Use of this software is governed by the CockroachDB Software License
// included in the /LICENSE file.

package sql

import (
	"context"
	"sync"

	"github.com/cockroachdb/cockroach/pkg/kv/kvpb"
	"github.com/cockroachdb/cockroach/pkg/sql/catalog/colinfo"
	"github.com/cockroachdb/cockroach/pkg/sql/sem/tree"
	"github.com/cockroachdb/errors"
)

var deleteSwapNodePool = sync.Pool{
	New: func() interface{} {
		return &deleteSwapNode{}
	},
}

type deleteSwapNode struct {
	// Unlike insertFastPathNode, deleteSwapNode reads from input in order to
	// support projections, which are used by some DELETE statements.
	singleInputPlanNode

	// columns is set if this DELETE is returning any rows, to be
	// consumed by a renderNode upstream. This occurs when there is a
	// RETURNING clause with some scalar expressions.
	columns colinfo.ResultColumns

	run deleteRun
}

var _ mutationPlanNode = &deleteSwapNode{}

func (d *deleteSwapNode) startExec(params runParams) error {
	// Cache traceKV during execution, to avoid re-evaluating it for every row.
	d.run.traceKV = params.p.ExtendedEvalContext().Tracing.KVTracingEnabled()

	d.run.mustValidateOldPKValues = true

	d.run.init(params, d.columns)

	if err := d.run.td.init(params.ctx, params.p.txn, params.EvalContext()); err != nil {
		return err
	}

	// Run the mutation to completion. DeleteSwap only processes one row, so no
	// need to loop.
	return d.processBatch(params)
}

// Next implements the planNode interface.
func (d *deleteSwapNode) Next(_ runParams) (bool, error) {
	return d.run.next(), nil
}

// Values implements the planNode interface.
func (d *deleteSwapNode) Values() tree.Datums {
	return d.run.values()
}

func (d *deleteSwapNode) proces


 UI element that performs an action when invoked,
    /// such as sending an email, deleting an item, or submitting a form.
    /// </summary>
    public ICommand Command
    {
        get => GetValue(CommandProperty);
        set => SetValue(CommandProperty, value);
    }

    /// <summary>
    /// Gets or sets a description for this element.
    /// </summary>
    public string Description
    {
        get => GetValue(DescriptionProperty);
        set => SetValue(DescriptionProperty, value);
    }

    /// <summary>
    /// Gets or sets an IconSource for this element.
    /// </summary>
    public IconSource IconSource
    {
        get => GetValue(IconSourceProperty);
        set => SetValue(IconSourceProperty, value);
    }

    /// <summary>
    /// Gets or sets a KeyGesture used to invoke this XamlUICommand
    /// </summary>
    public KeyGesture HotKey
    {
        get => GetValue(HotKeyProperty);
        set => SetValue(HotKeyProperty, value);
    }

    /// <summary>
    /// Gets or sets the label for this element.
    /// </summary>
    public string Label
    {
        get => GetValue(LabelProperty);
        set => SetValue(LabelProperty, value);
    }

    /// <summary>
    /// Occurs whenever something happens that affects whether the command can execute.
    /// </summary>
    public event EventHandler CanExecuteChanged;

    /// <summary>
    /// Occurs when a CanExecute call is made.
    /// </summary>
    public event TypedEventHandler<XamlUICommand, CanExecuteRequestedEventArgs> CanExecuteRequested;

    /// <summary>
    /// Occurs when an Execute call is made.
    /// </summary>
    public event TypedEventHandler<XamlUICommand, ExecuteRequestedEventArgs> ExecuteRequested;
}


15' y2='15'%3E%3C/line%3E%3Cline x1='15' y1='9' x2='9' y2='15'%3E%3C/line%3E%3C/svg%3E")}li.fast_filter.db_fast_filter{border:0;margin-right:0;margin-left:10px}html.ie li.fast_filter span{display:none}html.ie li.fast_filter input{padding-left:.2em}html.ie.ie9 li.fast_filter span,html.ie.ie8 li.fast_filter span{display:auto}html.ie.ie9 li.fast_filter input,html.ie.ie8 li.fast_filter input{padding-left:1.7em}#navigation_controls_outer{min-height:21px !important}#navigation_controls_outer.activePointer{background-color:rgba(0,0,0,0) !important}#navigation_controls{float:left;padding-left:23px}#navigation_controls a{margin:4px}#pma_navigation_resizer{top:0;width:3px;height:100%;z-index:801;position:fixed;right:240px;cursor:col-resize;border-left:1px solid rgba(0,0,0,.1)}#pma_navigation_collapser{top:0;font-size:0;z-index:800;cursor:pointer;position:fixed;right:240px;width:38px;height:38px;line-height:38px;background-repeat:no-repeat;background-position:center}#pma_navigation_collapser[title="Hide panel"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='19' y1='12' x2='5' y2='12'%3E%3C/line%3E%3Cpolyline points='12 19 5 12 12 5'%3E%3C/polyline%3E%3C/svg%3E")}#pma_navigation_collapser[title="Show panel"]{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'%3E%3C/line%3E%3Cpolyline points='12 5 19 12 12 19'%3E%3C/polyline%3E%3C/svg%3E")}#pma_navigation_collapser:hover{background-color:rgba(0,0,0,.35)}.pma_quick_warp{margin-top:5px;margin-right:2px;position:relative}.pma_quick_warp .drop_list{float:right;margin-right:3px;padding:2px 0}.pma_quick_warp .drop_list ul{position:absolute;margin:0;padding:0;overflow:hidden;overflow-y:auto;list-style:none;background:#fff;border:1px solid #ddd;border-radius:.3em;border-top-right-radius:0;border-bottom-right-radius:0;box-shadow:0 0 5px #ccc;top:100%;right:3px;left:0;display:none;z-index:802}.pma_quick_warp .drop_list li{padding:0;border-radius:0;white-space:nowrap}.pma_quick_warp .drop_list li img{vertical-align:sub}.pma_quick_warp .drop_list li:hover{background:#f2f2f2}.pma_quick_warp .drop_list a{display:block;padding:.2em .3em}.pma_quick_warp .drop_list a.favorite_table_anchor{clear:right;float:right;padding:.1em .3em 0}.pma_quick_warp .drop_list:hover ul{display:block}.pma_quick_warp .drop_li


index, we had two blocks on dplyr: the intro, and verbs for a single dataset. We’ll try to extract the .rmd filenames for these blocks. To make the task a bit harder, I also put a few fake files inside the repository that don’t quite match our naming strategy!

We know that the filename should have block and dplyr in it, and is a Rmd file, so what if we just put these three parts together?

pattern <- "block.*dplyr.*rmd"
grep(pattern, files, value = TRUE)

## [1] "block0_dplyr-fake.rmd"
## [2] "block000_dplyr-fake.rmd.txt"
## [3] "block009_dplyr-intro.rmd"
## [4] "block010_dplyr-end-single-table.rmd"
## [5] "xblock000_dplyr-fake.rmd"

Apart from the two files we wanted, we also got three fake ones: block0_dplyr-fake.rmd, block000_dplyr-fake.rmd.txt, xblock000_dplyr-fake.rmd. Looks like our pattern is not stringent enough. The first fake file does not have 3 digits after block, second one does not start with block, and last one has .txt after rmd. So let’s try to fix that:

pattern <- "^block\\d{3}_.*dplyr.*rmd$"
(dplyr_file <- grep(pattern, files, value = TRUE))

## [1] "block009_dplyr-intro.rmd"
## [2] "block010_dplyr-end-single-table.rmd"

Now we have the two file names stored in dplyr_file, let’s try to extract the topics out.

One way to do that is to use a substitution function like sub(), gsub(), or str_sub() to replace anything before and after the topic with empty strings:

(dplyr_topic <- gsub("^block\\d{3}_.*dplyr-", "", dplyr_file))

## [1] "intro.rmd"            "end-single-table.rmd"

(dplyr_topic <- gsub("\\.rmd", "", dplyr_topic))

## [1] "intro"            "end-single-table"

Alternatively, instead of using grep() + gsub(), we can use str_match(). As mentioned above, this function will give specific matches for patterns enclosed with () operator. We just need to reconstruct our regular expression to specify the topic part:

pattern <- "^block\\d{3}_.*dplyr-(.*)\\.rmd$"
(na.omit(str_match(files, pattern)))

##      [,1]


  .G2b7wg0g7nK5eyyVc78t2:not(.FocusedColumn) {
    padding-left: 5%;
  }
}
.G2b7wg0g7nK5eyyVc78t2 ._2-ofagW1ArFbwEVr0MTIFa {
  height: 110px;
  position: static;
}
._30w46ktz76K_Rnqk02ZfT0 {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 8px;
  color: #dfe3e6;
}
._30w46ktz76K_Rnqk02ZfT0:hover {
  color: #dcdedf;
}
._30w46ktz76K_Rnqk02ZfT0:hover._1zkgQm67ell-zVB965M-D5 {
  background: #464d58;
  color: #fff;
}
._30w46ktz76K_Rnqk02ZfT0 svg {
  height: 30px;
  padding: 0px 5px;
}
._30w46ktz76K_Rnqk02ZfT0 img {
  height: 30px;
  padding: 0px 5px;
}
._30w46ktz76K_Rnqk02ZfT0 img._2Sd7DNxpRx60V_TEMMd9Fa {
  padding-left: 0px;
}
._30w46ktz76K_Rnqk02ZfT0 ._27riDFAYqUAE3xYdrBEMl6 {
  padding-right: 5px;
}
._30w46ktz76K_Rnqk02ZfT0 .wkeTZXlOR5ygc_wnxhNW0 {
  font-size: 16px;
}
.DesktopUI ._30w46ktz76K_Rnqk02ZfT0 ._2C_s8rkFQWVc2szA5a6-_R {
  color: #dfe3e6;
  background-color: rgba(59, 63, 72, 0.5);
  padding: 8px 14px;
  font-size: 13px;
  line-height: 18px;
  width: auto;
}
.DesktopUI ._30w46ktz76K_Rnqk02ZfT0 ._2C_s8rkFQWVc2szA5a6-_R:hover {
  background: #464d58;
  color: #fff;
}
._30w46ktz76K_Rnqk02ZfT0
  ._2C_s8rkFQWVc2szA5a6-_R.gpfocus
  ._30w46ktz76K_Rnqk02ZfT0
  ._2C_s8rkFQWVc2szA5a6-_R.DialogButton {
  background: #464d58;
  color: #fff !important;
}
._2Jch8LDg1Ur6W82pnoWG_F {
  display: inline-flex;
  vertical-align: middle;
  gap: 4px;
  margin-left: 2px;
  margin-right: 2px;
}
._2Jch8LDg1Ur6W82pnoWG_F ._3U17VFEIXQnaZKy3ah_kRd {
  height: 24px;
  aspect-ratio: 1;
}
._2Jch8LDg1Ur6W82pnoWG_F ._21-yLG7tOG7pkQeg40nAeJ {
  color: #dcdedf;
  width: fit-content;
  text-align: right;
  vertical-align: middle;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 4px;
}
._1SIa8xLHqCJGyeA9sQ4yK_ {


=> string;
    getTask(paramUUID: string): IScheduleTask | undefined;
    getTasks(paramUUIDs: string[]): IScheduleTask[];
    getPendingTasks(): IScheduleTask[];
    getRunningTasks(): IScheduleTask[];
    getFinishedTasks(): IExtractedData[];
    getAllTasks(): IScheduleTask[];
}
export interface ISchedulerStat {
    runningTaskUUID: string | null;
}
export interface IUUIDStatObject {
    [key: string]: IUUIDStat;
}
export interface IFailSafeCommon {
    task: (task: IScheduleTask) => Promise<any>;
    callback?: (task: IScheduleTask, result: any) => Promise<any>;
}
export interface IExtractedData {
    uuid: string;
    data: any;
    result: any;
    delay: any;
    isStarted: boolean;
    isStopped: boolean;
    timestamp: number;
    schedule: number;
    loop: boolean;
}
export interface IFailSafeExtractedTask {
    scheduled: IExtractedData[];
    pending: IExtractedData[];
    running: IExtractedData[];
    finished: IExtractedData[];
}
export interface IAddTasksOption {
    delay?: number;
    schedule?: number | moment.Moment;
    loop?: () => boolean;
}
import { Component, OnInit } from '@angular/core';

// IMPORTAR EL SERVICIO
import { TelefonoService } from '../../../services/telefono.service';
import { ToastrService } from 'ngx-toastr';

// IMPORTAR EL MODELO
import { Telefono } from '../../../models/telefono';

@Component({
  selector: 'app-listado-telefonos',
  templateUrl: './listado-telefonos.component.html',
  styleUrls: ['./listado-telefonos.component.css']
})
export class ListadoTelefonosComponent implements OnInit {

  public ListaTelefonos : Telefono[];

  constructor(private telefonoService: TelefonoService,
      private toastr_service : ToastrService
    ) { }

  ngOnInit() {
    this.telefonoService.getTelefonos()
      .snapshotChanges() //cada vez que hay un cambio en BD lo recojo
      .subscribe(item=>{ // item son los elementos que traigo de la BD
        this.ListaTelefonos = []; // Inicializar el array
        item.forEach(element =>{  //Recorrer la lista de elementos
          let x= element.payload.toJSON() //convierto el contenido en un JSON
          x["$key"] = element.key; // añado la key a la lista
          this.ListaTelefonos.push(x as Telefono); // Añadir el elemento en la lista de telefonos
        });
      });
  }

  onEdit(phone: Telefono){
    this.telefonoService.selectedTele


,"
	case "png":
		base64EncodedImage += "data:image/png;base64,"
	case "webp":
		base64EncodedImage += "data:image/webp;base64,"
	}

	base64EncodedImage += base64.StdEncoding.EncodeToString(bytes)
	return base64EncodedImage
}

// can be used if want to send base64 image in place of url
func getImagesFromURLString(filepath string) string {
	var base64EncodedImage string
	splitter := "."

	// Read the entire file into a byte slice
	bytes, err := os.ReadFile(filepath)
	if err != nil {
		log.Info(err)
	}

	if len(bytes) == 0 {
		var elems []string
		elems = append(elems, "..")
		elems = append(elems, "utils")
		elems = append(elems, "noimage.jpg")
		filepath = strings.Join(elems, string(os.PathSeparator))
		//filepath = `..\utils\noimage.png`
		bytes, err = os.ReadFile(filepath)
		if err != nil {
			log.Info(err)
		}
	}

	splits := strings.SplitN(filepath, splitter, -1)
	extension := splits[len(splits)-1]

	switch extension {
	case "jpeg":
		base64EncodedImage += "data:image/jpeg;base64,"
	case "jpg":
		base64EncodedImage += "data:image/jpg;base64,"
	case "png":
		base64EncodedImage += "data:image/png;base64,"
	case "webp":
		base64EncodedImage += "data:image/webp;base64,"
	}

	base64EncodedImage += base64.StdEncoding.EncodeToString(bytes)
	return base64EncodedImage
}

// Remove Characters that are not allowed in folder-names
// Only specific fields to be handled which are used for generating folder names
// Folder naming rules:
// Windows (FAT32, NTFS): Any Unicode except NUL, \, /, :, *, ?, ", <, >, |. Also, no space character at the start or end, and no period at the end.
// Mac(HFS, HFS+): Any valid Unicode except : or /
// Linux(ext[2-4]): Any byte except NUL or /
func removeForbiddenChars(metadata []e.MediaInformation) []e.MediaInformation {

	// / = 10744

	forbiddenChars := []string{"\\", "/", ":", "*", "?", "\"", "<", ">", "|"}
	emptyString := ""
	singleSpace := " "
	doubleSpaces := "  "

	for i := 0; i < len(metadata); i++ {
		for _, elem := range forbiddenChars {

			//handle Domain
			if strings.Contains(metadata[i].Domain, elem) {
				metadata[i].Domain = strings.ReplaceAll(metadata[i].Domain, elem, emptyString)
				metadata[i].Domain = strings.TrimSpace(metadata[i].Domain)                             //Trim leading and trailing spaces
				metadata[i].Domain = strings.TrimRight(metadata[i].Domain, ".")                        //Trim trailing period
				metadata[i].Domain = strings.ReplaceAll(metadata[i].Domain, doubleSpaces, singleSpace) //Replace any double spaces that may have occurred as a result of removing characters
			}

			//handle Video Channel
			if strings.Contains(metadata[i].Channel, elem) {
				metadata[i].Channel = strings.ReplaceAll(metadata[i].Channel, elem, emptyString)
				metadata[i].Channel = strings.TrimSpace(metadata[i].Channel)
				metadata[i].Channel = strings.TrimRight(metadata[i].Channel, ".")
				metadata[i].Channel = strings.ReplaceAll(metadata[i].Channel, doubleSpaces, singleSpace)
			}

			//handle Video Title
			if strings.Contains(metadata[i].Title


.TooltipIcon )?.Description() );
        AttributeIfNotEmpty( "[nzTooltipIcon]", _config.GetValue( AngularConst.BindTooltipIcon ) );
        return this;
    }

    /// <summary>
    /// 配置自动完成
    /// </summary>
    public FormBuilder AutoComplete() {
        var isAutoComplete = _config.GetValue<bool?>( UiConst.Autocomplete );
        if ( isAutoComplete == null )
            return this;
        if ( isAutoComplete == true ) {
            Attribute( "autocomplete", "on" );
            return this;
        }
        Attribute( "autocomplete", "off" );
        return this;
    }

    /// <summary>
    /// 配置表单组
    /// </summary>
    public FormBuilder FormGroup() {
        AttributeIfNotEmpty( "[formGroup]", GetFormGroup() );
        return this;
    }

    /// <summary>
    /// 获取表单组
    /// </summary>
    private string GetFormGroup() {
        return _config.GetValue( UiConst.FormGroup );
    }

    /// <summary>
    /// 配置是否不验证表单
    /// </summary>
    public FormBuilder Novalidate() {
        AttributeIf( "novalidate", _config.GetValue<bool?>( UiConst.Novalidate ) == true );
        return this;
    }

    /// <summary>
    /// 配置事件
    /// </summary>
    public FormBuilder Events() {
        AttributeIfNotEmpty( "(ngSubmit)", _config.GetValue( UiConst.OnSubmit ) );
        return this;
    }

    /// <summary>
    /// 配置
    /// </summary>
    public override void Config() {
        base.Config();
        Layout().AutoTips().DisableAutoTips().NoColon().LabelWrap().LabelAlign()
            .TooltipIcon().AutoComplete().FormGroup().Novalidate()
            .Events();
        AutocompleteOff();
    }

    /// <summary>
    /// 配置标识
    /// </summary>
    protected override void ConfigId( Config config ) {
        this.RawId( _config );
        if ( Util.Helpers.Environment.IsTest && _config.Contains( UiConst.Id ) == false )
            return;
        if ( _shareConfig.IsSearch.SafeValue() && _config.Contains( UiConst.Id ) == false )
            return;
        if ( GetFormGroup().IsEmpty() == false ) {
            AttributeIf( $"#{_shareConfig.FormId}", _shareConfig.FormId.IsEmpty() == false );
            return;
        }
        Attribute( $"#{_shareConfig.FormId}", "ngForm" );
    }

    /// <summary>
    /// 配置全局设置 autocomplete="off"
    /// </summary>
    protected void AutocompleteOff() {
        var options = NgZorroOptionsService.GetOptions();
        if ( options.EnableAutocompleteOff )
            Attribute( "autocomplete", "off" );
    }
}


endif
#if (RTL8188F_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8188F)
		version = GET_VERSION_MP(8188f, _mac_reg);
#endif
#if (RTL8822B_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8822B)
		version = GET_VERSION_MP(8822b, _mac_reg);
#endif
#if (RTL8197F_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8197F)
		version = GET_VERSION_MP(8197f, _mac_reg);
#endif

/*@jj add 20170822*/
#if (RTL8192F_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8192F)
		version = GET_VERSION_MP(8192f, _mac_reg);
#endif
#if (RTL8721D_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8721D)
		version = GET_VERSION_MP(8721d, _mac_reg);
#endif
#if (RTL8821C_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8821C)
		version = GET_VERSION(8821c, _mac_reg);
#endif
#if (RTL8195B_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8195B)
		version = GET_VERSION(8195b, _mac_reg);
#endif
#if (RTL8198F_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8198F)
		version = GET_VERSION_MP(8198f, _mac_reg);
#endif
#if (RTL8822C_SUPPORT)
	if (dm->support_ic_type == ODM_RTL8822C)
		version = GET_VERSION_MP(8822c, _mac_reg);
#endif
#if (RTL8812F_SUPPORT)
	if (dm->support_ic_type == ODM_RTL8812F)
		version = GET_VERSION_MP(8812f, _mac_reg);
#endif
#if (RTL8814B_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8814B)
		version = GET_VERSION_MP(8814b, _mac_reg);
#endif

	return version;
}

u32 query_phydm_trx_capability(struct dm_struct *dm)
{
	u32 value32 = 0xFFFFFFFF;

#if (RTL8821C_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8821C)
		value32 = query_phydm_trx_capability_8821c(dm);
#endif
#if (RTL8195B_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8195B)
		value32 = query_phydm_trx_capability_8195b(dm);
#endif
	return value32;
}

u32 query_phydm_stbc_capability(struct dm_struct *dm)
{
	u32 value32 = 0xFFFFFFFF;

#if (RTL8821C_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8821C)
		value32 = query_phydm_stbc_capability_8821c(dm);
#endif
#if (RTL8195B_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8195B)
		value32 = query_phydm_stbc_capability_8195b(dm);
#endif

	return value32;
}

u32 query_phydm_ldpc_capability(struct dm_struct *dm)
{
	u32 value32 = 0xFFFFFFFF;

#if (RTL8821C_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8821C)
		value32 = query_phydm_ldpc_capability_8821c(dm);
#endif
#if (RTL8195B_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8195B)
		value32 = query_phydm_ldpc_capability_8195b(dm);
#endif
	return value32;
}

u32 query_phydm_txbf_parameters(struct dm_struct *dm)
{
	u32 value32 = 0xFFFFFFFF;

#if (RTL8821C_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8821C)
		value32 = query_phydm_txbf_parameters_8821c(dm);
#endif
#if (RTL8195B_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8195B)
		value32 = query_phydm_txbf_parameters_8195b(dm);
#endif
	return value32;
}

u32 query_phydm_txbf_capability(struct dm_struct *dm)
{
	u32 value32 = 0xFFFFFFFF;

#if (RTL8821C_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8821C)
		value32 = query_phydm_txbf_capability_8821c(dm);
#endif
#if (RTL8195B_SUPPORT == 1)
	if (dm->support_ic_type == ODM_RTL8195B)
		value32 = query_phydm_txbf_capability_8195b(dm);
#endif
	return value32;
}


 1) {
  color: rgba(72, 72, 72, 0.8);
}

.cg-wrap.orientation-black coords.ranks coord:nth-child(2n),
.cg-wrap.orientation-black coords.files coord:nth-child(2n),
.cg-wrap.orientation-white coords.ranks coord:nth-child(2n + 1),
.cg-wrap.orientation-white coords.files coord:nth-child(2n + 1) {
  color: rgba(255, 255, 255, 0.8);
}
/*
 * JsonTree.js Library v4.7.1
 *
 * Copyright 2025 Bunoon
 * Released under the MIT License
 */
:root {
    --json-tree-js-default-font:
        system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', 'Noto Sans', 'Liberation Sans', Arial, sans-serif,
        'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
    --json-tree-js-bold-weight-light: 300;
    --json-tree-js-bold-weight-medium: 600;
    --json-tree-js-bold-weight-heavy: 900;
    --json-tree-js-title-bold-weight: var(--json-tree-js-bold-weight-heavy);
    --json-tree-js-color-dark-black: #1c2128;
    --json-tree-js-color-black: #3b3a3a;
    --json-tree-js-color-snow-white: #f5f5f5;
    --json-tree-js-color-light-gray: #bbbbbb;
    --json-tree-js-color-array: #f28c28;
    --json-tree-js-color-object: var(--json-tree-js-color-snow-white);
    --json-tree-js-color-map: #bdb5d5;
    --json-tree-js-color-set: #ffd700;
    --json-tree-js-color-boolean: #ff0000;
    --json-tree-js-color-float: #e3c868;
    --json-tree-js-color-number: #666bf9;
    --json-tree-js-color-bigint: #6495ed;
    --json-tree-js-color-string: #78b13f;
    --json-tree-js-color-date: #a656f5;
    --json-tree-js-color-null: var(--json-tree-js-color-light-gray);
    --json-tree-js-color-undefined: var(--json-tree-js-color-null);
    --json-tree-js-color-symbol: #daa06d;
    --json-tree-js-color-function: var(--json-tree-js-color-null);
    --json-tree-js-color-lambda: var(--json-tree-js-color-function);
    --json-tree-js-color-unknown: var(--json-tree-js-color-null);
    --json-tree-js-color-guid: #c45600;
    --json-tree-js-color-regexp: #aa336a;
    --json-tree-js-color-url: #00ffff;
    --json-tree-js-color-email: #fa8072;
    --json-tree-js-color-link: #89cff0;
    --json-tree-js-color-html: #ff00ff;
    --json-tree-js-editable-text-color: var(--json-tree-js-color-snow-white);
    --json-tree-js-editable-background-color: #2d333b;
    --json-tree-js-editable-border-color: #454c56;
    --json-tree-js-highlight-selected-color: #353e4b;
    --json-tree-js-highlight-compare-color: #4a5768;
    --json-tree-js-highlight-selected-border-color: #97a4b5;
    --json-tree-js-drag-and-drop-color: #f5f5f5;
    --json-tree-js-to


width : size.height;
      final height =
          _orientation == Orientation.portrait ? size.height : size.width;

      PreviewWidgetsFlutterBinding.previewWindow.physicalSize = Size(
        width * device.pixelRatio,
        height * device.pixelRatio,
      );

      // Padding
      final padding = ((_orientation == Orientation.portrait
                  ? device.safeAreas
                  : device.rotatedSafeAreas) ??
              device.safeAreas) *
          device.pixelRatio;
      final windowPadding = PreviewWindowPadding.fromEdgeInsets(padding);
      PreviewWidgetsFlutterBinding.previewWindow.devicePixelRatio =
          device.pixelRatio;
      PreviewWidgetsFlutterBinding.previewWindow.padding = windowPadding;
      PreviewWidgetsFlutterBinding.previewWindow.viewPadding = windowPadding;
    } else {
      PreviewWidgetsFlutterBinding.previewWindow.physicalSize = null;
      PreviewWidgetsFlutterBinding.previewWindow.devicePixelRatio = null;
      PreviewWidgetsFlutterBinding.previewWindow.padding = null;
      PreviewWidgetsFlutterBinding.previewWindow.viewPadding = null;
    }
    reassembleApplication();
  }

  @override
  ui.SingletonFlutterWindow get window =>
      _previewWindow ??= PreviewWindow(super.window);

  @override
  void initRenderView() {
    super.initRenderView();
    renderView = PreviewRenderView(
      configuration: createViewConfiguration(),
      window: window,
    );
    renderView.prepareInitialFrame();
  }

  @override
  void handlePointerEvent(PointerEvent event) {
    final device = this.device;
    if (device != null) {
      final screenArea =
          PreviewTransforms.screenDestinationRect(device, orientation);
      if (screenArea.contains(event.position)) {
        final relativePosition = Offset(
          (event.position.dx - screenArea.left) / screenArea.width,
          (event.position.dy - screenArea.top) / screenArea.height,
        );

        final relativeDelta = Offset(
          event.delta.dx / screenArea.width,
          event.delta.dy / screenArea.height,
        );

        final screenSize = orientation == Orientation.portrait
            ? device.screenSize
            : device.screenSize.flipped;

        event = event.copyWith(
          position: Offset(
            relativePosition.dx * screenSize.width,
            relativePosition.dy * screenSize.height,
          ),
          delta: Offset(
            relativeDelta.dx * screenSize.width,
            relativeDelta.dy * screenSize.height,
          ),
        );
      }
    }

    super.handlePointerEvent(event);
  }

  @override
  void handleMetricsChanged() {
    super.handleMetricsChanged();
    reassembleApplication();
  }

  @override
  void handleLocaleChanged() {
    super.handleLocaleChanged();
    reassembleApplication();
  }
}
import 'package:isolator/src/backend/backend.dart';
import 'package:isolator/src/backend/backend_argument.dart';

import '../template/mock_data.dart';
import 'event.dart';

class Back extends Backend {
  Back({
    required BackendArgument<void> argument,
  }) : super(argument: argument);

  void _doNothing({required Event event, void data}) {
    // DO NOTHING
  }

  int _computeInt({required Event event, void data}) {
    return 42;
  }

  int _throwError({required Event event, void data}) {
    throw Exception('Exception 42');
  }

  List<MockData> _computeList({required Event event, void data}) {
    final List<MockData> response = [];
    for (int i = 0; i < 100; i++) {
      response.add(
        MockDat


: Path,
    starPathBounds: Rect,
    scaleFactor: Float
) {
    Canvas(modifier = Modifier.size(24.dp)) {
        val canvasSize = size
        scale(scale = scaleFactor) {
            val pathWidth = starPathBounds.width
            val pathHeight = starPathBounds.height
            val left = (canvasSize.width / 2f) - (pathWidth / 1.7f)
            val top = (canvasSize.height / 2f) - (pathHeight / 1.7f)

            translate(left = left, top = top) {
                drawPath(
                    path = starPath,
                    color = LightGray.copy(alpha = 0.5f)
                )
                clipPath(path = starPath) {
                    drawRect(
                        color = StarColor,
                        size = Size(
                            width = starPathBounds.maxDimension / 1.7f,
                            height = starPathBounds.maxDimension * scaleFactor
                        )
                    )
                }
            }
        }
    }
}

@Composable
fun EmptyStar(
    starPath: Path,
    starPathBounds: Rect,
    scaleFactor: Float
) {
    Canvas(modifier = Modifier.size(24.dp)) {
        val canvasSize = size
        scale(scale = scaleFactor) {
            val pathWidth = starPathBounds.width
            val pathHeight = starPathBounds.height
            val left = (canvasSize.width / 2f) - (pathWidth / 1.7f)
            val top = (canvasSize.height / 2f) - (pathHeight / 1.7f)

            translate(left = left, top = top) {
                drawPath(
                    path = starPath,
                    color = LightGray.copy(alpha = 0.5f)
                )
            }
        }
    }
}

@Composable
fun calculateStars(
    rating : Double
) : Map<String, Int> {
    val maxStars by remember { mutableStateOf(5) }
    var filledStars by remember { mutableStateOf(0) }
    var halfFilledStars by remember { mutableStateOf(0) }
    var emptyStars by remember { mutableStateOf(0) }

    LaunchedEffect(key1 = rating) {

        val (firstNumber, lastNumber) = rating.toString()
            .split(".")
            .map { it.toInt() }

        if (firstNumber in 0..5 && lastNumber in 0..9) {
            filledStars = firstNumber
            if (lastNumber in 1..5) {
                halfFilledStars++
            }
            if (lastNumber in 6..9) {
                filledStars++
            }
            if (firstNumber == 5 && lastNumber > 0) {
                emptyStars = 5
                filledStars = 0
                halfFilledStars = 0
            }
        } else {
            Log.d("RatingWidget", "Invalid rating number.")
        }
    }

    emptyStars = maxStars - (filledStars + halfFilledStars)
    return mapOf(
        "filledStars" to filledStars,
        "halfFilledStars" to halfFilledStars,
        "emptyStars" to emptyStars
    )

    }

@Composable
@Preview(showBackground = true)
fun FilledStarPreview() {
    val starPathString = stringResource(id = R.string.star_path)
    val starPath = remember {
        PathParser().parsePathString(pathData = starPathString).toPath()
    }
    val starPathBounds = remember {
        starPath.getBo


                  <FormattedMessage {...messages.modalPrompt} />

                <SignInButton {...this.props} />

          </Modal>

    );
  }
}

export default SignIn;
import { Component } from "react";
import { FormattedMessage } from "react-intl";
import { Link } from "react-router-dom";
import messages from "./Messages";

class Instructions extends Component {
  render() {
    return (

              <FormattedMessage {...messages.instructionsHeader} />

              <FormattedMessage {...messages.instructionsFirstParagraph} />

              <FormattedMessage {...messages.instructionsSecondParagraph} />

            <Link to="/browse/challenges" className="mr-button mr-mt-8 mr-w-2/3">
              <FormattedMessage {...messages.instructionsFindChallengesLabel} />
            </Link>

    );
  }
}

export default Instructions;
import { defineMessages } from "react-intl";

/**
 * Internationalized messages for use with Home page and sub-components
 */
export default defineMessages({
  headline: {
    id: "Home.Hero.headline",
    defaultMessage: "Be an instant contributor to the world’s maps",
  },

  getStartedLabel: {
    id: "Home.Hero.controls.getStarted.label",
    defaultMessage: "Get Started",
  },

  introHeader: {
    id: "Home.Intro.header",
    defaultMessage: "Thousands of people just like you edit OpenStreetMap every day",
  },

  introDetail: {
    id: "Home.Intro.detail",
    defaultMessage:
      "That’s why OSM is the most up to date and complete map you can " +
      "find anywhere, and it’s why Facebook, Snapchat and many others use " +
      "OSM to power their own maps. If you look at the richness of " +
      "OpenStreetMap data, you may wonder what’s left to map. That is " +
      "where MapRoulette comes in! Just log in with your OpenStreetMap " +
      "account, find a task that is right for you, and be an instant " +
      "contributor to the world’s maps!",
  },

  introFirstBullet: {
    id: "Home.Intro.firstBullet",
    defaultMessage: "Work at your own level, from novice to expert",
  },

  introSecondBullet: {
    id: "Home.Intro.secondBullet",
    defaultMessage: "Find mapping tasks that are important to you",
  },

  introThirdBullet: