Files
VoiceVault/backend/__pycache__/api_routes.cpython-314.pyc

87 lines
28 KiB
Plaintext
Raw Normal View History

2026-02-14 22:57:24 -07:00
+
<00>Y<EFBFBD>iaA<00><00><>a<00>RWtU0tRt^RIt^RIt^RIt^RIt^RIHt^RIH t ^RI
H t ^RI H t HtHt^RIHtHt^RIHt^RIHtHtHtHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)] !4] !R ]*R
R 7t+]!]PX!R R 44t-]-P]RRR70RXmt/]PX!RR4t0]PX!RR4t1]PX!RR4t2Rs3]^kRRlt4RYRRllt5RRlt6RRlt7RRlt8]+PsR 4R!4t:]+PwR"4R#4t<]+PwR$4R%4t=]+PwR&4R'4t>]+PsR(4R)R*l4t?]+PsR+4R,4t@]+PwR-4R.4tA]+PsR/4R0R1l4tB]+PwR24R34tC]+PsR24R44tD]+PsR54R6R7l4tE]+P<>R54R8R9l4tG]+PsR:4R;R<l4tH]+PwR=4R>R?l4tI]+PsR=4R@RAl4tJ]+P<>RB4RCRDl4tL]+PsRB4RERFl4tM]+P<>RG4RHRIl4tN]+PsRG4RJRKl4tO]+PwRL4RMRNl4tP]+PsRL4RORPl4tQ]+PwRQ4RR4tR]+PsRQ4RS4tS]+PsRT4RURVl4tTR#)Zz}
Flask API routes aligned with TitanForge/schema.sql.
Includes auth, upload+transcription, history, and RAG search workflow.
N)<01>Path)<01> load_dotenv<6E><01> WhisperModel)<03> Blueprint<6E>jsonify<66>request)<02>check_password_hash<73>generate_password_hash)<01>secure_filename)<14>add_archive_file<6C> add_audit_log<6F>add_rag_chunks<6B>create_audio_post<73> create_user<65>get_archive_metadata<74>get_archive_rights<74>get_audio_post_by_id<69>get_post_bundle<6C>get_user_by_email<69>get_user_by_id<69>list_archive_files<65>list_audio_posts<74>list_audit_logs<67>list_rag_chunks<6B>list_user_history<72>search_rag_chunks<6B>update_audio_post<73>upsert_archive_metadata<74>upsert_archive_rights<74>apiz/api)<01>
url_prefix<EFBFBD>BACKEND_UPLOAD_DIR<49>uploadsT)<02>parents<74>exist_ok<6F> WHISPER_MODEL<45>base<73>WHISPER_DEVICE<43>cpu<70>WHISPER_COMPUTE_TYPE<50>int8c<00>$<00>V^8<>dQhR\/#)<02><00>returnr)<01>formats"<22>0/home/mann/Work/TitanForge/backend/api_routes.py<70> __annotate__r18s<00><00><1A><1A> <0C><1A>c<00>R<00>\f\\\\R7s\#)N)<02>device<63> compute_type)<05>_whisper_modelrr&r(r*<00>r2r0<00>_modelr88s#<00><00><15><1D>%<25> <19>!<21>-<2D>
<EFBFBD><0E>
<1A>r2c<00>0<00>V^8<>dQhR\R\/#)r-<00>message<67>status)<02>str<74>int)r/s"r0r1r1Cs<00><00>/<2F>/<2F>C<EFBFBD>/<2F><13>/r2c<00> <00>\RV/4V3#)<01>error)r)r:r;s&&r0<00>_errorr@Cs<00><00> <12>G<EFBFBD>W<EFBFBD>%<25> &<26><06> .<2E>.r2c<00>0<00>V^8<>dQhR\R\/#)r-<00>filenamer.)r<<00>bool)r/s"r0r1r1Gs<00><00>J<01>J<01>C<EFBFBD>J<01>D<EFBFBD>Jr2c<00>p<00>RV9dR#VPR^4^,P4\9#)<02>.F)<03>rsplit<69>lower<65>ALLOWED_MEDIA_EXTENSIONS)rBs&r0<00> _allowed_filerIGs2<00><00>
<EFBFBD>(<28><1A><14> <13>?<3F>?<3F>3<EFBFBD><01> "<22>1<EFBFBD> %<25> +<2B> +<2B> -<2D>1I<31> I<>Ir2c<00>0<00>V^8<>dQhR\R\/#)r-<00>pathr.)rr<)r/s"r0r1r1Ms<00><00><19><19>$<24><19>3<EFBFBD>r2c<00>0<00>\P!4pVPR4;_uu_4pVPR4pV'gMVP V4K.RRR4VP 4# +'giTP 4#;i)<03>rbNi)<06>hashlib<69>sha256<35>open<65>read<61>update<74> hexdigest)rK<00>h<>f<>chunks& r0<00>_sha256rWMsh<00><00><0F><0E><0E><18>A<EFBFBD> <0A><19><19>4<EFBFBD><1F><1F>A<EFBFBD><12><15>F<EFBFBD>F<EFBFBD>;<3B>'<27>E<EFBFBD><18><15> <0A>H<EFBFBD>H<EFBFBD>U<EFBFBD>O<EFBFBD>
<19> <0A>;<3B>;<3B>=<3D><18>
<19><1F> <0A>;<3B>;<3B>=<3D><18>s <00>/A6<05>6 B c<00><<00>V^8<>dQhR\R\R\/#)r-<00>transcript_text<78>titler.)r<)r/s"r0r1r1Xs!<00><00><06><06>3<EFBFBD><06>s<EFBFBD><06>s<EFBFBD>r2c<00><00>RV RV R2#)zaYou are an archive assistant. Use the following transcribed audio as source context. Post title: z.
Transcript:
z4
Answer user questions grounded in this transcript.r7)rYrZs&&r0<00> _build_promptr\Xs&<00><00> <17><1C>g<EFBFBD><18> <1A>
<1B>=<3D> =<3D>r2z/healthc
<00>@<00>\RRR\R\R\/4#)r;<00>ok<6F> whisper_model<65>whisper_device<63>whisper_compute_type)rr&r(r*r7r2r0<00>healthrbbs)<00><00> <12><10>$<24><17><1D><18>.<2E><1E> 4<> <06> <07>r2z/auth/registerc<00><00>\P!RRR7;'g/pVPR4;'gRP4P 4pVPR4;'gRpV'd V'g \ RR4#\ V4pV'd \ RR 4#\RVR
\V4R VPR 4R VPR 4R VPR 4/4p\RVR,RRR\P!RV/4/4\RRVR,RVR,R VPR 4//4^<5E>3# \d p\ \T4R4uRp?#Rp?ii;i)TF<54><02>force<63>silent<6E>email<69><00>password<72>$'email' and 'password' are required.<2E><>z#User already exists for this email.i<><00> password_hash<73> display_name<6D>
avatar_url<EFBFBD>bio<69>user_id<69>actionz user.register<65>details<6C>user<65><72>N)r<00>get_json<6F>get<65>striprGr@rrr
r <00>json<6F>dumpsr<00> Exceptionr<)<06>payloadrgri<00>existingrs<00>es r0<00> api_registerr~nsk<00><00><15><1E><1E>T<EFBFBD>%<25>8<>><3E>><3E>B<EFBFBD>G<EFBFBD> <14>[<5B>[<5B><17> !<21> '<27> '<27>R<EFBFBD> .<2E> .<2E> 0<> 6<> 6<> 8<>E<EFBFBD><16>{<7B>{<7B>:<3A>&<26>,<2C>,<2C>"<22>H<EFBFBD> <10><08><15><<3C>c<EFBFBD>B<>B<> <20><15>'<27>H<EFBFBD><0F><15>;<3B>S<EFBFBD>A<>A<>#<23><1A><17><15><1F>!7<><08>!A<><1E><07> <0B> <0B>N<EFBFBD> ;<3B><1C>g<EFBFBD>k<EFBFBD>k<EFBFBD>,<2C>7<><15>w<EFBFBD>{<7B>{<7B>5<EFBFBD>)<29>  <0E>
<EFBFBD><04> <16>y<EFBFBD>$<24>y<EFBFBD>/<2F>8<EFBFBD>_<EFBFBD>i<EFBFBD>Y]<5D>Yc<59>Yc<59>el<65>ns<6E>dt<64>Yu<59>v<>w<><16> <12><19>4<EFBFBD> <09>?<3F><17><14>g<EFBFBD><1D><1E><04><08><08><1E> 8<><0E>
<EFBFBD> <0B> <10> <10> <10><> <15>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><>#<23>s<00>1B*E<00> F<03>'F<03>;F<03>Fz /auth/loginc<00><><00>\P!RRR7;'g/pVPR4;'gRP4P 4pVPR4;'gRpV'd V'g \ RR4#\ V4pV'g \ RR 4#\VR
,V4'g \ RR 4#\R VR ,R R R\P!RV/4/4\RR VR ,RVR,RVPR4RVPR4RVPR4//4#)TFrdrgrhrirjrkzInvalid credentials.i<>rlrprqz
user.loginrrrsrmrnro) rrurvrwrGr@rr r rxryr)r{rgrirss r0<00> api_loginr<6E><00>s)<00><00><15><1E><1E>T<EFBFBD>%<25>8<>><3E>><3E>B<EFBFBD>G<EFBFBD> <14>[<5B>[<5B><17> !<21> '<27> '<27>R<EFBFBD> .<2E> .<2E> 0<> 6<> 6<> 8<>E<EFBFBD><16>{<7B>{<7B>:<3A>&<26>,<2C>,<2C>"<22>H<EFBFBD> <10><08><15><<3C>c<EFBFBD>B<>B<> <1C>U<EFBFBD> #<23>D<EFBFBD> <0F><15>,<2C>c<EFBFBD>2<>2<> <1E>t<EFBFBD>O<EFBFBD>4<>h<EFBFBD> ?<3F> ?<3F><15>,<2C>c<EFBFBD>2<>2<><11>9<EFBFBD>d<EFBFBD>9<EFBFBD>o<EFBFBD>x<EFBFBD><1C>y<EFBFBD>RV<52>R\<5C>R\<5C>^e<>gl<67>]m<>Rn<52>o<>p<> <12> <12><19>4<EFBFBD> <09>?<3F><17><14>g<EFBFBD><1D><1E><04><08><08><1E> 8<><1C>d<EFBFBD>h<EFBFBD>h<EFBFBD>|<7C>4<><15>t<EFBFBD>x<EFBFBD>x<EFBFBD><05><EFBFBD> <0E>
<EFBFBD>
<06>
r2z /posts/uploadc<00><>
<00>R\P9d \RR4#\PR,pVP'g \RR4#\ VP4'g \RR4#\P
P R4p\P
P R4;'gRP4p\P
P R4p\P
P R 4;'gR
P4P4p\P
P R 4;'gR P4P4pVR99d \R R4#\V4p\T4pT'g \RR4#\\P!44p\!TP4p RT RT 2p
\"T RT 2, p TP%T 4Rp \'RTRTRTR TRRR TRT
/4p \T R,4p \)T 4p\+T RRR\T 4P-RR4RTP.RT P14P2RT/4\54P7\T 44wpp.p.pTF<>pTP8P4pT'gK'TP;T4TP;R \=TP>4R!\=TP@4R"TR#TPBe\=TPB4MRR$R/4K<> R%PET4P4p\GTT4pT'd \IT T4\KT \LPN!R&TR'\QT4R(T R T/44\+T RR)RT
R*2RR+R\QTPSR,44R\TPV!TPSR,44PY4/4\[T RR-/4\]RT RTR.R/R0\LPN!R TRT
/4/4\_RT R TRR-R1\T 4P-RR4R2TR&TR3\QT4/4^<5E>3# \\3d\RR4u#i;i \`d<>pT 'dxT P R4'da\[\T R,4RR4/4\]R\T R,4RTR.R5R0\LPN!R6\T4/4/4\R7T 2R84uRp?#Rp?ii;i):<3A>filezMissing 'file' in form-data.rkzFilename is empty.zUnsupported media extension.rprZzUntitled recording<6E> description<6F>
visibility<EFBFBD>private<74>language<67>enz+'visibility' must be 'private' or 'public'.z-'user_id' is required and must be an integer.<2E>User not found.<2E><>zarchive/<2F>/<2F>_Nr;<00>
processing<EFBFBD>storage_prefix<69>post_id<69>role<6C>original_audiorK<00>\<5C> content_type<70>
size_bytesrO<00> start_sec<65>end_sec<65>text<78>
confidence<EFBFBD> embedding<6E> <20>prompt<70>transcript_length_chars<72> source_file<6C>transcript_txtz/transcript.txtz
text/plainzutf-8<>readyrqzpost.upload.transcribedrr<00>
audio_pathrY<00>rag_chunk_count<6E>failedzpost.upload.failedr?zUpload/transcription failed: rt><00>publicr<63>)1r<00>filesr@rBrI<00>formrvrwrGr=<00> TypeError<6F>
ValueErrorrr<<00>uuid<69>uuid4r <00>
UPLOAD_DIR<EFBFBD>saverrWr <00>replace<63>mimetype<70>stat<61>st_sizer8<00>
transcriber<EFBFBD><00>append<6E>float<61>start<72>end<6E> avg_logprob<6F>joinr\rrrxry<00>len<65>encoderNrOrSrr rrz)<18>media<69> user_id_rawrZr<>r<>r<>rprs<00> post_uuid<69> safe_namer<65><00>
saved_path<EFBFBD> created_postr<74><00> media_sha<68>segments<74>_info<66>rag_rows<77>transcript_parts<74>seg<65> segment_textrY<00> prompt_textr}s r0<00>api_upload_postr<74><00>s <00><00> <0A>W<EFBFBD>]<5D>]<5D>"<22><15>4<>c<EFBFBD>:<3A>:<3A> <13>M<EFBFBD>M<EFBFBD>&<26> !<21>E<EFBFBD> <10>><3E>><3E>><3E><15>*<2A>C<EFBFBD>0<>0<> <18><15><1E><1E> (<28> (<28><15>4<>c<EFBFBD>:<3A>:<3A><19>,<2C>,<2C>"<22>"<22>9<EFBFBD>-<2D>K<EFBFBD> <14>\<5C>\<5C> <1D> <1D>g<EFBFBD> &<26> ><3E> ><3E>*><3E> E<> E<> G<>E<EFBFBD><19>,<2C>,<2C>"<22>"<22>=<3D>1<>K<EFBFBD><19>,<2C>,<2C>"<22>"<22><<3C>0<>=<3D>=<3D>I<EFBFBD>D<>D<>F<>L<>L<>N<>J<EFBFBD><17> <0C> <0C> <20> <20><1A>,<2C>4<>4<><04>;<3B>;<3B>=<3D>C<>C<>E<>H<EFBFBD><11>.<2E>.<2E><15>C<>S<EFBFBD>I<>I<>L<01><15>k<EFBFBD>"<22><07> <1A>'<27> "<22>D<EFBFBD> <0F><15>'<27><13>-<2D>-<2D><13>D<EFBFBD>J<EFBFBD>J<EFBFBD>L<EFBFBD>!<21>I<EFBFBD><1F><05><0E><0E>/<2F>I<EFBFBD><1F><07>y<EFBFBD><01>)<29><1B>5<>N<EFBFBD><1B><19> <0B>1<EFBFBD>Y<EFBFBD>K<EFBFBD>8<>8<>J<EFBFBD> <09>J<EFBFBD>J<EFBFBD>z<EFBFBD><1A><17>L<EFBFBD>j@<01>(<28><19>7<EFBFBD><17><15><1D>{<7B><1C>j<EFBFBD><18>,<2C><1A>H<EFBFBD> <20>.<2E> <0E>

<EFBFBD> <0C><16>l<EFBFBD>9<EFBFBD>-<2D>.<2E><07><1B>J<EFBFBD>'<27> <09><18> <13><16>(<28><16><03>J<EFBFBD><0F>/<2F>/<2F><04>c<EFBFBD>:<3A><1E><05><0E><0E><1C>j<EFBFBD>o<EFBFBD>o<EFBFBD>/<2F>7<>7<><18>)<29>  <0E>
<EFBFBD>!<21>(<28>-<2D>-<2D>c<EFBFBD>*<2A>o<EFBFBD>><3E><0F><08>%<25><15><08><1D><18><1B>C<EFBFBD><1E>8<EFBFBD>8<EFBFBD>><3E>><3E>+<2B>L<EFBFBD><1F><18> <1C> #<23> #<23>L<EFBFBD> 1<> <14>O<EFBFBD>O<EFBFBD><1F><15>s<EFBFBD>y<EFBFBD>y<EFBFBD>!1<><1D>u<EFBFBD>S<EFBFBD>W<EFBFBD>W<EFBFBD>~<7E><1A>L<EFBFBD> <20>C<EFBFBD>O<EFBFBD>O<EFBFBD><W<>%<25><03><0F><0F>"8<>]a<><1F><14> <12> <0E> <1C><1E>(<28>(<28>#3<>4<>:<3A>:<3A><<3C><0F>#<23>O<EFBFBD>U<EFBFBD>;<3B> <0B> <13> <1A>7<EFBFBD>H<EFBFBD> -<2D><1F> <13> <10>J<EFBFBD>J<EFBFBD><1C>k<EFBFBD>-<2D>s<EFBFBD>?<3F>/C<>!<21>9<EFBFBD><1E><08> <12> <0E>
<EFBFBD> <19> <13><16>(<28><16>><3E>*<2A>/<2F>:<3A><1E> <0C><1C>c<EFBFBD>/<2F>"8<>"8<><17>"A<>B<><18>'<27>.<2E>.<2E><1F>)?<3F>)?<3F><07>)H<>I<>S<>S<>U<>  <0E>
<EFBFBD> <1A>'<27>H<EFBFBD>g<EFBFBD>#6<>7<><15><19>7<EFBFBD><19>7<EFBFBD><18>3<><19>4<EFBFBD>:<3A>:<3A>|<7C>Z<EFBFBD>AQ<41>Sa<53>&b<>c<>  <0E>
<EFBFBD><17><19>7<EFBFBD><1C>j<EFBFBD><18>'<27><1C>c<EFBFBD>*<2A>o<EFBFBD>5<>5<>d<EFBFBD>C<EFBFBD>@<40>!<21>?<3F><18>+<2B>!<21>3<EFBFBD>x<EFBFBD>=<3D> <0E>

<EFBFBD> <0F>
<0F>
<0F><>E <16>z<EFBFBD> "<22>L<01><15>E<>s<EFBFBD>K<>K<>L<01><>Z <15> @<01> <17>L<EFBFBD>,<2C>,<2C>Y<EFBFBD>7<>7<> <1D>c<EFBFBD>,<2C>y<EFBFBD>"9<>:<3A>X<EFBFBD>x<EFBFBD><P<> Q<> <19><1D>s<EFBFBD><<3C> <09>#:<3A>;<3B><1D>w<EFBFBD><1C>2<><1D>t<EFBFBD>z<EFBFBD>z<EFBFBD>7<EFBFBD>C<EFBFBD><01>F<EFBFBD>*;<3B><<3C> <12> <0E><16>5<>a<EFBFBD>S<EFBFBD>9<>3<EFBFBD>?<3F>?<3F><> @<01>s8<00> R6<00>JS<00>6S<03>S<03> U<<03>$U7<03>A.U7<03>1U<<03>7U<z/users/<int:user_id>/historyc<00>$<00>V^8<>dQhR\/#<00>r-rp<00>r=)r/s"r0r1r1Fs<00><00>#<23>#<23>c<EFBFBD>#r2c <00>Z<00>\PPR^\R7p\PPR^\R7p\ WVR7p\ RVRVR\ \^V4^d4/4# \d p\\T4R4uRp?#Rp?ii;i)<07>page<67><02>default<6C>type<70>limit<69>r<>r<><00>historyrtN) r<00>argsrvr=rr<00>min<69>maxrzr@r<)rpr<>r<><00>postsr}s& r0<00>api_user_historyr<79>Es<><00><00> <12><<3C><<3C> <1B> <1B>F<EFBFBD>A<EFBFBD>C<EFBFBD> <1B> 8<>D<EFBFBD> <13>L<EFBFBD>L<EFBFBD> <1C> <1C>W<EFBFBD>b<EFBFBD>s<EFBFBD> <1C> ;<3B>E<EFBFBD>#<23>!<21>'<27>E<EFBFBD>B<><05><16> <09>5<EFBFBD>&<26>$<24><07><13>S<EFBFBD><11>E<EFBFBD>]<5D>TW<54>AX<41>Y<>Z<>Z<><5A> <14>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><>#<23>s<00>1B<00> B*<03> B%<03>B*<03>%B*z /rag/searchc <00>b<00>\PPR4;'gRP4p\PPR\R7p\PPR^\R7p\PPR^\R7pV'g \ RR4#V'g \ R R4#\ WW#R
7p\R VRVR\\^V4^d4/4# \d p\ \T4R 4uR p?#R p?ii;i)<0E>qrhrp<00>r<>r<>r<>r<>z'user_id' is required.rkz'q' is required.)rp<00>
query_textr<EFBFBD>r<><00>resultsrtN) rr<>rvrwr=r@rrr<>r<>rzr<)r<>rpr<>r<><00>rowsr}s r0<00>api_rag_searchr<68>Qs<><00><00><19>,<2C>,<2C>"<22>"<22>3<EFBFBD>'<27>-<2D>-<2D>2<EFBFBD>4<>4<>6<>J<EFBFBD><15>l<EFBFBD>l<EFBFBD><1E><1E>y<EFBFBD>s<EFBFBD><1E>3<>G<EFBFBD> <12><<3C><<3C> <1B> <1B>F<EFBFBD>A<EFBFBD>C<EFBFBD> <1B> 8<>D<EFBFBD> <13>L<EFBFBD>L<EFBFBD> <1C> <1C>W<EFBFBD>b<EFBFBD>s<EFBFBD> <1C> ;<3B>E<EFBFBD> <12><15>.<2E><03>4<>4<> <15><15>(<28>#<23>.<2E>.<2E>#<23> <20><17>d<EFBFBD>`<60><04><16> <09>4<EFBFBD><16><14>w<EFBFBD><03>C<EFBFBD><01>5<EFBFBD>M<EFBFBD>SV<53>@W<>X<>Y<>Y<><59> <14>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><>#<23>s<00>1D<00> D.<03>D)<03>#D.<03>)D.z/usersc<00><00>\P!RRR7;'g/p\\V44^<5E>3# \d p\ \ T4R4uRp?#Rp?i\d p\ \ T4R4uRp?#Rp?ii;i<01>TFrdrkNrt)rrurrr<>r@r<rz<00>r{r}s r0<00>api_create_userr<72>fsq<00><00><15><1E><1E>T<EFBFBD>%<25>8<>><3E>><3E>B<EFBFBD>G<EFBFBD>#<23><16>{<7B>7<EFBFBD>+<2B>,<2C>c<EFBFBD>1<>1<><31> <15>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><> <14>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><>#<23><>3<00>:<00> B <03>A<03>B <03> B <03>,B <03>-B<03>B <03>B z/users/<int:user_id>c<00>$<00>V^8<>dQhR\/#r<>r<>)r/s"r0r1r1rs<00><00><19><19>#<23>r2c<00>V<00>\V4pV'g \RR4#\V4#)r<>r<>)rr@r)rprss& r0<00> api_get_userr<72>qs'<00><00> <19>'<27> "<22>D<EFBFBD> <0F><15>'<27><13>-<2D>-<2D> <12>4<EFBFBD>=<3D>r2z/postsc<00><00>\P!RRR7;'g/p\\V44^<5E>3# \d p\ \ T4R4uRp?#Rp?i\d p\ \ T4R4uRp?#Rp?ii;ir<>)rrurrr<>r@r<rzr<>s r0<00>api_create_postr<74>ysr<00><00><15><1E><1E>T<EFBFBD>%<25>8<>><3E>><3E>B<EFBFBD>G<EFBFBD>#<23><16>(<28><17>1<>2<>C<EFBFBD>7<>7<><37> <15>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><> <14>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><>#<23>r<EFBFBD>c <00><><00>\PPR^\R7p\PPR^\R7p\PPR4p\PPR\R7p\ WW#R7p\ RVRVR\ \^V4^d4/4# \d p\\T4R4uR p?#R p?ii;i)
r<EFBFBD>r<>r<>r<>rpr<>)r<>r<>r<>rpr<>rtN) rr<>rvr=rrr<>r<>rzr@r<)r<>r<>r<>rpr<>r}s r0<00>api_list_postsr<73><00>s<><00><00> <12><<3C><<3C> <1B> <1B>F<EFBFBD>A<EFBFBD>C<EFBFBD> <1B> 8<>D<EFBFBD> <13>L<EFBFBD>L<EFBFBD> <1C> <1C>W<EFBFBD>b<EFBFBD>s<EFBFBD> <1C> ;<3B>E<EFBFBD><18><1C><1C>!<21>!<21>,<2C>/<2F>J<EFBFBD><15>l<EFBFBD>l<EFBFBD><1E><1E>y<EFBFBD>s<EFBFBD><1E>3<>G<EFBFBD>#<23><1F>T<EFBFBD>:<3A>_<><04><16><07><14>v<EFBFBD>t<EFBFBD>W<EFBFBD>c<EFBFBD>#<23>a<EFBFBD><15>-<2D>QT<51>>U<>V<>W<>W<><57> <14>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><>#<23>s<00>1C<00> C.<03>C)<03>#C.<03>)C.z/posts/<int:post_id>c<00>$<00>V^8<>dQhR\/#<00>r-r<>r<>)r/s"r0r1r1<00>s<00><00><18><18>#<23>r2c<00>V<00>\V4pV'g \RR4#\V4#<00><02>Post not found.r<>)rr@r<00>r<><00>rows& r0<00> api_get_postr<74><00>s'<00><00>
<1E>w<EFBFBD>
'<27>C<EFBFBD> <0E><15>'<27><13>-<2D>-<2D> <12>3<EFBFBD><<3C>r2c<00>$<00>V^8<>dQhR\/#r<>r<>)r/s"r0r1r1<00>s<00><00>#<23>#<23>C<EFBFBD>#r2c<00><><00>\P!RRR7;'g/p\W4pV'g \RR4#\ V4# \
d p\\ T4R4uRp?#Rp?ii;i)TFrdr<>r<>rtN)rrurr@rrzr<)r<>r{r<>r}s& r0<00>api_patch_postr<74><00>sg<00><00><15><1E><1E>T<EFBFBD>%<25>8<>><3E>><3E>B<EFBFBD>G<EFBFBD>#<23><1F><07>1<><03><12><19>+<2B>S<EFBFBD>1<> 1<><16>s<EFBFBD>|<7C><1B><> <14>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><>#<23>s#<00>A<00>
A<00> A8<03>A3<03>-A8<03>3A8z/posts/<int:post_id>/bundlec<00>$<00>V^8<>dQhR\/#r<>r<>)r/s"r0r1r1<00>s<00><00><1B><1B>S<EFBFBD>r2c<00>V<00>\V4pV'g \RR4#\V4#r<>)rr@r)r<><00>bundles& r0<00>api_post_bundler<65><00>s'<00><00> <1C>W<EFBFBD> %<25>F<EFBFBD> <11><15>'<27><13>-<2D>-<2D> <12>6<EFBFBD>?<3F>r2z/posts/<int:post_id>/filesc<00>$<00>V^8<>dQhR\/#r<>r<>)r/s"r0r1r1<00>s<00><00>#<23>#<23>#<23>#r2c<00><00>\P!RRR7;'g/p\\W44^<5E>3# \d p\ \ T4R4uRp?#Rp?i\d p\ \ T4R4uRp?#Rp?ii;ir<>)rrurr r<>r@r<rz<00>r<>r{r}s& r0<00> api_add_filer<65><00>sr<00><00><15><1E><1E>T<EFBFBD>%<25>8<>><3E>><3E>B<EFBFBD>G<EFBFBD>#<23><16>'<27><07>9<>:<3A>C<EFBFBD>?<3F>?<3F><> <15>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><> <14>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><>#<23>r<EFBFBD>c<00>$<00>V^8<>dQhR\/#r<>r<>)r/s"r0r1r1<00>s<00><00>#<23>#<23>C<EFBFBD>#r2c<00><><00>\R\V4/4# \d p\\ T4R4uRp?#Rp?ii;i)r<>rtN)rrrzr@r<)r<>r}s& r0<00>api_list_filesr<73><00>s><00><00>#<23><16><07>!3<>G<EFBFBD>!<<3C>=<3D>><3E>><3E><> <14>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><>#<23>s<00><00> A<03>=<03>A<03>Az/posts/<int:post_id>/metadatac<00>$<00>V^8<>dQhR\/#r<>r<>)r/s"r0r1r1<00>s<00><00> #<23> #<23>c<EFBFBD> #r2c<00> <00>\P!RRR7;'g/pVPR4pVf \RR4#\ \ W44# \ d p\\T4R4uRp?#Rp?ii;i)TFrd<00>metadataNz'metadata' is required.rkrt)rrurvr@rrrzr<)r<>r{rr}s& r0<00>api_put_metadatar<00>su<00><00><15><1E><1E>T<EFBFBD>%<25>8<>><3E>><3E>B<EFBFBD>G<EFBFBD><16>{<7B>{<7B>:<3A>&<26>H<EFBFBD><0F><17><15>/<2F><13>5<>5<>#<23><16>.<2E>w<EFBFBD>A<>B<>B<><42> <14>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><>#<23>s<00>A<00> B<03>$A><03>8B<03>>Bc<00>$<00>V^8<>dQhR\/#r<>r<>)r/s"r0r1r1<00>s<00><00><18><18>c<EFBFBD>r2c<00>V<00>\V4pV'g \RR4#\V4#)zMetadata not found.r<>)rr@rr<>s& r0<00>api_get_metadatar<00>s'<00><00>
<1E>w<EFBFBD>
'<27>C<EFBFBD> <0E><15>+<2B>S<EFBFBD>1<>1<> <12>3<EFBFBD><<3C>r2z/posts/<int:post_id>/rightsc<00>$<00>V^8<>dQhR\/#r<>r<>)r/s"r0r1r1<00>s<00><00>#<23>#<23>C<EFBFBD>#r2c<00><><00>\P!RRR7;'g/p\\W44# \d p\ \ T4R4uRp?#Rp?ii;i)TFrdrtN)rrurrrzr@r<r<>s& r0<00>api_put_rightsr <00>sS<00><00><15><1E><1E>T<EFBFBD>%<25>8<>><3E>><3E>B<EFBFBD>G<EFBFBD>#<23><16>,<2C>W<EFBFBD>><3E>?<3F>?<3F><> <14>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><>#<23>s<00>8<00> A"<03>A<03>A"<03>A"c<00>$<00>V^8<>dQhR\/#r<>r<>)r/s"r0r1r1<00>s<00><00><18><18>C<EFBFBD>r2c<00>V<00>\V4pV'g \RR4#\V4#)zRights not found.r<>)rr@rr<>s& r0<00>api_get_rightsr <00>s'<00><00>
<1C>W<EFBFBD>
%<25>C<EFBFBD> <0E><15>)<29>3<EFBFBD>/<2F>/<2F> <12>3<EFBFBD><<3C>r2z/posts/<int:post_id>/chunksc<00>$<00>V^8<>dQhR\/#r<>r<>)r/s"r0r1r1<00>s<00><00> #<23> #<23>C<EFBFBD> #r2c<00>R<00>\P!RRR7;'g/pVPR4p\V\4'g \ RR4#\ W4p\R\V4RV/4^<5E>3# \d p\ \T4R4uRp?#Rp?ii;i) TFrd<00>chunksz'chunks' must be a list.rk<00>insertedrtN) rrurv<00>
isinstance<EFBFBD>listr@rrr<>rzr<)r<>r{rr<>r}s& r0<00>api_add_chunksr<00>s<><00><00><15><1E><1E>T<EFBFBD>%<25>8<>><3E>><3E>B<EFBFBD>G<EFBFBD> <14>[<5B>[<5B><18> "<22>F<EFBFBD> <15>f<EFBFBD>d<EFBFBD> #<23> #<23><15>0<>#<23>6<>6<>#<23><1D>g<EFBFBD>.<2E><04><16>
<EFBFBD>C<EFBFBD><04>I<EFBFBD>x<EFBFBD><14>><3E>?<3F><13>D<>D<><44> <14>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><>#<23>s<00>$A<<00>< B&<03>B!<03>B&<03>!B&c<00>$<00>V^8<>dQhR\/#r<>r<>)r/s"r0r1r1<00><00><00><00>#<23>#<23>C<EFBFBD>#r2c <00>&<00>\PPR^\R7p\PPR^<5E>\R7p\ R\ WVR7/4# \ d p\\T4R4uRp?#Rp?ii;i)r<>r<>r<>rr<>rtN) rr<>rvr=rrrzr@r<<00>r<>r<>r<>r}s& r0<00>api_get_chunksr<00>su<00><00> <12><<3C><<3C> <1B> <1B>F<EFBFBD>A<EFBFBD>C<EFBFBD> <1B> 8<>D<EFBFBD> <13>L<EFBFBD>L<EFBFBD> <1C> <1C>W<EFBFBD>c<EFBFBD><03> <1C> <<3C>E<EFBFBD>#<23><16><08>/<2F>'<27>E<EFBFBD>"R<>S<>T<>T<><54> <14>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><>#<23><><00>A&<00>& B<03>1B <03>B<03> Bz/auditc<00><00>\P!RRR7;'g/p\\V44^<5E>3# \d p\ \ T4R4uRp?#Rp?i\d p\ \ T4R4uRp?#Rp?ii;ir<>)rrurr r<>r@r<rzr<>s r0<00>api_create_auditrsq<00><00><15><1E><1E>T<EFBFBD>%<25>8<>><3E>><3E>B<EFBFBD>G<EFBFBD>#<23><16>}<7D>W<EFBFBD>-<2D>.<2E><03>3<>3<><33> <15>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><> <14>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><>#<23>r<EFBFBD>c
<00><><00>\PPR\R7p\PPR\R7p\PPR^\R7p\PPR^d\R7p\ R\ WW#R7/4# \ d p\\T4R4uR p?#R p?ii;i)
r<EFBFBD>r<>rpr<>r<>r<><00>logs)r<>rpr<>r<>rtN<> rr<>rvr=rrrzr@r<)r<>rpr<>r<>r}s r0<00>api_list_auditr s<><00><00><15>l<EFBFBD>l<EFBFBD><1E><1E>y<EFBFBD>s<EFBFBD><1E>3<>G<EFBFBD><15>l<EFBFBD>l<EFBFBD><1E><1E>y<EFBFBD>s<EFBFBD><1E>3<>G<EFBFBD> <12><<3C><<3C> <1B> <1B>F<EFBFBD>A<EFBFBD>C<EFBFBD> <1B> 8<>D<EFBFBD> <13>L<EFBFBD>L<EFBFBD> <1C> <1C>W<EFBFBD>c<EFBFBD><03> <1C> <<3C>E<EFBFBD>#<23><16><06><0F><07>W[<5B> i<>j<>k<>k<><6B> <14>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><>#<23>s<00>B0<00>0 C<03>;C<03>C<03>Cz/posts/<int:post_id>/auditc<00>$<00>V^8<>dQhR\/#r<>r<>)r/s"r0r1r1rr2c <00>&<00>\PPR^\R7p\PPR^d\R7p\ R\ WVR7/4# \ d p\\T4R4uRp?#Rp?ii;i)r<>r<>r<>r)r<>r<>r<>rtNrrs& r0<00>api_post_auditr"sv<00><00> <12><<3C><<3C> <1B> <1B>F<EFBFBD>A<EFBFBD>C<EFBFBD> <1B> 8<>D<EFBFBD> <13>L<EFBFBD>L<EFBFBD> <1C> <1C>W<EFBFBD>c<EFBFBD><03> <1C> <<3C>E<EFBFBD>#<23><16><06><0F><07>RW<52> X<>Y<>Z<>Z<><5A> <14>#<23><15>c<EFBFBD>!<21>f<EFBFBD>c<EFBFBD>"<22>"<22><>#<23>rc<00>N<00>V^8<>dQh/^\9d\R,;R&#)r-Nr6)<02>__conditional_annotations__r)r/s"r0r1r1s%<00><00><04><04>h+<2B>*<2A> <0C>t<EFBFBD>#<23>*<2A>ir2> <00>m4a<34>mkv<6B>mov<6F>mp3<70>mp4<70>ogg<67>wav<61>flac<61>webm)rk)Vr$<00>__doc__rNrx<00>osr<73><00>pathlibr<00>dotenvr<00>faster_whisperr<00>flaskrrr<00>werkzeug.securityr r
<00>werkzeug.utilsr <00>
db_queriesr r rrrrrrrrrrrrrrrrrr<00>__name__r <00>getenvr<76><00>mkdirrHr&r(r*r6r8r@rIrWr\rvrb<00>postr~r<>r<>r<>r<>r<>r<>r<>r<>r<><00>patchr<68>r<>r<>r<><00>putrrr r rrrrr"r1)r$s@r0<00><module>r=s<><00><><01><04>
<0F> <0B> <09> <0B><18><1E>'<27>-<2D>-<2D>I<>*<2A><02><02><02><02><02><02>. <0C> <0A><0F><05>x<EFBFBD>F<EFBFBD>3<><03> <11>"<22>)<29>)<29>0<>)<29><<3C> =<3D>
<EFBFBD>
<EFBFBD><10><10><14><04><10>-<2D>\<5C><18><12> <09> <09>/<2F>6<EFBFBD>2<> <0A><13><19><19>+<2B>U<EFBFBD>3<><0E><19>y<EFBFBD>y<EFBFBD>!7<><16>@<40><14>&*<2A><0E>*<2A><1A>/<2F>J<01> <19><06><05><17><17><19><13><07><14><07><05><18><18>
<1A><1B>#<23><1C>#<23>D<05><18><18>-<2D><18><06><19><06>@<05><18><18>/<2F><1A>M@<01><1B>M@<01>d<05><17><17> '<27>(<28>#<23>)<29>#<23><05><17><17><1D><17>#<23><18>#<23>(<05><18><18>(<28><13>#<23><14>#<23><05><17><17> <1F> <20><19>!<21><19><05><18><18>(<28><13>#<23><14>#<23><05><17><17><18><12>
#<23><13>
#<23><05><17><17> <1F> <20><18>!<21><18><05><19><19> !<21>"<22>#<23>#<23>#<23><05><17><17> &<26>'<27><1B>(<28><1B><05><18><18>
&<26>'<27>#<23>(<28>#<23><05><17><17> %<25>&<26>#<23>'<27>#<23><05><17><17> (<28>)<29> #<23>*<2A> #<23><05><17><17> (<28>)<29><18>*<2A><18><05><17><17> &<26>'<27>#<23>(<28>#<23><05><17><17> &<26>'<27><18>(<28><18><05><18><18>
'<27>(<28> #<23>)<29> #<23><05><17><17> &<26>'<27>#<23>(<28>#<23><05><18><18>(<28><13>#<23><14>#<23><05><17><17><18><12> #<23><13> #<23><05><17><17> %<25>&<26>#<23>'<27>#r2