-module(packkit@internal@brotli_transform). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/packkit/internal/brotli_transform.gleam"). -export([prefix_suffix_offset/1, prefix_id_of/1, suffix_id_of/1, op_of/1, apply/2]). -export_type([op/0]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. ?MODULEDOC(false). -type op() :: identity | {omit_last, integer()} | {omit_first, integer()} | uppercase_first | uppercase_all. -file("src/packkit/internal/brotli_transform.gleam", 243). ?DOC(false). -spec prefix_suffix_offset(integer()) -> integer(). prefix_suffix_offset(Id) -> case Id of 0 -> 0; 1 -> 2; 2 -> 5; 3 -> 14; 4 -> 19; 5 -> 22; 6 -> 24; 7 -> 30; 8 -> 35; 9 -> 37; 10 -> 42; 11 -> 45; 12 -> 47; 13 -> 50; 14 -> 52; 15 -> 58; 16 -> 62; 17 -> 69; 18 -> 71; 19 -> 78; 20 -> 85; 21 -> 90; 22 -> 92; 23 -> 99; 24 -> 104; 25 -> 109; 26 -> 114; 27 -> 119; 28 -> 122; 29 -> 124; 30 -> 128; 31 -> 131; 32 -> 136; 33 -> 140; 34 -> 142; 35 -> 145; 36 -> 151; 37 -> 159; 38 -> 165; 39 -> 169; 40 -> 173; 41 -> 178; 42 -> 183; 43 -> 189; 44 -> 194; 45 -> 199; 46 -> 202; 47 -> 207; 48 -> 213; 49 -> 216; _ -> 0 end. -file("src/packkit/internal/brotli_transform.gleam", 307). ?DOC(false). -spec prefix_id_of(integer()) -> integer(). prefix_id_of(Idx) -> case Idx of 0 -> 49; 1 -> 49; 2 -> 0; 3 -> 49; 4 -> 49; 5 -> 49; 6 -> 0; 7 -> 4; 8 -> 49; 9 -> 49; 10 -> 49; 11 -> 49; 12 -> 49; 13 -> 1; 14 -> 49; 15 -> 0; 16 -> 49; 17 -> 49; 18 -> 48; 19 -> 49; 20 -> 49; 21 -> 49; 22 -> 49; 23 -> 49; 24 -> 49; 25 -> 49; 26 -> 49; 27 -> 49; 28 -> 49; 29 -> 49; 30 -> 0; 31 -> 49; 32 -> 5; 33 -> 0; 34 -> 49; 35 -> 49; 36 -> 49; 37 -> 49; 38 -> 49; 39 -> 49; 40 -> 49; 41 -> 47; 42 -> 49; 43 -> 49; 44 -> 49; 45 -> 49; 46 -> 49; 47 -> 49; 48 -> 49; 49 -> 49; 50 -> 49; 51 -> 49; 52 -> 0; 53 -> 49; 54 -> 49; 55 -> 49; 56 -> 49; 57 -> 49; 58 -> 49; 59 -> 49; 60 -> 49; 61 -> 49; 62 -> 47; 63 -> 49; 64 -> 49; 65 -> 0; 66 -> 49; 67 -> 5; 68 -> 49; 69 -> 49; 70 -> 49; 71 -> 0; 72 -> 35; 73 -> 47; 74 -> 49; 75 -> 49; 76 -> 49; 77 -> 5; 78 -> 49; 79 -> 49; 80 -> 49; 81 -> 0; 82 -> 49; 83 -> 0; 84 -> 49; 85 -> 0; 86 -> 49; 87 -> 49; 88 -> 49; 89 -> 0; 90 -> 49; 91 -> 0; 92 -> 49; 93 -> 49; 94 -> 49; 95 -> 49; 96 -> 0; 97 -> 49; 98 -> 0; 99 -> 49; 100 -> 49; 101 -> 49; 102 -> 45; 103 -> 0; 104 -> 49; 105 -> 49; 106 -> 49; 107 -> 49; 108 -> 49; 109 -> 0; 110 -> 0; 111 -> 0; 112 -> 49; 113 -> 49; 114 -> 49; 115 -> 0; 116 -> 49; 117 -> 0; 118 -> 0; 119 -> 0; 120 -> 0; _ -> 49 end. -file("src/packkit/internal/brotli_transform.gleam", 434). ?DOC(false). -spec suffix_id_of(integer()) -> integer(). suffix_id_of(Idx) -> case Idx of 0 -> 49; 1 -> 0; 2 -> 0; 3 -> 49; 4 -> 0; 5 -> 47; 6 -> 49; 7 -> 0; 8 -> 3; 9 -> 49; 10 -> 6; 11 -> 49; 12 -> 49; 13 -> 0; 14 -> 1; 15 -> 0; 16 -> 7; 17 -> 9; 18 -> 0; 19 -> 8; 20 -> 5; 21 -> 10; 22 -> 11; 23 -> 49; 24 -> 13; 25 -> 14; 26 -> 49; 27 -> 49; 28 -> 15; 29 -> 16; 30 -> 49; 31 -> 12; 32 -> 49; 33 -> 1; 34 -> 49; 35 -> 18; 36 -> 17; 37 -> 19; 38 -> 20; 39 -> 49; 40 -> 49; 41 -> 49; 42 -> 49; 43 -> 22; 44 -> 49; 45 -> 23; 46 -> 24; 47 -> 25; 48 -> 49; 49 -> 26; 50 -> 27; 51 -> 28; 52 -> 12; 53 -> 29; 54 -> 49; 55 -> 49; 56 -> 49; 57 -> 21; 58 -> 1; 59 -> 49; 60 -> 31; 61 -> 32; 62 -> 3; 63 -> 49; 64 -> 49; 65 -> 1; 66 -> 8; 67 -> 21; 68 -> 0; 69 -> 10; 70 -> 30; 71 -> 5; 72 -> 49; 73 -> 2; 74 -> 17; 75 -> 36; 76 -> 33; 77 -> 0; 78 -> 21; 79 -> 5; 80 -> 37; 81 -> 30; 82 -> 38; 83 -> 0; 84 -> 39; 85 -> 49; 86 -> 34; 87 -> 8; 88 -> 12; 89 -> 21; 90 -> 40; 91 -> 12; 92 -> 41; 93 -> 42; 94 -> 17; 95 -> 43; 96 -> 5; 97 -> 10; 98 -> 34; 99 -> 33; 100 -> 44; 101 -> 5; 102 -> 49; 103 -> 33; 104 -> 30; 105 -> 30; 106 -> 46; 107 -> 1; 108 -> 34; 109 -> 33; 110 -> 30; 111 -> 1; 112 -> 33; 113 -> 21; 114 -> 12; 115 -> 5; 116 -> 34; 117 -> 12; 118 -> 30; 119 -> 34; 120 -> 34; _ -> 49 end. -file("src/packkit/internal/brotli_transform.gleam", 561). ?DOC(false). -spec op_of(integer()) -> op(). op_of(Idx) -> case Idx of 0 -> identity; 1 -> identity; 2 -> identity; 3 -> {omit_first, 1}; 4 -> uppercase_first; 5 -> identity; 6 -> identity; 7 -> identity; 8 -> identity; 9 -> uppercase_first; 10 -> identity; 11 -> {omit_first, 2}; 12 -> {omit_last, 1}; 13 -> identity; 14 -> identity; 15 -> uppercase_first; 16 -> identity; 17 -> identity; 18 -> identity; 19 -> identity; 20 -> identity; 21 -> identity; 22 -> identity; 23 -> {omit_last, 3}; 24 -> identity; 25 -> identity; 26 -> {omit_first, 3}; 27 -> {omit_last, 2}; 28 -> identity; 29 -> identity; 30 -> uppercase_first; 31 -> identity; 32 -> identity; 33 -> identity; 34 -> {omit_first, 4}; 35 -> identity; 36 -> identity; 37 -> identity; 38 -> identity; 39 -> {omit_first, 5}; 40 -> {omit_first, 6}; 41 -> identity; 42 -> {omit_last, 4}; 43 -> identity; 44 -> uppercase_all; 45 -> identity; 46 -> identity; 47 -> identity; 48 -> {omit_last, 7}; 49 -> {omit_last, 1}; 50 -> identity; 51 -> identity; 52 -> identity; 53 -> identity; 54 -> {omit_first, 9}; 55 -> {omit_first, 7}; 56 -> {omit_last, 6}; 57 -> identity; 58 -> uppercase_first; 59 -> {omit_last, 8}; 60 -> identity; 61 -> identity; 62 -> identity; 63 -> {omit_last, 5}; 64 -> {omit_last, 9}; 65 -> uppercase_first; 66 -> uppercase_first; 67 -> identity; 68 -> uppercase_all; 69 -> uppercase_first; 70 -> identity; 71 -> identity; 72 -> identity; 73 -> identity; 74 -> uppercase_first; 75 -> identity; 76 -> identity; 77 -> identity; 78 -> uppercase_first; 79 -> uppercase_first; 80 -> identity; 81 -> identity; 82 -> identity; 83 -> uppercase_all; 84 -> identity; 85 -> uppercase_all; 86 -> identity; 87 -> uppercase_all; 88 -> uppercase_first; 89 -> identity; 90 -> identity; 91 -> uppercase_first; 92 -> identity; 93 -> identity; 94 -> uppercase_all; 95 -> identity; 96 -> uppercase_first; 97 -> uppercase_all; 98 -> identity; 99 -> uppercase_first; 100 -> identity; 101 -> uppercase_all; 102 -> identity; 103 -> identity; 104 -> uppercase_first; 105 -> uppercase_all; 106 -> identity; 107 -> uppercase_all; 108 -> uppercase_first; 109 -> uppercase_first; 110 -> uppercase_all; 111 -> uppercase_all; 112 -> uppercase_all; 113 -> uppercase_all; 114 -> uppercase_all; 115 -> uppercase_all; 116 -> uppercase_all; 117 -> uppercase_all; 118 -> uppercase_first; 119 -> uppercase_all; 120 -> uppercase_first; _ -> identity end. -file("src/packkit/internal/brotli_transform.gleam", 744). ?DOC(false). -spec uppercase_first(bitstring(), integer()) -> bitstring(). uppercase_first(Word, Len) -> case Word of <<>> -> <<>>; <> when B < 16#C0 -> New_b = case (B >= 16#61) andalso (B =< 16#7A) of true -> erlang:'bxor'(B, 32); false -> B end, <>; <> when B@1 < 16#E0 -> _ = Len, <>; <> -> _ = Len, <>; _ -> Word end. -file("src/packkit/internal/brotli_transform.gleam", 779). ?DOC(false). -spec uppercase_step(bitstring()) -> integer(). uppercase_step(Rest) -> case Rest of <> when B < 16#C0 -> 1; <> when B@1 < 16#E0 -> 2; _ -> 3 end. -file("src/packkit/internal/brotli_transform.gleam", 766). ?DOC(false). -spec uppercase_all(bitstring(), integer(), integer()) -> bitstring(). uppercase_all(Word, Taken, Total) -> case Taken >= Total of true -> Word; false -> Head@1 = case gleam_stdlib:bit_array_slice(Word, 0, Taken) of {ok, Head} -> Head; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"packkit/internal/brotli_transform"/utf8>>, function => <<"uppercase_all"/utf8>>, line => 770, value => _assert_fail, start => 11497, 'end' => 11550, pattern_start => 11508, pattern_end => 11516}) end, Tail@1 = case gleam_stdlib:bit_array_slice( Word, Taken, Total - Taken ) of {ok, Tail} -> Tail; _assert_fail@1 -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"packkit/internal/brotli_transform"/utf8>>, function => <<"uppercase_all"/utf8>>, line => 771, value => _assert_fail@1, start => 11557, 'end' => 11622, pattern_start => 11568, pattern_end => 11576}) end, New_tail = uppercase_first(Tail@1, Total - Taken), Step = uppercase_step(Tail@1), uppercase_all( gleam_stdlib:bit_array_concat([Head@1, New_tail]), Taken + Step, Total ) end. -file("src/packkit/internal/brotli_transform.gleam", 715). ?DOC(false). -spec apply_op(bitstring(), op()) -> bitstring(). apply_op(Word, Op) -> Len = erlang:byte_size(Word), case Op of identity -> Word; {omit_last, N} -> case N >= Len of true -> <<>>; false -> Slice@1 = case gleam_stdlib:bit_array_slice( Word, 0, Len - N ) of {ok, Slice} -> Slice; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"packkit/internal/brotli_transform"/utf8>>, function => <<"apply_op"/utf8>>, line => 723, value => _assert_fail, start => 10192, 'end' => 10248, pattern_start => 10203, pattern_end => 10212}) end, Slice@1 end; {omit_first, N@1} -> case N@1 >= Len of true -> <<>>; false -> Slice@3 = case gleam_stdlib:bit_array_slice( Word, N@1, Len - N@1 ) of {ok, Slice@2} -> Slice@2; _assert_fail@1 -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"packkit/internal/brotli_transform"/utf8>>, function => <<"apply_op"/utf8>>, line => 731, value => _assert_fail@1, start => 10375, 'end' => 10431, pattern_start => 10386, pattern_end => 10395}) end, Slice@3 end; uppercase_first -> uppercase_first(Word, Len); uppercase_all -> uppercase_all(Word, 0, Len) end. -file("src/packkit/internal/brotli_transform.gleam", 698). ?DOC(false). -spec prefix_suffix_slice(integer()) -> bitstring(). prefix_suffix_slice(Id) -> Start = prefix_suffix_offset(Id), Len_bits@1 = case gleam_stdlib:bit_array_slice( <<1, 32, 2, 44, 32, 8, 32, 111, 102, 32, 116, 104, 101, 32, 4, 32, 111, 102, 32, 2, 115, 32, 1, 46, 5, 32, 97, 110, 100, 32, 4, 32, 105, 110, 32, 1, 34, 4, 32, 116, 111, 32, 2, 34, 62, 1, 10, 2, 46, 32, 1, 93, 5, 32, 102, 111, 114, 32, 3, 32, 97, 32, 6, 32, 116, 104, 97, 116, 32, 1, 39, 6, 32, 119, 105, 116, 104, 32, 6, 32, 102, 114, 111, 109, 32, 4, 32, 98, 121, 32, 1, 40, 6, 46, 32, 84, 104, 101, 32, 4, 32, 111, 110, 32, 4, 32, 97, 115, 32, 4, 32, 105, 115, 32, 4, 105, 110, 103, 32, 2, 10, 9, 1, 58, 3, 101, 100, 32, 2, 61, 34, 4, 32, 97, 116, 32, 3, 108, 121, 32, 1, 44, 2, 61, 39, 5, 46, 99, 111, 109, 47, 7, 46, 32, 84, 104, 105, 115, 32, 5, 32, 110, 111, 116, 32, 3, 101, 114, 32, 3, 97, 108, 32, 4, 102, 117, 108, 32, 4, 105, 118, 101, 32, 5, 108, 101, 115, 115, 32, 4, 101, 115, 116, 32, 4, 105, 122, 101, 32, 2, 194, 160, 4, 111, 117, 115, 32, 5, 32, 116, 104, 101, 32, 2, 101, 32, 0>>, Start, 1 ) of {ok, Len_bits} -> Len_bits; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"packkit/internal/brotli_transform"/utf8>>, function => <<"prefix_suffix_slice"/utf8>>, line => 700, value => _assert_fail, start => 9692, 'end' => 9764, pattern_start => 9703, pattern_end => 9715}) end, Len = case Len_bits@1 of <> -> N; _ -> 0 end, case Len of 0 -> <<>>; _ -> Payload@1 = case gleam_stdlib:bit_array_slice( <<1, 32, 2, 44, 32, 8, 32, 111, 102, 32, 116, 104, 101, 32, 4, 32, 111, 102, 32, 2, 115, 32, 1, 46, 5, 32, 97, 110, 100, 32, 4, 32, 105, 110, 32, 1, 34, 4, 32, 116, 111, 32, 2, 34, 62, 1, 10, 2, 46, 32, 1, 93, 5, 32, 102, 111, 114, 32, 3, 32, 97, 32, 6, 32, 116, 104, 97, 116, 32, 1, 39, 6, 32, 119, 105, 116, 104, 32, 6, 32, 102, 114, 111, 109, 32, 4, 32, 98, 121, 32, 1, 40, 6, 46, 32, 84, 104, 101, 32, 4, 32, 111, 110, 32, 4, 32, 97, 115, 32, 4, 32, 105, 115, 32, 4, 105, 110, 103, 32, 2, 10, 9, 1, 58, 3, 101, 100, 32, 2, 61, 34, 4, 32, 97, 116, 32, 3, 108, 121, 32, 1, 44, 2, 61, 39, 5, 46, 99, 111, 109, 47, 7, 46, 32, 84, 104, 105, 115, 32, 5, 32, 110, 111, 116, 32, 3, 101, 114, 32, 3, 97, 108, 32, 4, 102, 117, 108, 32, 4, 105, 118, 101, 32, 5, 108, 101, 115, 115, 32, 4, 101, 115, 116, 32, 4, 105, 122, 101, 32, 2, 194, 160, 4, 111, 117, 115, 32, 5, 32, 116, 104, 101, 32, 2, 101, 32, 0>>, Start + 1, Len ) of {ok, Payload} -> Payload; _assert_fail@1 -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"packkit/internal/brotli_transform"/utf8>>, function => <<"prefix_suffix_slice"/utf8>>, line => 708, value => _assert_fail@1, start => 9867, 'end' => 9952, pattern_start => 9878, pattern_end => 9889}) end, Payload@1 end. -file("src/packkit/internal/brotli_transform.gleam", 691). ?DOC(false). -spec apply(bitstring(), integer()) -> bitstring(). apply(Word, Idx) -> Prefix = prefix_suffix_slice(prefix_id_of(Idx)), Suffix = prefix_suffix_slice(suffix_id_of(Idx)), Body = apply_op(Word, op_of(Idx)), gleam_stdlib:bit_array_concat([Prefix, Body, Suffix]).