/* Metro module 6626; source: modules/markup/MarkupLinkRule.tsx; dependencies: [57, 1393, 6627, 4598, 1360, 4096, 1471, 6628, 3855, 22, 2] */ function _fun52455(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#52455, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6804:6, offset: 0x0132bc96, size: 1130 bytes, params: 8, frame: 24 const env0_0 = require; const _arrayLikeToArray_52458 = function(a0, a1) { var r0; var r1; var r2; var value3; var length; var value5; var value = undefined; var value2 = value == null; reducibleJoin2: while (true) { if (value2) { r0 = value2; break reducibleJoin2; } value3 = value > a0.length; r0 = value3; break reducibleJoin2; } reducibleJoin4: while (true) { if (r0) { length = a0.length; r1 = length; break reducibleJoin4; } r1 = value; break reducibleJoin4; } value = (0, global.Array)(r1); var value4 = 0; if (value4 < r1) { r2 = value4; reducibleLoop5: while (true) { value[r2] = a0[r2]; value5 = typeof r2 === 'bigint' ? r2 + 1n : +r2 + 1; if (value5 < r1) { r2 = value5; continue reducibleLoop5; } break reducibleLoop5; } } return value; }; const closure = isSuspiciousUrl; const closure2 = punycodeLink; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); const env0_3 = importDefault(57) /* metro dependency 57 */; let value = importDefault(1393) /* metro dependency 1393 */; value = new value({max: 50}); const AST_KEY = (require(4598) /* metro dependency 4598: MarkupTypes */).AST_KEY; let TEXT = AST_KEY.TEXT; let UNDERLINE = AST_KEY.UNDERLINE; let STRONG = AST_KEY.STRONG; let ITALICS = AST_KEY.ITALICS; let STRIKETHROUGH = AST_KEY.STRIKETHROUGH; let INLINE_CODE = AST_KEY.INLINE_CODE; let SPOILER = AST_KEY.SPOILER; let LINE_BREAK = AST_KEY.LINE_BREAK; let TIMESTAMP = AST_KEY.TIMESTAMP; const items2 = []; value = arraySpread(items2, [TEXT, UNDERLINE, STRONG, ITALICS, STRIKETHROUGH, INLINE_CODE, SPOILER, LINE_BREAK, TIMESTAMP], 0, 0); let EMOJI = AST_KEY.EMOJI; items2[value] = EMOJI; value += 1; let CUSTOM_EMOJI = AST_KEY.CUSTOM_EMOJI; items2[value] = CUSTOM_EMOJI; let LIST = AST_KEY.LIST; const items3 = [LIST]; let HEADING = AST_KEY.HEADING; items3[1] = HEADING; let BLOCK_QUOTE = AST_KEY.BLOCK_QUOTE; items3[2] = BLOCK_QUOTE; let SUBTEXT = AST_KEY.SUBTEXT; items3[3] = SUBTEXT; TEXT = AST_KEY.TEXT; const env0_9 = [TEXT]; UNDERLINE = AST_KEY.UNDERLINE; const items5 = [UNDERLINE]; STRONG = AST_KEY.STRONG; items5[1] = STRONG; ITALICS = AST_KEY.ITALICS; items5[2] = ITALICS; STRIKETHROUGH = AST_KEY.STRIKETHROUGH; items5[3] = STRIKETHROUGH; INLINE_CODE = AST_KEY.INLINE_CODE; items5[4] = INLINE_CODE; SPOILER = AST_KEY.SPOILER; items5[5] = SPOILER; LINE_BREAK = AST_KEY.LINE_BREAK; items5[6] = LINE_BREAK; TIMESTAMP = AST_KEY.TIMESTAMP; items5[7] = TIMESTAMP; EMOJI = AST_KEY.EMOJI; items5[8] = EMOJI; CUSTOM_EMOJI = AST_KEY.CUSTOM_EMOJI; items5[9] = CUSTOM_EMOJI; LIST = AST_KEY.LIST; items5[10] = LIST; HEADING = AST_KEY.HEADING; items5[11] = HEADING; BLOCK_QUOTE = AST_KEY.BLOCK_QUOTE; items5[12] = BLOCK_QUOTE; SUBTEXT = AST_KEY.SUBTEXT; items5[13] = SUBTEXT; const object = {}; copyDataProperties(object, (importDefault(3855) /* metro dependency 3855 */).defaultRules.link, 0); object['match'] = match_52464; object['parse'] = parse_52465; (require(2) /* metro dependency 2 */).fileFinishedImporting('modules/markup/MarkupLinkRule.tsx'); exports.default = object; exports.ALLOWED_PROTOCOLS = ['http:', 'https:', 'discord:', 'tel:', 'sms:', 'mailto:']; exports.isSuspiciousUrl = closure; exports.punycodeLink = closure2; } function _createForOfIteratorHelperLoose_52456(a0, a1) { // fn#52456, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6804:112, offset: 0x0132c100, size: 370 bytes, params: 3, frame: 20 var r6; var r9; var r5; var value3; var regexp; const env0_0 = a0; const Symbol = global.Symbol; let value = typeof Symbol !== 'undefined'; let r1 = value && a0[global.Symbol.iterator]; r1 = !r1 ? a0['@@iterator'] : r1; if (r1) { value = r1.call(a0); return value.next.bind(value); } const Array = global.Array; if (Array.isArray(a0)) { if (r1) { } return _fun52457; } value = undefined; if (a0) { if (typeof a0 === 'string') { value = _arrayLikeToArray_52458(a0, value); r5 = value; } else { value3 = ({}).toString.call(a0).slice(8, -1); r6 = value3 === 'Object' && a0.constructor; r9 = r6 ? a0.constructor.name : value3; if (r9 === 'Map') { r6 = global.Array.from(a0); } else if (r9 === 'Set') { r6 = global.Array.from(a0); } else if (r9 === 'Arguments') { value = _arrayLikeToArray_52458(a0, value); r6 = value; } else { regexp = RegExp('^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$', ''); if (regexp.test(r9)) { value = _arrayLikeToArray_52458(a0, value); r6 = value; } else { r6 = value; } } r5 = r6; } } else { r5 = value; } if (r5) { if (r5) { } return _fun52457; } const TypeError = global.TypeError; throw new TypeError('Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'); } function sanitizeWithCache(a0) { // fn#52459, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6804:1052, offset: 0x0132c272, size: 110 bytes, params: 2, frame: 19 const value2 = env0_4.get(a0); if (value2 != null) { return value2; } const value3 = (require(6627) /* metro dependency 6627: UnicodeSanitizationUtils */).sanitizeWhitespace(a0); const object2 = {whitespaceSanitized: value3}; object2.fullySanitized = (require(6627) /* metro dependency 6627: UnicodeSanitizationUtils */).sanitizeUnicodeConfusables(value3); env0_4.set(a0, object2); return object2; } function validateContentTypes(a0, a1) { // fn#52460, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6804:2127, offset: 0x0132c2e0, size: 274 bytes, params: 3, frame: 25 var r10; var r0; var r3; var items2; var value5; var includes; var type; var AST_KEY; var INLINE_CODE; var validateContentTypesBinding; var validationChildContent; var content; var value6; const value = a0; const value2 = a2; reducibleJoin2: while (true) { if (value2 !== undefined) { r10 = value2; break reducibleJoin2; } r10 = []; break reducibleJoin2; } let Array = global.Array; let isArray = Array.isArray; reducibleJoin4: while (true) { if (Reflect.apply(isArray, Array, [value])) { r0 = value; break reducibleJoin4; } r0 = [value]; break reducibleJoin4; } const value3 = _createForOfIteratorHelperLoose_52456(r0); const value4 = value3(); let done = value4.done; if (!done) { r3 = value4; reducibleLoop5: while (true) { value5 = r3.value; if (value5 === undefined) { return null; } includes = a1.includes; type = value5.type; if (!Reflect.apply(includes, a1, [type])) { return null; } type = value5.type; AST_KEY = (require(4598) /* metro dependency 4598: MarkupTypes */).AST_KEY; INLINE_CODE = AST_KEY.INLINE_CODE; if (type === INLINE_CODE) { items2 = []; arraySpread(items2, r10, arraySpread(items2, a1, 0, items2), items2); validateContentTypesBinding = validateContentTypes; validationChildContent = value5.validationChildContent; reducibleJoin9: while (true) { if (validateContentTypesBinding(validationChildContent, items2) == null) { return null; } break reducibleJoin9; } } Array = global.Array; isArray = Array.isArray; content = value5.content; if (Reflect.apply(isArray, Array, [content])) { validateContentTypesBinding = validateContentTypes; content = value5.content; reducibleJoin11: while (true) { if (validateContentTypesBinding(content, a1) == null) { return null; } break reducibleJoin11; } } value6 = value3(); done = value6.done; if (done) { return r0; } r3 = value6; continue reducibleLoop5; } } return r0; } function getRawText(a0) { // fn#52461, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6804:2537, offset: 0x0132c3f2, size: 770 bytes, params: 2, frame: 26 var r2; var r3; var r14; var r0; var value5; var type; const AST_KEY = (require(4598) /* metro dependency 4598: MarkupTypes */).AST_KEY; var TEXT; var INLINE_CODE; var CUSTOM_EMOJI; var EMOJI; var LINE_BREAK; var STRONG; var ITALICS; var UNDERLINE; var STRIKETHROUGH; var SPOILER; var TIMESTAMP; var BLOCK_QUOTE; var LIST; var HEADING; var SUBTEXT; var moduleValue; var assertNever; var HermesInternal; var concat; var value6; var value7; var getRawTextBinding; var content; var value8; var value9; var surrogate; var value10; var name; var value11; var value12; var value13; const value2 = _createForOfIteratorHelperLoose_52456(a0); const value3 = value2(); let done = value3.done; const value4 = ''; if (done) { r0 = value4; } else { r2 = value4; r3 = value3; reducibleLoop1: while (true) { value5 = r3.value; type = value5.type; TEXT = AST_KEY.TEXT; reducibleJoin24: while (true) { reducibleJoin23: while (true) { if (TEXT === type) { break reducibleJoin23; } INLINE_CODE = AST_KEY.INLINE_CODE; if (INLINE_CODE === type) { break reducibleJoin23; } CUSTOM_EMOJI = AST_KEY.CUSTOM_EMOJI; if (CUSTOM_EMOJI === type) { name = value5.name; value11 = r2 + name; r14 = value11; break reducibleJoin24; } EMOJI = AST_KEY.EMOJI; if (EMOJI === type) { surrogate = value5.surrogate; value10 = r2 + surrogate; r14 = value10; break reducibleJoin24; } LINE_BREAK = AST_KEY.LINE_BREAK; if (LINE_BREAK === type) { value9 = r2 + '\n'; r14 = value9; break reducibleJoin24; } STRONG = AST_KEY.STRONG; if (STRONG !== type) { ITALICS = AST_KEY.ITALICS; if (ITALICS !== type) { UNDERLINE = AST_KEY.UNDERLINE; if (UNDERLINE !== type) { STRIKETHROUGH = AST_KEY.STRIKETHROUGH; if (STRIKETHROUGH !== type) { SPOILER = AST_KEY.SPOILER; if (SPOILER !== type) { TIMESTAMP = AST_KEY.TIMESTAMP; if (TIMESTAMP === type) { value7 = r2 + ''; r14 = value7; break reducibleJoin24; } BLOCK_QUOTE = AST_KEY.BLOCK_QUOTE; if (BLOCK_QUOTE !== type) { LIST = AST_KEY.LIST; if (LIST !== type) { HEADING = AST_KEY.HEADING; if (HEADING !== type) { SUBTEXT = AST_KEY.SUBTEXT; if (SUBTEXT !== type) { moduleValue = require(1360) /* metro dependency 1360: GlobalUtils */; assertNever = moduleValue.assertNever; Reflect.apply(assertNever, moduleValue, [value5.type]); r14 = r2; break reducibleJoin24; } } } } type = value5.type; HermesInternal = global.HermesInternal; concat = HermesInternal.concat; value6 = r2 + ('<' + type + 'Content>'); r14 = value6; break reducibleJoin24; } } } } } getRawTextBinding = getRawText; content = value5.content; value8 = r2 + getRawTextBinding(content); r14 = value8; break reducibleJoin24; } content = value5.content; value12 = r2 + content; r14 = value12; break reducibleJoin24; } value13 = value2(); done = value13.done; if (done) { r0 = r14; break reducibleLoop1; } r2 = r14; r3 = value13; continue reducibleLoop1; } } return r0; } function isSuspiciousUrl(a0) { // fn#52462, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6804:3325, offset: 0x0132c6f4, size: 248 bytes, params: 2, frame: 15 var r1; var r0; var value5; var value; const findCodedLinksModule = require(4096) /* metro dependency 4096: findCodedLinks */; if (findCodedLinksModule.isSuspiciousCodedLink(a0)) { return true; } if (sanitizeWithCache(a0).whitespaceSanitized !== a0) { return true; } const value2 = (importDefault(1471) /* metro dependency 1471: URLUtils */).toURLSafe(a0); if (value2 == null) { return true; } if (value2.protocol !== 'http:') { if (value2.protocol !== 'https:') { return false; } } const value3 = a0.split('/'); const value4 = value3.length < 3; if (value4) { r0 = value4; } else { value5 = value3[1] !== ''; if (value5) { r1 = value5; } else { value = importDefault(1471) /* metro dependency 1471: URLUtils */; value = value.safeDecodeURIComponent(value3[2]); value = value !== value3[2]; r1 = value; } r0 = r1; } return r0; } function punycodeLink(a0) { // fn#52463, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6804:3656, offset: 0x0132c7ec, size: 446 bytes, params: 2, frame: 20 var r11; var isSuspiciousUrlBinding; var isSuspiciousUrl2; var URL; var prototype; var uRL; var value3; var protocol; var value4; var value5; var binding; var includes; var toLowerCase; var value6; var value7; var Error; var error; var value9; var value10; var hostname; var value11; var length; var value12; var property; var defaultImport; var toASCII; var value13; var value14; var safelyMakeUrlHumanReadable; var object2; var JSON; var stringify; var value; try { isSuspiciousUrlBinding = isSuspiciousUrl; } catch (error) { return null; } try { isSuspiciousUrl2 = isSuspiciousUrlBinding(a0); } catch (error) { return null; } if (isSuspiciousUrl2) { try { Error = global.Error; } catch (error) { return null; } try { JSON = global.JSON; } catch (error) { return null; } try { stringify = JSON.stringify; } catch (error) { return null; } try { value = Reflect.apply(stringify, JSON, [a0]); } catch (error) { return null; } try { value = 'Rejected due to suspicious characters in URL: ' + value; } catch (error) { return null; } try { prototype = Error.prototype; } catch (error) { return null; } try { } catch (error) { return null; } try { error = new Error(); } catch (error) { return null; } try { value = error instanceof Object ? error : undefined; } catch (error) { return null; } try { throw value; } catch (error) { return null; } } else { try { URL = global.URL; } catch (error) { return null; } try { prototype = URL.prototype; } catch (error) { return null; } try { } catch (error) { return null; } try { uRL = new URL(a0); } catch (error) { return null; } try { value3 = uRL instanceof Object ? uRL : undefined; } catch (error) { return null; } try { protocol = value3.protocol; } catch (error) { return null; } try { value4 = protocol != null; } catch (error) { return null; } value5 = ''; r11 = value4 ? protocol : value5; try { binding = env0_5; } catch (error) { return null; } try { includes = binding.includes; } catch (error) { return null; } try { toLowerCase = r11.toLowerCase; } catch (error) { return null; } try { value6 = Reflect.apply(toLowerCase, r11, []); } catch (error) { return null; } try { value7 = Reflect.apply(includes, binding, [value6]); } catch (error) { return null; } if (value7) { try { value9 = r11 === 'http:'; } catch (error) { return null; } if (value9) { try { hostname = value3.hostname; } catch (error) { return null; } try { value11 = hostname == null; } catch (error) { return null; } if (value11) { try { Error = global.Error; } catch (error) { return null; } try { prototype = Error.prototype; } catch (error) { return null; } try { } catch (error) { return null; } try { error = new Error('no hostname'); } catch (error) { return null; } try { value = error instanceof Object ? error : value; } catch (error) { return null; } try { throw value; } catch (error) { return null; } } else { try { hostname = value3.hostname; } catch (error) { return null; } try { length = hostname.length; } catch (error) { return null; } try { value12 = length !== 0; } catch (error) { return null; } if (value12) { try { } catch (error) { return null; } try { } catch (error) { return null; } try { property = dependencyMap[7]; } catch (error) { return null; } try { defaultImport = importDefault(property); } catch (error) { return null; } try { toASCII = defaultImport.toASCII; } catch (error) { return null; } try { hostname = value3.hostname; } catch (error) { return null; } try { toLowerCase = hostname.toLowerCase; } catch (error) { return null; } try { value13 = Reflect.apply(toLowerCase, hostname, []); } catch (error) { return null; } try { value14 = Reflect.apply(toASCII, defaultImport, [value13]); } catch (error) { return null; } try { value3.hostname = value14; } catch (error) { return null; } try { } catch (error) { return null; } try { property = dependencyMap[2]; } catch (error) { return null; } try { value = require(property); } catch (error) { return null; } try { safelyMakeUrlHumanReadable = value.safelyMakeUrlHumanReadable; } catch (error) { return null; } try { value = Reflect.apply(safelyMakeUrlHumanReadable, value, [value3]); } catch (error) { return null; } try { value3.username = value5; } catch (error) { return null; } try { value3.password = value5; } catch (error) { return null; } try { object2 = {}; } catch (error) { return null; } try { object2.target = value; } catch (error) { return null; } try { property = dependencyMap[2]; } catch (error) { return null; } try { value = require(property); } catch (error) { return null; } try { safelyMakeUrlHumanReadable = value.safelyMakeUrlHumanReadable; } catch (error) { return null; } try { value = Reflect.apply(safelyMakeUrlHumanReadable, value, [value3]); } catch (error) { return null; } try { object2.displayTarget = value; } catch (error) { return null; } return object2; } try { Error = global.Error; } catch (error) { return null; } try { prototype = Error.prototype; } catch (error) { return null; } try { } catch (error) { return null; } try { error = new Error('no hostname'); } catch (error) { return null; } try { value = error instanceof Object ? error : value; } catch (error) { return null; } try { throw value; } catch (error) { return null; } } } else { try { value10 = r11 !== 'https:'; } catch (error) { return null; } if (value10) { try { } catch (error) { return null; } try { } catch (error) { return null; } try { property = dependencyMap[7]; } catch (error) { return null; } try { defaultImport = importDefault(property); } catch (error) { return null; } try { toASCII = defaultImport.toASCII; } catch (error) { return null; } try { hostname = value3.hostname; } catch (error) { return null; } try { toLowerCase = hostname.toLowerCase; } catch (error) { return null; } try { value13 = Reflect.apply(toLowerCase, hostname, []); } catch (error) { return null; } try { value14 = Reflect.apply(toASCII, defaultImport, [value13]); } catch (error) { return null; } try { value3.hostname = value14; } catch (error) { return null; } try { } catch (error) { return null; } try { property = dependencyMap[2]; } catch (error) { return null; } try { value = require(property); } catch (error) { return null; } try { safelyMakeUrlHumanReadable = value.safelyMakeUrlHumanReadable; } catch (error) { return null; } try { value = Reflect.apply(safelyMakeUrlHumanReadable, value, [value3]); } catch (error) { return null; } try { value3.username = value5; } catch (error) { return null; } try { value3.password = value5; } catch (error) { return null; } try { object2 = {}; } catch (error) { return null; } try { object2.target = value; } catch (error) { return null; } try { property = dependencyMap[2]; } catch (error) { return null; } try { value = require(property); } catch (error) { return null; } try { safelyMakeUrlHumanReadable = value.safelyMakeUrlHumanReadable; } catch (error) { return null; } try { value = Reflect.apply(safelyMakeUrlHumanReadable, value, [value3]); } catch (error) { return null; } try { object2.displayTarget = value; } catch (error) { return null; } return object2; } try { hostname = value3.hostname; } catch (error) { return null; } try { value11 = hostname == null; } catch (error) { return null; } if (value11) { try { Error = global.Error; } catch (error) { return null; } try { prototype = Error.prototype; } catch (error) { return null; } try { } catch (error) { return null; } try { error = new Error('no hostname'); } catch (error) { return null; } try { value = error instanceof Object ? error : value; } catch (error) { return null; } try { throw value; } catch (error) { return null; } } else { try { hostname = value3.hostname; } catch (error) { return null; } try { length = hostname.length; } catch (error) { return null; } try { value12 = length !== 0; } catch (error) { return null; } if (value12) { try { } catch (error) { return null; } try { } catch (error) { return null; } try { property = dependencyMap[7]; } catch (error) { return null; } try { defaultImport = importDefault(property); } catch (error) { return null; } try { toASCII = defaultImport.toASCII; } catch (error) { return null; } try { hostname = value3.hostname; } catch (error) { return null; } try { toLowerCase = hostname.toLowerCase; } catch (error) { return null; } try { value13 = Reflect.apply(toLowerCase, hostname, []); } catch (error) { return null; } try { value14 = Reflect.apply(toASCII, defaultImport, [value13]); } catch (error) { return null; } try { value3.hostname = value14; } catch (error) { return null; } try { } catch (error) { return null; } try { property = dependencyMap[2]; } catch (error) { return null; } try { value = require(property); } catch (error) { return null; } try { safelyMakeUrlHumanReadable = value.safelyMakeUrlHumanReadable; } catch (error) { return null; } try { value = Reflect.apply(safelyMakeUrlHumanReadable, value, [value3]); } catch (error) { return null; } try { value3.username = value5; } catch (error) { return null; } try { value3.password = value5; } catch (error) { return null; } try { object2 = {}; } catch (error) { return null; } try { object2.target = value; } catch (error) { return null; } try { property = dependencyMap[2]; } catch (error) { return null; } try { value = require(property); } catch (error) { return null; } try { safelyMakeUrlHumanReadable = value.safelyMakeUrlHumanReadable; } catch (error) { return null; } try { value = Reflect.apply(safelyMakeUrlHumanReadable, value, [value3]); } catch (error) { return null; } try { object2.displayTarget = value; } catch (error) { return null; } return object2; } try { Error = global.Error; } catch (error) { return null; } try { prototype = Error.prototype; } catch (error) { return null; } try { } catch (error) { return null; } try { error = new Error('no hostname'); } catch (error) { return null; } try { value = error instanceof Object ? error : value; } catch (error) { return null; } try { throw value; } catch (error) { return null; } } } } else { try { Error = global.Error; } catch (error) { return null; } try { value = 'Provided protocol is not allowed: ' + r11; } catch (error) { return null; } try { prototype = Error.prototype; } catch (error) { return null; } try { } catch (error) { return null; } try { error = new Error(); } catch (error) { return null; } try { value = error instanceof Object ? error : undefined; } catch (error) { return null; } try { throw value; } catch (error) { return null; } } } } function match_52464(a0, a1, a2) { // fn#52464, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6804:4291, offset: 0x0132c9aa, size: 193 bytes, params: 4, frame: 20 var r1; var r2; var r0; var r9; var value; var length; var property; var value2; var value3; var value4; var value5; var value6; var link; if (a1.allowLinks) { value = a0.indexOf(']('); if (value === -1) { return null; } length = a0.length; value = 0; if (value < length) { r1 = value; r2 = value; reducibleLoop4: while (true) { property = a0[r1]; if (property === '[') { value5 = typeof r2 === 'bigint' ? r2 + 1n : +r2 + 1; reducibleJoin10: while (true) { if (value5 > 10) { return null; } r9 = value5; break reducibleJoin10; } } else { value2 = property === ']'; reducibleJoin7: while (true) { if (value2) { value3 = r2 > value; r0 = value3; break reducibleJoin7; } r0 = value2; break reducibleJoin7; } reducibleJoin10: while (true) { if (r0) { value4 = typeof r2 === 'bigint' ? r2 - 1n : +r2 - 1; r9 = value4; break reducibleJoin10; } r9 = r2; break reducibleJoin10; } } value6 = typeof r1 === 'bigint' ? r1 + 1n : +r1 + 1; length = a0.length; if (!(value6 < length)) { value = environment; link = (importDefault(3855) /* metro dependency 3855 */).defaultRules.link; return link.match(a0, a1, a2); } r1 = value6; r2 = r9; continue reducibleLoop4; } } link = (importDefault(3855) /* metro dependency 3855 */).defaultRules.link; return link.match(a0, a1, a2); } return null; } function parse_52465(a0, a1, a2) { // fn#52465, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6804:4516, offset: 0x0132ca6b, size: 637 bytes, params: 4, frame: 31 var value; const value2 = env0_3(a0, 4); const env0_0 = value2[0]; const property = value2[1]; const property2 = value2[2]; const property3 = value2[3]; const closure = renderIndividualParts; if (isSuspiciousUrl(property2)) { return closure(); } const sanitizeWithCacheBinding = sanitizeWithCache; const value3 = sanitizeWithCacheBinding(property2); const value4 = sanitizeWithCacheBinding(property); const value6 = sanitizeWithCacheBinding(property3 ?? ''); const whitespaceSanitized = value3.whitespaceSanitized; const fullySanitized = value4.fullySanitized; const fullySanitized2 = value6.fullySanitized; const value7 = fullySanitized.trim(); if (whitespaceSanitized.trim().length === 0) { return closure(); } if (value7.length === 0) { return closure(); } const punycodeLinkBinding = punycodeLink; const defaultImport = importDefault(3855) /* metro dependency 3855 */; const value8 = punycodeLinkBinding(defaultImport.unescapeUrl(property2)); const r6 = (importDefault(4096) /* metro dependency 4096: findCodedLinks */)(property).length > 0 || (importDefault(4096) /* metro dependency 4096: findCodedLinks */)(property3).length > 0; if (value8 == null) { return closure(); } if (r6) { return closure(); } const object2 = {}; copyDataProperties(object2, a2, undefined); object2['allowEscape'] = false; object2['parseInlineCodeChildContent'] = true; const r12 = a2.allowEmojiLinks ? env0_7 : env0_6; const items3 = []; arraySpread(items3, env0_8, arraySpread(items3, r12, 0, property2), property2); const binding = env0_9; const items2 = []; arraySpread(items2, env0_10, arraySpread(items2, binding, 0, property2), property2); const validateContentTypesBinding = validateContentTypes; const value13 = a1(fullySanitized, object2); const AST_KEY = (require(4598) /* metro dependency 4598: MarkupTypes */).AST_KEY; const EMOJI = AST_KEY.EMOJI; const value14 = validateContentTypesBinding(value13, items3, [EMOJI]); const value15 = validateContentTypesBinding(a1(fullySanitized2, object2), items2); if (value14 == null) { return closure(); } if (value15 == null) { return closure(); } const rawText = getRawText(value14); if (rawText.trim().length === 0) { return closure(); } value = Reflect.apply((importDefault(22) /* metro dependency 22 */).pick, value, [a1.rules, r12]); value = defaultImport.parserFor(value); value = value(value4.whitespaceSanitized, object2); return {content: value, target: value8.target, title: value6.whitespaceSanitized}; } function renderIndividualParts() { // fn#52466, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:6804:4592, owner: parse_52465.renderIndividualParts, offset: 0x0132cce8, size: 56 bytes, params: 1, frame: 12 const AST_KEY = (require(4598) /* metro dependency 4598: MarkupTypes */).AST_KEY; const TEXT = AST_KEY.TEXT; return {type: TEXT, content: env0_0}; }