commit 51335923b25bec767bc08e3a358d044a643b76ae
parent 0a064c07fb6a119fd8d9061bc724f6c97c624c8c
Author: minerva-jupiter <ryouturn@gmail.com>
Date: Sat, 1 Nov 2025 00:20:42 +0900
feat(app): Introduce quiz and flame effect stages, refine initial chat audio
Diffstat:
14 files changed, 1116 insertions(+), 996 deletions(-)
diff --git a/app/components/1_chat.tsx b/app/components/1_chat.tsx
@@ -1,360 +1,299 @@
-'use client';
-
-import React, { useState, useRef, useEffect, KeyboardEvent, useCallback } from 'react';
-import { StageProps } from '../ctrl/page.tsx';
-import init, { chat } from '../../rust-wasm/pkg/rust_wasm.js';
-
-// useWebAudioControllerの代替となるカスタムフックを定義
+"use client";
+import React, {
+ KeyboardEvent,
+ useCallback,
+ useEffect,
+ useRef,
+ useState,
+} from "react";
+import { StageProps } from "../ctrl/page.tsx";
+import init, { chat } from "../../rust-wasm/pkg/rust_wasm.js";
+/**
+ * カスタムフック: 最初の音源を再生し、終了後にonAudioEndを実行する
+ */
const useAudioPlayback = (
- initialTalktime: number,
+ initialAudioId: number, // 1
audioSources: Record<number, string>,
onAudioEnd: () => void,
) => {
- // Audioオブジェクトの参照を保持
- const audioRef = useRef<HTMLAudioElement | null>(null);
- // 現在のトークタイムを保持し、変更を監視するためのState
- const talktimesRef = useRef(initialTalktime);
- const [currentAudioUrl, setCurrentAudioUrl] = useState(audioSources[initialTalktime] || '');
-
- // 外部から再生を停止するための関数
- const stop = useCallback(() => {
- if (audioRef.current) {
- audioRef.current.pause();
- audioRef.current.currentTime = 0; // 最初に戻す
- }
- }, []);
-
- // 外部からループ設定を変更するための関数(AudioRefのcurrentが更新されるたびに適用される)
- const setLoop = useCallback((isLooping: boolean) => {
- // audioRef.currentが存在する場合にのみ設定を試みる
- if (audioRef.current) {
- audioRef.current.loop = isLooping;
- }
- }, []); // 依存配列は空でOK
-
- // 1. Audioオブジェクトの初期化、クリーンアップ、および終了イベント処理
- useEffect(() => {
- // 古い音源を停止
- stop();
+ const audioRef = useRef<HTMLAudioElement | null>(null);
+ const initialAudioUrl = audioSources[initialAudioId] || "";
+
+ // 外部から再生を停止するための関数
+ const stop = useCallback(() => {
+ if (audioRef.current) {
+ audioRef.current.pause();
+ audioRef.current.currentTime = 0;
+ }
+ }, []);
- const audio = new Audio(currentAudioUrl);
- audioRef.current = audio;
- audio.volume = 0.5; // 必要に応じて音量を設定
-
- // 常に最新のtalktimesRef.currentに基づいてループ設定
- const isLooping = talktimesRef.current < 4;
- audio.loop = isLooping;
- setLoop(isLooping); // 念のため
-
- // 自動再生の試行 (ユーザーのインタラクションが必要なため、失敗する可能性あり)
- audio.play().catch(e => {
- console.error("Audio playback error on URL change/init:", e);
- // ユーザーのインタラクションがない場合は再生できないため、ここではエラーを無視するか、ユーザーに操作を促す
- });
-
-
- const handleEnded = () => {
- const currentTalktime = talktimesRef.current;
-
- // 終了条件を満たしている場合は停止し、onAudioEndを実行
- if (currentTalktime >= 4) {
- console.log("最終音源の再生が終了しました。onAudioEndを実行します。");
- stop();
- onAudioEnd();
- return;
- }
-
- // ループがtrueの場合はonendedは呼ばれないはずだが、フォールバックとして再再生を試みる
- if (!audio.loop) {
- console.log(`音源 ${currentTalktime} の再生が終了しました。ループ再生を再開します。`);
- audio.play().catch(e => console.error("Audio playback error on loop restart:", e));
- }
- };
-
- audio.addEventListener('ended', handleEnded);
-
- // コンポーネントがアンマウントされる際のクリーンアップ
- return () => {
- audio.removeEventListener('ended', handleEnded);
- audio.pause();
- // audioRef.current = null; // Audioオブジェクトが再生成されるため、ここではnullにしない
- };
- }, [currentAudioUrl, onAudioEnd, stop, setLoop]); // currentAudioUrlが変わるとAudioオブジェクトが再生成される
-
- // 2. talktimesRef.currentの変更を監視し、音源の切り替えを行う
- useEffect(() => {
- const currentTalktime = talktimesRef.current;
- const newAudioUrl = audioSources[currentTalktime];
-
- console.log("talktimesRef is ", currentTalktime);
-
- if (newAudioUrl && newAudioUrl !== currentAudioUrl) {
- // URLが変わったら、Audioオブジェクトを再生成するためにstateを更新
- // 新しいcurrentAudioUrlで上のuseEffectがトリガーされる
- setCurrentAudioUrl(newAudioUrl);
-
- // 新しい音源に対するループ設定を即座に更新
- const isLooping = currentTalktime < 4;
- setLoop(isLooping);
- } else if (currentTalktime === initialTalktime && audioRef.current) {
- // 初回ロード時のみ、初期音源を再生(ブラウザの制限のため、ユーザー操作後の初回にのみ有効)
- audioRef.current.play().catch(e => console.error("Initial audio playback error:", e));
- }
-
- }, [talktimesRef.current]);
-
- // 外部からの更新用にtalktimesRefと制御関数を返す
- return { talktimesRef, stop, setLoop, currentAudioUrl };
- };
+ // 1. Audioオブジェクトの初期化、再生、および終了イベント処理 (一回限りの再生)
+ useEffect(() => {
+ if (!initialAudioUrl) {
+ console.error("Initial audio URL is missing.");
+ return;
+ }
- const FirstChat: React.FC<StageProps> = ({ onComplete }) => {
- return(
- <ChatPage onComplete={onComplete}/>
- )
- };
+ // 既存の音源を停止
+ stop();
- export default FirstChat;
+ const audio = new Audio(initialAudioUrl);
+ audioRef.current = audio;
+ audio.loop = false; // ループはしない
- const AUDIO_SOURCES: Record<number, string> = {
- 1: '/audio/001.wav',
- 2: '/audio/002.wav',
- 3: '/audio/003.wav',
- 4: '/audio/004.wav',
- // 5以降は終了条件を満たすため、再生する音源は設定不要
- };
+ // 再生終了時のハンドラ: 無条件で onAudioEnd を実行
+ const handleEnded = () => {
+ console.log(
+ "初期音源の再生が終了しました。onAudioEndを実行します。",
+ );
+ stop();
+ onAudioEnd(); // 完了コールバックを実行
+ };
- interface Message {
- id: number;
- text: string;
- sender: 'user' | 'ai';
- }
+ audio.addEventListener("ended", handleEnded);
- const initialMessages: Message[] = [
- { id: 1, text: 'そろそろどうするか決めないとだよ?', sender: 'ai' },
- { id: 2, text: 'はやく話して。', sender:'ai'},
- ];
-
- const MessageBubble: React.FC<{ message: Message }> = ({ message }) => {
- const isUser = message.sender === 'user';
-
- const bubbleStyle: React.CSSProperties = {
- padding: '10px 15px',
- borderRadius: '15px',
- maxWidth: '70%',
- wordBreak: 'break-word',
- fontSize: '16px',
- backgroundColor: isUser ? '#3b82f6' : '#e5e7eb', // blue-500 or gray-200
- color: isUser ? 'white' : '#1f2937', // white or gray-800
- marginLeft: isUser ? 'auto' : '0',
- marginRight: isUser ? '0' : 'auto',
- };
+ // 自動再生の試行 (ユーザーのインタラクションが必要なため、失敗する可能性あり)
+ audio.play().catch((e) => {
+ console.warn(
+ "Audio playback failed initially. Waiting for user interaction.",
+ );
+ });
- const containerStyle: React.CSSProperties = {
- display: 'flex',
- marginBottom: '10px',
- justifyContent: isUser ? 'flex-end' : 'flex-start',
+ // クリーンアップ関数
+ return () => {
+ audio.removeEventListener("ended", handleEnded);
+ audio.pause();
};
-
- return (
- <div style={containerStyle}>
- <div style={bubbleStyle}>
- {message.text}
- </div>
- </div>
- );
+ }, [initialAudioUrl, onAudioEnd, stop]);
+
+ // 外部とのインタフェースは不要になるが、フックの構造を維持
+ return { currentAudioId: initialAudioId };
+};
+// ------------------------------------------------------------------
+// 以下、ChatPage およびその他のコンポーネント
+// ------------------------------------------------------------------
+const FirstChat: React.FC<StageProps> = ({ onComplete }) => {
+ return <ChatPage onComplete={onComplete} />;
+};
+export default FirstChat;
+const AUDIO_SOURCES: Record<number, string> = {
+ 1: "/audio/001.wav", // 再生される音源はこれのみ
+};
+interface Message {
+ id: number;
+ text: string;
+ sender: "user" | "ai";
+}
+const initialMessages: Message[] = [
+ { id: 1, text: "そろそろどうするか決めないとだよ?", sender: "ai" },
+ { id: 2, text: "はやく話して。", sender: "ai" },
+];
+const MessageBubble: React.FC<{ message: Message }> = ({ message }) => {
+ const isUser = message.sender === "user";
+
+ const bubbleStyle: React.CSSProperties = {
+ padding: "10px 15px",
+ borderRadius: "15px",
+ maxWidth: "70%",
+ wordBreak: "break-word",
+ fontSize: "16px",
+ backgroundColor: isUser ? "#3b82f6" : "#e5e7eb", // blue-500 or gray-200
+ color: isUser ? "white" : "#1f2937", // white or gray-800
+ marginLeft: isUser ? "auto" : "0",
+ marginRight: isUser ? "0" : "auto",
};
- const MessageInput: React.FC<{ onSend: (text: string) => void }> = ({ onSend }) => {
- const [input, setInput] = useState('');
+ const containerStyle: React.CSSProperties = {
+ display: "flex",
+ marginBottom: "10px",
+ justifyContent: isUser ? "flex-end" : "flex-start",
+ };
- const handleSend = () => {
- if (input.trim() === '') return;
- onSend(input);
- setInput('');
- };
+ return (
+ <div style={containerStyle}>
+ <div style={bubbleStyle}>
+ {message.text}
+ </div>
+ </div>
+ );
+};
+const MessageInput: React.FC<{ onSend: (text: string) => void }> = (
+ { onSend },
+) => {
+ const [input, setInput] = useState("");
- const handleKeyPress = (e: KeyboardEvent<HTMLInputElement>) => {
- if (e.key === 'Enter') {
- e.preventDefault();
- handleSend();
- }
- };
+ const handleSend = () => {
+ if (input.trim() === "") return;
+ onSend(input);
+ setInput("");
+ };
- const inputStyle: React.CSSProperties = {
- flexGrow: 1,
- padding: '12px',
- border: '1px solid #d1d5db', // gray-300
- borderRadius: '8px',
- marginRight: '10px',
- fontSize: '16px',
- outline: 'none',
- };
+ const handleKeyPress = (e: KeyboardEvent<HTMLInputElement>) => {
+ if (e.key === "Enter") {
+ e.preventDefault();
+ handleSend();
+ }
+ };
- const buttonStyle: React.CSSProperties = {
- backgroundColor: '#3b82f6', // blue-500
- color: 'white',
- border: 'none',
- padding: '12px 20px',
- borderRadius: '8px',
- cursor: 'pointer',
- fontWeight: 'bold',
- };
+ const inputStyle: React.CSSProperties = {
+ flexGrow: 1,
+ padding: "12px",
+ border: "1px solid #d1d5db", // gray-300
+ borderRadius: "8px",
+ marginRight: "10px",
+ fontSize: "16px",
+ outline: "none",
+ };
+ const buttonStyle: React.CSSProperties = {
+ backgroundColor: "#3b82f6", // blue-500
+ color: "white",
+ border: "none",
+ padding: "12px 20px",
+ borderRadius: "8px",
+ cursor: "pointer",
+ fontWeight: "bold",
+ };
- return (
- <div style={{ padding: '15px', backgroundColor: '#f9fafb', display: 'flex', alignItems: 'center' }}>
+ return (
+ <div
+ style={{
+ padding: "15px",
+ backgroundColor: "#f9fafb",
+ display: "flex",
+ alignItems: "center",
+ }}
+ >
<input
- type="text"
- style={inputStyle}
- placeholder="メッセージを入力してください..."
- value={input}
- onChange={(e) => setInput(e.target.value)}
- onKeyDown={handleKeyPress}
+ type="text"
+ style={inputStyle}
+ placeholder="メッセージを入力してください..."
+ value={input}
+ onChange={(e) => setInput(e.target.value)}
+ onKeyDown={handleKeyPress}
/>
<button
- type='submit'
- style={buttonStyle}
- onClick={handleSend}
- disabled={input.trim() === ''}
+ type="submit"
+ style={buttonStyle}
+ onClick={handleSend}
+ disabled={input.trim() === ""}
>
- 送信
+ 送信
</button>
- </div>
- );
- };
-
- function ChatPage({onComplete}:StageProps) {
- const [messages, setMessages] = useState<Message[]>(initialMessages);
- const [ dict, setDict ] = useState<Uint8Array|undefined>(undefined);
- const messagesEndRef = useRef<HTMLDivElement>(null);
- const dictPath = '/system.dic.zst';
-
- // for audio
- const { talktimesRef } = useAudioPlayback(
- 1, // initialTalktime
- AUDIO_SOURCES,
- onComplete
- );
-
- useEffect(() => {
- messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });
- }, [messages]);
-
- useEffect(() => {
- const loadData = async () => {
- const loadedDict = await LoadDict(dictPath);
- setDict(loadedDict);
- }
- loadData();
- }, []);
-
- useEffect(() => {
- init();
- }, []);
-
- const handleSendMessage = useCallback(async (text: string) => {
- if (text.trim() === '') return;
-
- const newUserMessage: Message = {
- id: Date.now(),
- text,
- sender: 'user',
- };
- setMessages((prev) => [...prev, newUserMessage]);
- let ans = dict == undefined ? 'もっとマシなことを言いなさい。' : chat(dict, text);
- if(messages[messages.length - 1].text === ans){
- ans = 'は?';
- };
- const aiResponse: Message = {
- id: Date.now() + 1,
- text: ans,
- sender: 'ai',
- };
- setMessages((prev) => [...prev, aiResponse]);
-
- talktimesRef.current += 1;
-
- // termination condition
- if(talktimesRef.current >= 4){
- return;
- }
-
- }, [dict, talktimesRef ]);
-
- const pageContainerStyle: React.CSSProperties = {
- display: 'flex',
- flexDirection: 'column',
- height: '100vh', // 全画面の高さ
- maxWidth: '800px', // 最大幅を制限して中央に寄せる
- margin: '0 auto',
- backgroundColor: 'white',
- boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)',
- };
-
- const headerStyle: React.CSSProperties = {
- padding: '15px',
- backgroundColor: '#3b82f6', // blue-500
- color: 'white',
- textAlign: 'center',
- fontWeight: 'bold',
- fontSize: '20px',
+ </div>
+ );
+};
+function ChatPage({ onComplete }: StageProps) {
+ const [messages, setMessages] = useState<Message[]>(initialMessages);
+ const [dict, setDict] = useState<Uint8Array | undefined>(undefined);
+ const messagesEndRef = useRef<HTMLDivElement>(null);
+ const dictPath = "/system.dic.zst";
+
+ // for audio: 最初の音源を再生し、終了したら onComplete を呼ぶ
+ const { currentAudioId } = useAudioPlayback(
+ 1, // initialAudioId (最初の音源ID)
+ AUDIO_SOURCES,
+ onComplete,
+ );
+
+ // **注**: talktime の状態は会話継続の要件から削除しました。
+
+ useEffect(() => {
+ messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
+ }, [messages]);
+
+ useEffect(() => {
+ const loadData = async () => {
+ const loadedDict = await LoadDict(dictPath);
+ setDict(loadedDict);
};
+ loadData();
+ }, []);
- const messageListStyle: React.CSSProperties = {
- flexGrow: 1, // 残りのスペースをすべて占める
- padding: '15px',
- overflowY: 'auto', // スクロール可能にする
- };
+ useEffect(() => {
+ init();
+ }, []);
- // for audio
+ const handleSendMessage = useCallback(async (text: string) => {
+ if (text.trim() === "") return;
- useEffect(() => {
- messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });
- }, [messages]);
+ const newUserMessage: Message = {
+ id: Date.now(),
+ text,
+ sender: "user",
+ };
+ setMessages((prev) => [...prev, newUserMessage]);
- useEffect(() => {
- const loadData = async () => {
- const loadedDict = await LoadDict(dictPath);
- setDict(loadedDict);
- }
- loadData();
- }, []);
+ let ans = dict == undefined
+ ? "もっとマシなことを言いなさい。"
+ : chat(dict, text);
+ if (messages[messages.length - 1].text === ans) {
+ ans = "は?";
+ }
+ const aiResponse: Message = {
+ id: Date.now() + 1,
+ text: ans,
+ sender: "ai",
+ };
+ setMessages((prev) => [...prev, aiResponse]);
+
+ // **修正**: talktime のインクリメントと終了条件を削除。会話は継続します。
+ }, [dict, messages]); // 依存配列から talktimeState を削除
+
+ const pageContainerStyle: React.CSSProperties = {
+ display: "flex",
+ flexDirection: "column",
+ height: "100vh",
+ maxWidth: "800px",
+ margin: "0 auto",
+ backgroundColor: "white",
+ boxShadow:
+ "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)",
+ };
- useEffect(() => {
- init();
- }, []);
+ const headerStyle: React.CSSProperties = {
+ padding: "15px",
+ backgroundColor: "#3b82f6",
+ color: "white",
+ textAlign: "center",
+ fontWeight: "bold",
+ fontSize: "20px",
+ };
- // function ChatPage's return
+ const messageListStyle: React.CSSProperties = {
+ flexGrow: 1,
+ padding: "15px",
+ overflowY: "auto",
+ };
- return (
- <div style={pageContainerStyle}>
+ return (
+ <div style={pageContainerStyle}>
<div style={headerStyle}>
- チャット
+ チャット
</div>
<div style={messageListStyle}>
- {messages.map((msg) => (
- <MessageBubble key={msg.id} message={msg} />
- ))}
- <div ref={messagesEndRef} />
+ {messages.map((msg) => (
+ <MessageBubble key={msg.id} message={msg} />
+ ))}
+ <div ref={messagesEndRef} />
</div>
<MessageInput onSend={handleSendMessage} />
- </div>
- );
- }
-
- async function LoadDict(dictPath: string): Promise<Uint8Array> {
- try{
- const response = await fetch(dictPath);
- if(!response.ok){
- throw new Error(`fail to fetch file: ${response.statusText}`);
- }
- const arrayBuffer = await response.arrayBuffer();
- const byte = new Uint8Array(arrayBuffer);
- return byte;
- } catch (error) {
- console.log("error occur",error);
+ </div>
+ );
+}
+async function LoadDict(dictPath: string): Promise<Uint8Array> {
+ try {
+ const response = await fetch(dictPath);
+ if (!response.ok) {
+ throw new Error(`fail to fetch file: ${response.statusText}`);
}
- return new Uint8Array(0);
+ const arrayBuffer = await response.arrayBuffer();
+ const byte = new Uint8Array(arrayBuffer);
+ return byte;
+ } catch (error) {
+ console.log("error occur", error);
}
+ return new Uint8Array(0);
+}
diff --git a/app/components/2_draw.tsx b/app/components/2_draw.tsx
@@ -1,264 +1,249 @@
-'use client'
-
-import React, { useState, useRef, useCallback, useEffect } from 'react';
-import init, { find_nearest_point_on_path, NearestPointResult } from '../../rust-wasm/pkg/rust_wasm.js';
-import { StageProps } from '../ctrl/page.tsx';
-
-type Tool = 'pen';
-type Point = { x: number; y: number; };
-
+"use client";
+import React, { useCallback, useEffect, useRef, useState } from "react";
+import init, {
+ find_nearest_point_on_path,
+ NearestPointResult,
+} from "../../rust-wasm/pkg/rust_wasm.js";
+import { StageProps } from "../ctrl/page.tsx";
+type Tool = "pen";
+type Point = { x: number; y: number };
interface LineData {
id: number;
tool: Tool;
- points: Point[];
- targetPoints: Point[];
+ points: Point[];
+ targetPoints: Point[];
}
-
-const BACKGROUND_SVG_PATH_D_DEFAULT = "";
-const VIEWSBOX_SIZE = 500;
-const SNAPPING_DISTANCE_PIXELS = 30;
-
-const AUDIO_SOURCE = '/audio/001.wav';
-
-export default function DrawingApp({onComplete}: StageProps) {
+const BACKGROUND_SVG_PATH_D_DEFAULT = "";
+const VIEWSBOX_SIZE = 500;
+const SNAPPING_DISTANCE_PIXELS = 30;
+const AUDIO_SOURCE = "/audio/001.wav";
+export default function DrawingApp({ onComplete }: StageProps) {
const [isClient, setIsClient] = useState(false);
const lineIdCounter = useRef(0);
- const [lines, setLines] = useState<LineData[]>([]);
- const [currentLines, setCurrentLines] = useState<LineData[]>([]);
-
+ const [lines, setLines] = useState<LineData[]>([]);
+ const [currentLines, setCurrentLines] = useState<LineData[]>([]);
const [stageWidth, setStageWidth] = useState(0);
const [stageHeight, setStageHeight] = useState(0);
- const [backgroundPathD, setBackgroundPathD] = useState(BACKGROUND_SVG_PATH_D_DEFAULT);
- const [viewBoxSize, setViewBoxSize] = useState(VIEWSBOX_SIZE);
-
+ const [backgroundPathD, setBackgroundPathD] = useState(
+ BACKGROUND_SVG_PATH_D_DEFAULT,
+ );
+ const [viewBoxSize, setViewBoxSize] = useState(VIEWSBOX_SIZE);
const isDrawing = useRef(false);
-
const animationRef = useRef<number>(0);
- const startTimeRef = useRef<number|undefined>(undefined);
-
+ const startTimeRef = useRef<number | undefined>(undefined);
const stageRef = useRef<HTMLDivElement>(null);
-
useEffect(() => {
init();
- },[])
-
+ }, []);
// --- 1. サイズ計算とステージ設定 (画面全体を使用) ---
useEffect(() => {
setIsClient(true);
-
const handleResize = () => {
- if (typeof globalThis !== 'undefined') {
+ if (typeof globalThis !== "undefined") {
setStageWidth(globalThis.innerWidth);
setStageHeight(globalThis.innerHeight);
}
};
-
handleResize();
- globalThis.addEventListener('resize', handleResize);
-
+ globalThis.addEventListener("resize", handleResize);
return () => {
- globalThis.removeEventListener('resize', handleResize);
+ globalThis.removeEventListener("resize", handleResize);
};
}, []);
-
// --- 2. 座標変換ユーティリティ ---
-
const scaleToViewBox = useCallback((p: Point): Point => {
if (stageWidth === 0 || stageHeight === 0) return p;
-
const effectiveSize = Math.min(stageWidth, stageHeight);
const scale = viewBoxSize / effectiveSize;
-
const offsetX = (stageWidth - effectiveSize) / 2;
const offsetY = (stageHeight - effectiveSize) / 2;
-
return {
x: (p.x - offsetX) * scale,
y: (p.y - offsetY) * scale,
};
}, [stageWidth, stageHeight, viewBoxSize]);
-
const scaleToScreen = useCallback((p: Point): Point => {
if (stageWidth === 0 || stageHeight === 0) return p;
-
const effectiveSize = Math.min(stageWidth, stageHeight);
const scale = effectiveSize / viewBoxSize;
-
const offsetX = (stageWidth - effectiveSize) / 2;
const offsetY = (stageHeight - effectiveSize) / 2;
-
return {
x: p.x * scale + offsetX,
y: p.y * scale + offsetY,
};
}, [stageWidth, stageHeight, viewBoxSize]);
+ const getPointerPosition = useCallback(
+ (
+ e: React.MouseEvent | React.TouchEvent | MouseEvent | TouchEvent,
+ ): Point | null => {
+ if (!stageRef.current) return null;
+ const rect = stageRef.current.getBoundingClientRect();
+ let clientX: number, clientY: number;
+ if ("touches" in e) {
+ if (e.touches.length === 0) return null;
+ clientX = e.touches[0].clientX;
+ clientY = e.touches[0].clientY;
+ } else {
+ clientX = e.clientX;
+ clientY = e.clientY;
+ }
- const getPointerPosition = useCallback((e: React.MouseEvent | React.TouchEvent | MouseEvent | TouchEvent): Point | null => {
- if (!stageRef.current) return null;
- const rect = stageRef.current.getBoundingClientRect();
-
- let clientX: number, clientY: number;
- if ('touches' in e) {
- if (e.touches.length === 0) return null;
- clientX = e.touches[0].clientX;
- clientY = e.touches[0].clientY;
- } else {
- clientX = e.clientX;
- clientY = e.clientY;
- }
-
- return { x: clientX - rect.left, y: clientY - rect.top };
- }, []);
-
+ return { x: clientX - rect.left, y: clientY - rect.top };
+ },
+ [],
+ );
// --- 3. SVGコンテンツの取得ロジック (DOMParser) ---
useEffect(() => {
const fetchAndParseSvg = async () => {
try {
- const response = await fetch('/whiteperson.svg');
+ const response = await fetch("/whiteperson.svg");
const svgText = await response.text();
-
const parser = new DOMParser();
const doc = parser.parseFromString(svgText, "image/svg+xml");
-
- const svgElement = doc.querySelector('svg');
+ const svgElement = doc.querySelector("svg");
if (svgElement) {
- const viewBoxAttr = svgElement.getAttribute('viewBox');
+ const viewBoxAttr = svgElement.getAttribute("viewBox");
if (viewBoxAttr) {
const parts = viewBoxAttr.trim().split(/\s+/);
if (parts.length === 4) {
- const size = Math.max(parseFloat(parts[2]), parseFloat(parts[3]));
+ const size = Math.max(
+ parseFloat(parts[2]),
+ parseFloat(parts[3]),
+ );
if (!isNaN(size) && size > 0) {
setViewBoxSize(size);
}
}
}
}
-
- const pathElements = doc.querySelectorAll('path');
+ const pathElements = doc.querySelectorAll("path");
let foundDValue = null;
-
for (const element of Array.from(pathElements)) {
- const dValue = element.getAttribute('d');
+ const dValue = element.getAttribute("d");
if (dValue && dValue.trim().length > 0) {
foundDValue = dValue;
- break;
+ break;
}
}
-
if (foundDValue) {
setBackgroundPathD(foundDValue);
- return;
+ return;
}
-
- console.error("Error: <path> element or 'd' attribute not found in whiteperson.svg.");
-
+ console.error(
+ "Error: <path> element or 'd' attribute not found in whiteperson.svg.",
+ );
} catch (error) {
- console.error("Failed to load or parse whiteperson.svg:", error);
+ console.error(
+ "Failed to load or parse whiteperson.svg:",
+ error,
+ );
}
};
-
- if (isClient && backgroundPathD === "") {
+ if (isClient && backgroundPathD === "") {
fetchAndParseSvg();
}
}, [isClient, backgroundPathD]);
-
-
// --- 4. 吸着ロジック (WASM呼び出し) ---
const calculateNearestTargetPoint = useCallback((p: Point): Point => {
const p_viewbox = scaleToViewBox(p);
-
const effectiveSize = Math.min(stageWidth, stageHeight);
- const snapping_distance_viewbox = SNAPPING_DISTANCE_PIXELS * (viewBoxSize / effectiveSize);
-
+ const snapping_distance_viewbox = SNAPPING_DISTANCE_PIXELS *
+ (viewBoxSize / effectiveSize);
// ⚠️ WASM呼び出し
- const nearest_viewbox: NearestPointResult | undefined = find_nearest_point_on_path(
- backgroundPathD,
- p_viewbox.x,
- p_viewbox.y,
- snapping_distance_viewbox
- );
- console.log("nearest_viewbox is ",nearest_viewbox);
-
+ const nearest_viewbox: NearestPointResult | undefined =
+ find_nearest_point_on_path(
+ backgroundPathD,
+ p_viewbox.x,
+ p_viewbox.y,
+ snapping_distance_viewbox,
+ );
+ console.log("nearest_viewbox is ", nearest_viewbox);
if (nearest_viewbox) {
return scaleToScreen(nearest_viewbox);
}
- return p;
- }, [scaleToViewBox, scaleToScreen, stageWidth, stageHeight, viewBoxSize, backgroundPathD]);
-
+ return p;
+ }, [
+ scaleToViewBox,
+ scaleToScreen,
+ stageWidth,
+ stageHeight,
+ viewBoxSize,
+ backgroundPathD,
+ ]);
const calculateTargetPoints = useCallback((points: Point[]): Point[] => {
- return points.map(p => calculateNearestTargetPoint(p));
+ return points.map((p) => calculateNearestTargetPoint(p));
}, [calculateNearestTargetPoint]);
-
-
// --- 5. イベントハンドラ (吹き飛んでいた部分を再定義) ---
-
/**
* マウス・タッチ開始時の処理
*/
- const handleMouseDown = useCallback((e: React.MouseEvent | React.TouchEvent) => {
- isDrawing.current = true;
- const pos = getPointerPosition(e);
- if (pos) {
- lineIdCounter.current += 1;
- const newLine: LineData = { id: lineIdCounter.current, tool: 'pen', points: [pos], targetPoints: [] };
- setLines(prev => [...prev, newLine]);
- setCurrentLines(prev => [...prev, newLine]);
- }
- }, [getPointerPosition]);
-
+ const handleMouseDown = useCallback(
+ (e: React.MouseEvent | React.TouchEvent) => {
+ isDrawing.current = true;
+ const pos = getPointerPosition(e);
+ if (pos) {
+ lineIdCounter.current += 1;
+ const newLine: LineData = {
+ id: lineIdCounter.current,
+ tool: "pen",
+ points: [pos],
+ targetPoints: [],
+ };
+ setLines((prev) => [...prev, newLine]);
+ setCurrentLines((prev) => [...prev, newLine]);
+ }
+ },
+ [getPointerPosition],
+ );
/**
* マウス・タッチ移動時の処理
*/
- const handleMouseMove = useCallback((e: React.MouseEvent | React.TouchEvent) => {
- if (!isDrawing.current) return;
- const point = getPointerPosition(e);
- if (!point) return;
-
- const updateLines = (prevLines: LineData[]) => {
- const lastLineIndex = prevLines.length - 1;
- if (lastLineIndex < 0) return prevLines;
- const lastLine = prevLines[lastLineIndex];
- const newPoints: Point[] = [...lastLine.points, point];
- return [...prevLines.slice(0, lastLineIndex), { ...lastLine, points: newPoints }];
- };
-
- setLines(updateLines);
- setCurrentLines(updateLines);
-
- }, [getPointerPosition]);
-
+ const handleMouseMove = useCallback(
+ (e: React.MouseEvent | React.TouchEvent) => {
+ if (!isDrawing.current) return;
+ const point = getPointerPosition(e);
+ if (!point) return;
+ const updateLines = (prevLines: LineData[]) => {
+ const lastLineIndex = prevLines.length - 1;
+ if (lastLineIndex < 0) return prevLines;
+ const lastLine = prevLines[lastLineIndex];
+ const newPoints: Point[] = [...lastLine.points, point];
+ return [...prevLines.slice(0, lastLineIndex), {
+ ...lastLine,
+ points: newPoints,
+ }];
+ };
+ setLines(updateLines);
+ setCurrentLines(updateLines);
+ },
+ [getPointerPosition],
+ );
/**
* マウス・タッチ終了時の処理
*/
const handleMouseUp = useCallback(() => {
isDrawing.current = false;
-
setLines((prevLines) => {
const lastLineIndex = prevLines.length - 1;
if (lastLineIndex < 0) return prevLines;
const lastLine = prevLines[lastLineIndex];
-
const targetPoints = calculateTargetPoints(lastLine.points);
-
const newLine: LineData = {
...lastLine,
- targetPoints: targetPoints,
+ targetPoints: targetPoints,
};
return [...prevLines.slice(0, lastLineIndex), newLine];
});
}, [calculateTargetPoints]);
-
// --- 6. アニメーションロジック (変更なし) ---
-
const animateLines = useCallback((timestamp: number) => {
if (!startTimeRef.current) startTimeRef.current = timestamp;
const elapsed = timestamp - startTimeRef.current;
- const duration = 1500;
+ const duration = 1500;
const progress = Math.min(1, elapsed / duration);
-
const newCurrentLines: LineData[] = lines.map((line) => {
if (line.targetPoints.length === 0) return line;
-
const newPoints: Point[] = line.points.map((originalP, index) => {
const targetP = line.targetPoints[index];
return {
@@ -266,144 +251,130 @@ export default function DrawingApp({onComplete}: StageProps) {
y: originalP.y + (targetP.y - originalP.y) * progress,
};
});
-
return { ...line, points: newPoints };
});
-
setCurrentLines(newCurrentLines);
-
if (progress < 1) {
animationRef.current = requestAnimationFrame(animateLines);
} else {
startTimeRef.current = undefined;
- setLines(newCurrentLines.map(line => ({
- ...line,
- points: line.targetPoints,
- targetPoints: []
- })));
+ setLines(newCurrentLines.map((line) => ({
+ ...line,
+ points: line.targetPoints,
+ targetPoints: [],
+ })));
}
}, [lines]);
-
useEffect(() => {
const lastLine = lines[lines.length - 1];
- if (lastLine?.targetPoints.length > 0 && startTimeRef.current === undefined) {
+ if (
+ lastLine?.targetPoints.length > 0 &&
+ startTimeRef.current === undefined
+ ) {
startTimeRef.current = undefined;
animationRef.current = requestAnimationFrame(animateLines);
}
-
return () => {
if (animationRef.current) {
cancelAnimationFrame(animationRef.current);
}
};
}, [lines, animateLines]);
-
-
const pointsToSvgString = (points: Point[]): string => {
- return points.map(p => `${p.x},${p.y}`).join(' ');
+ return points.map((p) => `${p.x},${p.y}`).join(" ");
};
-
// for audio
const audioRef = useRef<HTMLAudioElement | null>(null);
-
- useEffect(() => {
- init();
- },[])
-
useEffect(() => {
const audio = new Audio(AUDIO_SOURCE);
audioRef.current = audio;
-
const handleAudioEnded = () => {
console.log("Audio playback finished. Calling onComplete.");
onComplete();
};
-
- audio.addEventListener('ended', handleAudioEnded);
-
+ audio.addEventListener("ended", handleAudioEnded);
// ユーザーインタラクションの直後に再生を開始
// コンポーネントがロードされただけではブラウザの制限で再生できないため、
// ユーザーの最初の描画操作をトリガーとして再生を開始するのがより安全ですが、
// 今回はシンプルにロード時に再生を試みます。
const playAudio = () => {
- audio.play().catch(e => console.log("Audio playback failed (may require user interaction):", e));
+ audio.play().catch((e) =>
+ console.log(
+ "Audio playback failed (may require user interaction):",
+ e,
+ )
+ );
};
-
// ロード完了を待って再生を試みる
audio.oncanplaythrough = playAudio;
-
// アンマウント時のクリーンアップ
return () => {
audio.pause();
- audio.removeEventListener('ended', handleAudioEnded);
+ audio.removeEventListener("ended", handleAudioEnded);
audioRef.current = null;
};
- }, [onComplete]);
-
+ }, []);
return (
<div
- ref={stageRef}
- style={{
- width: stageWidth,
- height: stageHeight,
- margin: 0,
- position: 'fixed',
- top: 0,
- left: 0,
- overflow: 'hidden',
- touchAction: 'none',
- }}
- onMouseDown={handleMouseDown}
- onMouseMove={handleMouseMove}
- onMouseUp={handleMouseUp}
- onTouchStart={handleMouseDown}
- onTouchMove={handleMouseMove}
- onTouchEnd={handleMouseUp}
+ ref={stageRef}
+ style={{
+ width: stageWidth,
+ height: stageHeight,
+ margin: 0,
+ position: "fixed",
+ top: 0,
+ left: 0,
+ overflow: "hidden",
+ touchAction: "none",
+ }}
+ onMouseDown={handleMouseDown}
+ onMouseMove={handleMouseMove}
+ onMouseUp={handleMouseUp}
+ onTouchStart={handleMouseDown}
+ onTouchMove={handleMouseMove}
+ onTouchEnd={handleMouseUp}
>
- {/* 1. 背景のSVG (模倣対象) */}
- {backgroundPathD && (
- <svg
- width={stageWidth}
- height={stageHeight}
- viewBox={`0 0 ${viewBoxSize} ${viewBoxSize}`}
- style={{ position: 'absolute' }}
- preserveAspectRatio="xMidYMid meet"
+ {/* 1. 背景のSVG (模倣対象) */}
+ {backgroundPathD && (
+ <svg
+ width={stageWidth}
+ height={stageHeight}
+ viewBox={`0 0 ${viewBoxSize} ${viewBoxSize}`}
+ style={{ position: "absolute" }}
+ preserveAspectRatio="xMidYMid meet"
+ >
+ <path
+ d={backgroundPathD}
+ fill="none"
+ stroke="white"
+ strokeWidth="5"
+ opacity="0.2"
+ />
+ </svg>
+ )}
+
+ {/* 2. ユーザーの描画 (アニメーション表示用) */}
+ <svg
+ width={stageWidth}
+ height={stageHeight}
+ viewBox={`0 0 ${viewBoxSize} ${viewBoxSize}`}
+ style={{ position: "absolute", top: 0, left: 0 }}
+ preserveAspectRatio="xMidYMid meet"
>
- <path
- d={backgroundPathD}
- fill="none"
- stroke="white"
- strokeWidth="5"
- opacity="0.2"
- />
+ {currentLines.map((line) => (
+ <polyline
+ key={line.id}
+ points={pointsToSvgString(
+ line.points.map(scaleToViewBox),
+ )}
+ fill="none"
+ stroke="#FF4500"
+ strokeWidth="3"
+ strokeLinecap="round"
+ strokeLinejoin="round"
+ />
+ ))}
</svg>
- )}
-
- {/* 2. ユーザーの描画 (アニメーション表示用) */}
- <svg width={stageWidth} height={stageHeight} viewBox={`0 0 ${viewBoxSize} ${viewBoxSize}`} style={{ position: 'absolute', top: 0, left: 0 }}
- preserveAspectRatio="xMidYMid meet"
- >
- {currentLines.map((line) => (
- <polyline
- key={line.id}
- points={pointsToSvgString(line.points.map(scaleToViewBox))}
- fill="none"
- stroke="#FF4500"
- strokeWidth="3"
- strokeLinecap="round"
- strokeLinejoin="round"
- />
- ))}
- </svg>
-
- <button
- type="submit"
- onClick={onComplete}
- style={{ position: 'fixed', bottom: 10, left: 10 }}
- >
- 完了 (onComplete)
- </button>
</div>
);
}
-
diff --git a/app/components/6_chat.tsx b/app/components/6_chat.tsx
@@ -1,356 +1,214 @@
-'use client';
-
-import React, { useState, useRef, useEffect, KeyboardEvent, useCallback } from 'react';
-import { StageProps } from '../ctrl/page.tsx';
-import init, { chat2 } from '../../rust-wasm/pkg/rust_wasm.js';
-
-// useWebAudioControllerの代替となるカスタムフックを定義
-const useAudioPlayback = (
- initialTalktime: number,
- audioSources: Record<number, string>,
- onAudioEnd: () => void,
-) => {
- // Audioオブジェクトの参照を保持
+import React, {
+ forwardRef,
+ KeyboardEvent,
+ useEffect,
+ useImperativeHandle,
+ useRef,
+ useState,
+} from "react";
+// 質問データ型を拡張し、音源のURLを追加
+export type QuestionWithAudio = {
+ input: string; // 質問文
+ ans: string; // 正しい回答
+ audioUrl: string; // 質問に関連付けられた音源のURL
+};
+// 親コンポーネントからアクセスするためのRef型
+export interface QuestionAnswerRef {
+ // 外部からの操作は不要なため空のまま
+}
+interface QuestionAnswerProps {
+ questions: QuestionWithAudio[];
+ onComplete: () => void; // 全質問完了時のコールバック
+}
+const QuestionAnswer = forwardRef<QuestionAnswerRef, QuestionAnswerProps>(
+ ({ questions, onComplete }, ref) => {
+ // 現在の質問のインデックス
+ const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0);
+ // ユーザーの現在の回答
+ const [currentAnswer, setCurrentAnswer] = useState("");
+ // エラーメッセージ
+ const [errorMessage, setErrorMessage] = useState("");
+ // Audioオブジェクトのインスタンスを保持するためのRef
const audioRef = useRef<HTMLAudioElement | null>(null);
- // 現在のトークタイムを保持し、変更を監視するためのState
- const talktimesRef = useRef(initialTalktime);
- const [currentAudioUrl, setCurrentAudioUrl] = useState(audioSources[initialTalktime] || '');
- // 外部から再生を停止するための関数
- const stop = useCallback(() => {
- if (audioRef.current) {
- audioRef.current.pause();
- audioRef.current.currentTime = 0; // 最初に戻す
- }
- }, []);
+ // **注**: 最新のステートを参照するためのRefは、回答完了時の複雑なロジックを削除するため、ここでは不要になりますが、
+ // 回答ロジックのシンプルな遷移のために、念のため残しておきます。
+ const latestStateRef = useRef({
+ answerLength: 0,
+ questionIndex: 0,
+ isAnswerComplete: false,
+ });
- // 外部からループ設定を変更するための関数(AudioRefのcurrentが更新されるたびに適用される)
- const setLoop = useCallback((isLooping: boolean) => {
- // audioRef.currentが存在する場合にのみ設定を試みる
- if (audioRef.current) {
- audioRef.current.loop = isLooping;
- }
- }, []); // 依存配列は空でOK
+ const currentQuestion = questions[currentQuestionIndex];
- // 1. Audioオブジェクトの初期化、クリーンアップ、および終了イベント処理
- useEffect(() => {
- // 古い音源を停止
- stop();
-
- const audio = new Audio(currentAudioUrl);
- audioRef.current = audio;
- audio.volume = 0.5; // 必要に応じて音量を設定
+ if (!currentQuestion) {
+ return <div className="p-4">🎉 すべての質問が完了しました!</div>;
+ }
- // 常に最新のtalktimesRef.currentに基づいてループ設定
- const isLooping = talktimesRef.current < 4;
- audio.loop = isLooping;
- setLoop(isLooping); // 念のため
+ const { input: questionText, ans: correctAnswer, audioUrl } =
+ currentQuestion;
+ const nextCorrectKey = correctAnswer[currentAnswer.length];
- // 自動再生の試行 (ユーザーのインタラクションが必要なため、失敗する可能性あり)
- audio.play().catch(e => {
- console.error("Audio playback error on URL change/init:", e);
- // ユーザーのインタラクションがない場合は再生できないため、ここではエラーを無視するか、ユーザーに操作を促す
- });
+ // ステートが更新されるたびにRefを更新する (回答完了判定には使わない)
+ useEffect(() => {
+ latestStateRef.current = {
+ answerLength: currentAnswer.length,
+ questionIndex: currentQuestionIndex,
+ isAnswerComplete: currentAnswer.length === correctAnswer.length,
+ };
+ }, [currentAnswer.length, currentQuestionIndex, correctAnswer.length]);
+ // Refから親コンポーネントに公開するメソッド(今回はnextQuestionの外部からの使用は非推奨)
+ useImperativeHandle(ref, () => ({
+ // ここでは何もしない
+ }));
- const handleEnded = () => {
- const currentTalktime = talktimesRef.current;
+ // 質問インデックスが変更されたとき、またはコンポーネントがマウントされたときに音源をロード/再生
+ useEffect(() => {
+ // 既存のAudioがあれば、onendedリスナーを解除して停止
+ if (audioRef.current) {
+ audioRef.current.pause();
+ audioRef.current.currentTime = 0;
+ audioRef.current.onended = null;
+ }
- // 終了条件を満たしている場合は停止し、onAudioEndを実行
- if (currentTalktime >= 4) {
- console.log("最終音源の再生が終了しました。onAudioEndを実行します。");
- stop();
- onAudioEnd();
- return;
- }
+ // 新しいAudioオブジェクトを作成または既存のものを使用
+ const audio = audioRef.current || new Audio();
+ audioRef.current = audio;
- // ループがtrueの場合はonendedは呼ばれないはずだが、フォールバックとして再再生を試みる
- if (!audio.loop) {
- console.log(`音源 ${currentTalktime} の再生が終了しました。ループ再生を再開します。`);
- audio.play().catch(e => console.error("Audio playback error on loop restart:", e));
+ // 新しい音源をロード
+ audio.src = audioUrl;
+ audio.load();
+
+ // 再生終了時のハンドラ: 無条件に次の質問へ強制移行するロジックに変更
+ audio.onended = (event: Event) => {
+ // 再生終了時の最新の質問インデックスを取得
+ const currentQuestionIdx = latestStateRef.current.questionIndex;
+ const nextIndex = currentQuestionIdx + 1;
+
+ if (nextIndex < questions.length) {
+ // 次の質問へ (音源再生終了を待って強制的に移行)
+ setCurrentQuestionIndex(nextIndex);
+ setCurrentAnswer("");
+ setErrorMessage("");
+ } else {
+ // 最後の質問の音源再生終了後、onCompleteを実行して終了
+ onComplete();
}
};
- audio.addEventListener('ended', handleEnded);
+ // 新しい音源の再生を開始
+ audio.play().catch((e) =>
+ console.error("Audio playback failed on initial play:", e)
+ );
- // コンポーネントがアンマウントされる際のクリーンアップ
+ // クリーンアップ関数
return () => {
- audio.removeEventListener('ended', handleEnded);
- audio.pause();
- // audioRef.current = null; // Audioオブジェクトが再生成されるため、ここではnullにしない
+ if (audioRef.current) {
+ audioRef.current.onended = null;
+ audioRef.current.pause();
+ }
};
- }, [currentAudioUrl, onAudioEnd, stop, setLoop]); // currentAudioUrlが変わるとAudioオブジェクトが再生成される
-
- // 2. talktimesRef.currentの変更を監視し、音源の切り替えを行う
- useEffect(() => {
- const currentTalktime = talktimesRef.current;
- const newAudioUrl = audioSources[currentTalktime];
-
- console.log("talktimesRef is ", currentTalktime);
-
- if (newAudioUrl && newAudioUrl !== currentAudioUrl) {
- // URLが変わったら、Audioオブジェクトを再生成するためにstateを更新
- // 新しいcurrentAudioUrlで上のuseEffectがトリガーされる
- setCurrentAudioUrl(newAudioUrl);
-
- // 新しい音源に対するループ設定を即座に更新
- const isLooping = currentTalktime < 4;
- setLoop(isLooping);
- } else if (currentTalktime === initialTalktime && audioRef.current) {
- // 初回ロード時のみ、初期音源を再生(ブラウザの制限のため、ユーザー操作後の初回にのみ有効)
- audioRef.current.play().catch(e => console.error("Initial audio playback error:", e));
- }
+ }, [currentQuestionIndex, questions.length, audioUrl]); // 依存配列は音源切り替えに必要なもののみ
- }, [talktimesRef.current]);
-
- // 外部からの更新用にtalktimesRefと制御関数を返す
- return { talktimesRef, stop, setLoop, currentAudioUrl };
- };
-
- const FirstChat: React.FC<StageProps> = ({ onComplete }) => {
- return(
- <ChatPage onComplete={onComplete}/>
- )
- };
-
- export default FirstChat;
-
- const AUDIO_SOURCES: Record<number, string> = {
- 1: '/audio/001.wav',
- 2: '/audio/002.wav',
- 3: '/audio/003.wav',
- 4: '/audio/004.wav',
- // 5以降は終了条件を満たすため、再生する音源は設定不要
- };
-
- interface Message {
- id: number;
- text: string;
- sender: 'user' | 'ai';
- }
-
- const initialMessages: Message[] = [
- { id: 1, text: 'どうせ私のこと、うっさいな死ねよくらいに思ってんでしょ?', sender: 'ai' },
- ];
-
- const MessageBubble: React.FC<{ message: Message }> = ({ message }) => {
- const isUser = message.sender === 'user';
-
- const bubbleStyle: React.CSSProperties = {
- padding: '10px 15px',
- borderRadius: '15px',
- maxWidth: '70%',
- wordBreak: 'break-word',
- fontSize: '16px',
- backgroundColor: isUser ? '#3b82f6' : '#e5e7eb', // blue-500 or gray-200
- color: isUser ? 'white' : '#1f2937', // white or gray-800
- marginLeft: isUser ? 'auto' : '0',
- marginRight: isUser ? '0' : 'auto',
- };
-
- const containerStyle: React.CSSProperties = {
- display: 'flex',
- marginBottom: '10px',
- justifyContent: isUser ? 'flex-end' : 'flex-start',
- };
-
- return (
- <div style={containerStyle}>
- <div style={bubbleStyle}>
- {message.text}
- </div>
- </div>
- );
- };
-
- const MessageInput: React.FC<{ onSend: (text: string) => void }> = ({ onSend }) => {
- const [input, setInput] = useState('');
-
- const handleSend = () => {
- if (input.trim() === '') return;
- onSend(input);
- setInput('');
- };
-
- const handleKeyPress = (e: KeyboardEvent<HTMLInputElement>) => {
- if (e.key === 'Enter') {
+ // キー入力時のハンドラ: 回答ロジックのみを保持し、音源制御は削除
+ const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {
+ // エンターキーなど、特殊なキーのデフォルト動作を防ぐ
+ if (e.key === "Enter") {
e.preventDefault();
- handleSend();
- }
- };
-
- const inputStyle: React.CSSProperties = {
- flexGrow: 1,
- padding: '12px',
- border: '1px solid #d1d5db', // gray-300
- borderRadius: '8px',
- marginRight: '10px',
- fontSize: '16px',
- outline: 'none',
- };
-
- const buttonStyle: React.CSSProperties = {
- backgroundColor: '#3b82f6', // blue-500
- color: 'white',
- border: 'none',
- padding: '12px 20px',
- borderRadius: '8px',
- cursor: 'pointer',
- fontWeight: 'bold',
- };
-
-
- return (
- <div style={{ padding: '15px', backgroundColor: '#f9fafb', display: 'flex', alignItems: 'center' }}>
- <input
- type="text"
- style={inputStyle}
- placeholder="メッセージを入力してください..."
- value={input}
- onChange={(e) => setInput(e.target.value)}
- onKeyDown={handleKeyPress}
- />
- <button
- type='submit'
- style={buttonStyle}
- onClick={handleSend}
- disabled={input.trim() === ''}
- >
- 送信
- </button>
- </div>
- );
- };
-
- function ChatPage({onComplete}:StageProps) {
- const [messages, setMessages] = useState<Message[]>(initialMessages);
- const [ dict, setDict ] = useState<Uint8Array|undefined>(undefined);
- const messagesEndRef = useRef<HTMLDivElement>(null);
- const dictPath = '/system.dic.zst';
-
- // for audio
- const { talktimesRef } = useAudioPlayback(
- 1, // initialTalktime
- AUDIO_SOURCES,
- onComplete
- );
-
- useEffect(() => {
- messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });
- }, [messages]);
-
- useEffect(() => {
- const loadData = async () => {
- const loadedDict = await LoadDict(dictPath);
- setDict(loadedDict);
+ return;
}
- loadData();
- }, []);
-
- useEffect(() => {
- init();
- }, []);
-
- const handleSendMessage = useCallback(async (text: string) => {
- if (text.trim() === '') return;
-
- const newUserMessage: Message = {
- id: Date.now(),
- text,
- sender: 'user',
- };
- setMessages((prev) => [...prev, newUserMessage]);
- const ans = dict == undefined ? 'みんなはもうできてるのに、なんでできないの?' : chat2(dict, text);
- const aiResponse: Message = {
- id: Date.now() + 1,
- text: ans,
- sender: 'ai',
- };
- setMessages((prev) => [...prev, aiResponse]);
-
- talktimesRef.current += 1;
- // termination condition
- if(talktimesRef.current >= 4){
+ // 回答が既に完了している場合は入力を無視
+ if (currentAnswer.length >= correctAnswer.length) {
+ e.preventDefault();
return;
}
- }, [dict, talktimesRef ]);
+ if (e.key === nextCorrectKey) {
+ e.preventDefault(); // デフォルトの入力をキャンセル
+ setErrorMessage(""); // エラーをクリア
- const pageContainerStyle: React.CSSProperties = {
- display: 'flex',
- flexDirection: 'column',
- height: '100vh', // 全画面の高さ
- maxWidth: '800px', // 最大幅を制限して中央に寄せる
- margin: '0 auto',
- backgroundColor: 'white',
- boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)',
- };
+ const newAnswer = currentAnswer + e.key;
+ setCurrentAnswer(newAnswer);
- const headerStyle: React.CSSProperties = {
- padding: '15px',
- backgroundColor: '#3b82f6', // blue-500
- color: 'white',
- textAlign: 'center',
- fontWeight: 'bold',
- fontSize: '20px',
- };
-
- const messageListStyle: React.CSSProperties = {
- flexGrow: 1, // 残りのスペースをすべて占める
- padding: '15px',
- overflowY: 'auto', // スクロール可能にする
- };
-
- // for audio
-
- useEffect(() => {
- messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });
- }, [messages]);
-
- useEffect(() => {
- const loadData = async () => {
- const loadedDict = await LoadDict(dictPath);
- setDict(loadedDict);
+ // 回答完了後も、音源が終了するまで質問は切り替わらない
+ if (newAnswer.length === correctAnswer.length) {
+ // 回答完了時の視覚的な遅延のみを保持 (音源制御は行わない)
+ // *注意*: 音源終了時に自動で次の質問へ進むため、ここでは何もしません
+ }
+ } else {
+ e.preventDefault(); // デフォルトの入力をキャンセル
+ setErrorMessage("🚫 その回答は正しくありません");
}
- loadData();
- }, []);
-
- useEffect(() => {
- init();
- }, []);
-
- // function ChatPage's return
+ };
return (
- <div style={pageContainerStyle}>
- <div style={headerStyle}>
- チャット
- </div>
-
- <div style={messageListStyle}>
- {messages.map((msg) => (
- <MessageBubble key={msg.id} message={msg} />
- ))}
- <div ref={messagesEndRef} />
- </div>
-
- <MessageInput onSend={handleSendMessage} />
+ <div>
+ <p>
+ {questionText}
+ </p>
+
+ <div>
+ <input
+ type="text"
+ value={currentAnswer}
+ onKeyDown={handleKeyDown}
+ readOnly // カスタムロジックで値をセットするため、readonlyにする
+ placeholder={correctAnswer.split("").map(() => "_")
+ .join(" ")}
+ autoFocus // 自動フォーカス
+ />
+ {/* 回答が正しい場合に緑色の枠線を表示 */}
+ {currentAnswer.length === correctAnswer.length && (
+ <span></span>
+ )}
+ </div>
+
+ {errorMessage && (
+ <p>
+ {errorMessage}
+ </p>
+ )}
+
+ <p>
+ (日本語の回答は**ヘボン式ローマ字**のキー入力のみを想定しています)
+ </p>
</div>
);
- }
+ },
+);
+QuestionAnswer.displayName = "QuestionAnswer";
+// ダミーの音源URLを持つ拡張された質問データ
+const myQuestions: QuestionWithAudio[] = [
+ { input: "5 + 9 = ?", ans: "14", audioUrl: "/audio/001.wav" }, // 実際には適切なURLに置き換えてください
+ {
+ input: "東京のローマ字表記は?",
+ ans: "tokyo",
+ audioUrl: "/audio/002.wav",
+ },
+ { input: "Next.jsの親要素は?", ans: "react", audioUrl: "/audio/003.wav" },
+];
+// StagePropsの定義がないため、ここでは仮の定義を使用します
+interface StageProps {
+ onComplete: () => void;
+}
+export default function QuizPage({ onComplete }: StageProps) {
+ const questionAnswerRef = useRef<QuestionAnswerRef>(null);
+
+ const handleQuizComplete = () => {
+ alert("全ての質問に正しく回答しました!お疲れ様でした!");
+ // QuizPageに渡されたonCompleteを実行
+ onComplete();
+ };
- async function LoadDict(dictPath: string): Promise<Uint8Array> {
- try{
- const response = await fetch(dictPath);
- if(!response.ok){
- throw new Error(`fail to fetch file: ${response.statusText}`);
- }
- const arrayBuffer = await response.arrayBuffer();
- const byte = new Uint8Array(arrayBuffer);
- return byte;
- } catch (error) {
- console.log("error occur",error);
- }
- return new Uint8Array(0);
- }
+ return (
+ <div style={{ display: "flex" }}>
+ <QuestionAnswer
+ ref={questionAnswerRef}
+ questions={myQuestions}
+ onComplete={handleQuizComplete}
+ />
+ </div>
+ );
+}
diff --git a/app/components/8_flameText.tsx b/app/components/8_flameText.tsx
@@ -0,0 +1,179 @@
+import React, { useRef } from 'react';
+import { Canvas, useFrame, extend } from '@react-three/fiber';
+import * as THREE from 'three';
+
+// Three.jsのShaderMaterialをR3Fで使えるように拡張
+extend({ ShaderMaterial: THREE.ShaderMaterial });
+
+// ---------------------------------------------------------------- //
+// GLSL シェーダー //
+// ---------------------------------------------------------------- //
+
+// 頂点シェーダー (画面全体を覆う板ポリゴン用)
+const vertexShader = `
+ varying vec2 vUv;
+ void main() {
+ vUv = uv;
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
+ }
+`;
+
+// フラグメントシェーダー (炎と熱ゆらぎの表現)
+// Source: 共通のGLSLノイズ関数と炎のアルゴリズムを簡略化して使用
+const fragmentShader = `
+ uniform float uTime;
+ uniform vec2 uResolution;
+ varying vec2 vUv;
+
+ // 簡略化された擬似ランダムノイズ関数
+ float rand(vec2 n) {
+ return fract(sin(dot(n, vec2(12.9898, 4.1414))) * 43758.5453);
+ }
+
+ // ノイズを重ねて流れを作るFBM関数
+ float noise(vec2 st) {
+ vec2 i = floor(st);
+ vec2 f = fract(st);
+
+ vec2 u = f * f * (3.0 - 2.0 * f);
+
+ float a = rand(i);
+ float b = rand(i + vec2(1.0, 0.0));
+ float c = rand(i + vec2(0.0, 1.0));
+ float d = rand(i + vec2(1.0, 1.0));
+
+ return mix(mix(a, b, u.x), mix(c, d, u.x), u.y);
+ }
+
+ // 炎のテクスチャを生成
+ float fbm(vec2 st) {
+ float v = 0.0;
+ float a = 0.5;
+ vec2 r = mat2(1.5, 0.8, -0.8, 1.5) * st; // 回転とスケールで流れを作る
+ for (int i = 0; i < 4; ++i) { // 4層のノイズを重ねる
+ v += a * noise(st);
+ st *= 2.0;
+ a *= 0.5;
+ st += r;
+ }
+ return v;
+ }
+
+ void main() {
+ // 画面アスペクト比補正 (uv.xが0.0から1.0になるように)
+ vec2 uv = (gl_FragCoord.xy - 0.5 * uResolution.xy) / uResolution.y;
+
+ // 時間によるゆらぎを加えたノイズ
+ float n = fbm(uv * vec2(1.0, 2.0) - vec2(0.0, uTime * 0.3));
+
+ // 炎の形状 (下から上へ)
+ float mask = pow(1.0 - uv.y * 1.5, 3.0); // 下部を明るく、上部を暗く
+ float fire = n * mask * 5.0; // ノイズにマスクをかけ、強度を上げる
+
+ // 熱ゆらぎの表現 (UV座標をノイズで歪ませる)
+ vec2 distortedUv = uv + n * 0.005;
+ float distortion = fbm(distortedUv * 10.0 + uTime * 0.5) * 0.5;
+ fire += distortion * 0.5; // 炎の強度にゆらぎを加える
+
+ // 炎の色のグラデーション
+ vec3 color = vec3(0.0);
+ color = mix(color, vec3(1.0, 0.0, 0.0), fire * 0.8); // 赤
+ color = mix(color, vec3(1.0, 0.5, 0.0), fire * 1.2); // オレンジ
+ color = mix(color, vec3(1.0, 1.0, 0.0), fire * 2.0); // 黄
+
+ // 強度に応じてアルファ値を設定(炎の外側は透明に)
+ float alpha = clamp(fire * 0.8, 0.0, 1.0);
+
+ gl_FragColor = vec4(color, alpha);
+ }
+`;
+
+// ---------------------------------------------------------------- //
+// R3F コンポーネント //
+// ---------------------------------------------------------------- //
+
+const FlameMaterial = () => {
+ const material = useRef<THREE.ShaderMaterial>(null!);
+
+ useFrame(({ clock, viewport }) => {
+ if (material.current) {
+ material.current.uniforms.uTime.value = clock.getElapsedTime();
+ material.current.uniforms.uResolution.value.set(viewport.width, viewport.height);
+ }
+ });
+
+ return (
+ <mesh position={[0, 0, 0]}>
+ {/* 画面を覆う板ポリゴン */}
+ <planeGeometry args={[100, 100]} />
+ {/* カスタムシェーダーマテリアル */}
+ <shaderMaterial
+ ref={material}
+ uniforms={{
+ uTime: { value: 0 },
+ uResolution: { value: new THREE.Vector2(0, 0) },
+ }}
+ vertexShader={vertexShader}
+ fragmentShader={fragmentShader}
+ transparent
+ depthWrite={false}
+ />
+ </mesh>
+ );
+};
+
+// ---------------------------------------------------------------- //
+// 文字コンポーネント //
+// ---------------------------------------------------------------- //
+
+type TextOverlayProps = {
+ text: string;
+ top?: string;
+ bottom?: string;
+ left?: string;
+ right?: string;
+ rotation?: string; // 例: "15deg"
+};
+
+const TextOverlay: React.FC<TextOverlayProps> = ({
+ text,
+ top,
+ bottom,
+ left,
+ right,
+ rotation = '0deg',
+}) => {
+ return (
+ <div
+ style={{
+ position: 'absolute',
+ top,
+ bottom,
+ left,
+ right,
+ color: 'white',
+ fontSize: '8vw',
+ fontWeight: 'bold',
+ textShadow: '0 0 10px #f00, 0 0 20px #ff0', // 炎に合わせた光彩
+ transform: `rotate(${rotation})`,
+ zIndex: 10, // Canvasよりも手前に配置
+ pointerEvents: 'none', // クリックイベントを無視
+ }}
+ >
+ {text}
+ </div>
+ );
+};
+
+// ---------------------------------------------------------------- //
+// メインページ //
+// ---------------------------------------------------------------- //
+
+export default function HomePage() {
+ return (
+ <Canvas camera={{ position: [0, 0, 1], near: 0.1, far: 100 }}>
+ <color attach="background" args={['black']} /> {/* 背景色を黒に */}
+ <FlameMaterial />
+ </Canvas>
+ );
+};
diff --git a/app/ctrl/page.tsx b/app/ctrl/page.tsx
@@ -43,9 +43,9 @@ export default function Play() {
const pageRef = useRef<HTMLDivElement>(null);
const [isFullscreen, setIsFullscreen] = useState(false);
const [isInitialCheckDone, setIsInitialCheckDone] = useState(false);
- const [ stage, setStage ] = useState(8);
+ const [ stage, setStage ] = useState(1);
const handleStageComplete = useCallback(() => {
- setStage(stage + 1);
+ setStage(prevStage => prevStage + 1);
}, []);
let StageComponent: React.ReactNode;
diff --git a/rust-wasm/Cargo.lock b/rust-wasm/Cargo.lock
@@ -54,7 +54,7 @@ dependencies = [
"instant",
"num-traits",
"paste",
- "rand",
+ "rand 0.8.5",
"rand_xoshiro",
"thiserror",
]
@@ -70,7 +70,7 @@ dependencies = [
"num-complex",
"num-integer",
"num-traits",
- "rand",
+ "rand 0.8.5",
"thiserror",
]
@@ -486,8 +486,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
- "rand_chacha",
- "rand_core",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
+dependencies = [
+ "rand_chacha 0.9.0",
+ "rand_core 0.9.3",
]
[[package]]
@@ -497,7 +507,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
- "rand_core",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.9.3",
]
[[package]]
@@ -510,12 +530,21 @@ dependencies = [
]
[[package]]
+name = "rand_core"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
+dependencies = [
+ "getrandom 0.3.4",
+]
+
+[[package]]
name = "rand_xoshiro"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa"
dependencies = [
- "rand_core",
+ "rand_core 0.6.4",
]
[[package]]
@@ -569,6 +598,7 @@ dependencies = [
"getrandom 0.3.4",
"js-sys",
"kurbo",
+ "rand 0.9.2",
"vibrato",
"wasm-bindgen",
"zstd",
diff --git a/rust-wasm/Cargo.toml b/rust-wasm/Cargo.toml
@@ -14,3 +14,4 @@ getrandom_v02 = { package = "getrandom", version = "0.2", features = ["js"] }
getrandom_v03 = { package = "getrandom", version = "0.3", features = ["wasm_js"] }
zstd = "0.13.3"
kurbo = "0.12.0"
+rand = "0.9.2"
diff --git a/rust-wasm/pkg/rust_wasm.d.ts b/rust-wasm/pkg/rust_wasm.d.ts
@@ -1,6 +1,5 @@
/* tslint:disable */
-/* eslint-disable */
-export function chat2(dict_data: Uint8Array, input: string): string;
+
export function chat(dict_data: Uint8Array, input: string): string;
/**
*
@@ -21,7 +20,6 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl
export interface InitOutput {
readonly memory: WebAssembly.Memory;
- readonly chat2: (a: number, b: number, c: number, d: number) => [number, number, number, number];
readonly chat: (a: number, b: number, c: number, d: number) => [number, number, number, number];
readonly __wbg_nearestpointresult_free: (a: number, b: number) => void;
readonly __wbg_get_nearestpointresult_x: (a: number) => number;
@@ -38,7 +36,9 @@ export interface InitOutput {
readonly rust_zstd_wasm_shim_memcpy: (a: number, b: number, c: number) => number;
readonly rust_zstd_wasm_shim_memmove: (a: number, b: number, c: number) => number;
readonly rust_zstd_wasm_shim_memset: (a: number, b: number, c: number) => number;
- readonly __wbindgen_export_0: WebAssembly.Table;
+ readonly __wbindgen_exn_store: (a: number) => void;
+ readonly __externref_table_alloc: () => number;
+ readonly __wbindgen_export_2: WebAssembly.Table;
readonly __wbindgen_malloc: (a: number, b: number) => number;
readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
readonly __externref_table_dealloc: (a: number) => void;
diff --git a/rust-wasm/pkg/rust_wasm.js b/rust-wasm/pkg/rust_wasm.js
@@ -9,6 +9,26 @@ function getUint8ArrayMemory0() {
return cachedUint8ArrayMemory0;
}
+function getArrayU8FromWasm0(ptr, len) {
+ ptr = ptr >>> 0;
+ return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
+}
+
+function addToExternrefTable0(obj) {
+ const idx = wasm.__externref_table_alloc();
+ wasm.__wbindgen_export_2.set(idx, obj);
+ return idx;
+}
+
+function handleError(f, args) {
+ try {
+ return f.apply(this, args);
+ } catch (e) {
+ const idx = addToExternrefTable0(e);
+ wasm.__wbindgen_exn_store(idx);
+ }
+}
+
let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
cachedTextDecoder.decode();
@@ -92,7 +112,7 @@ function passStringToWasm0(arg, malloc, realloc) {
}
function takeFromExternrefTable0(idx) {
- const value = wasm.__wbindgen_export_0.get(idx);
+ const value = wasm.__wbindgen_export_2.get(idx);
wasm.__externref_table_dealloc(idx);
return value;
}
@@ -101,34 +121,6 @@ function takeFromExternrefTable0(idx) {
* @param {string} input
* @returns {string}
*/
-export function chat2(dict_data, input) {
- let deferred4_0;
- let deferred4_1;
- try {
- const ptr0 = passArray8ToWasm0(dict_data, wasm.__wbindgen_malloc);
- const len0 = WASM_VECTOR_LEN;
- const ptr1 = passStringToWasm0(input, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
- const len1 = WASM_VECTOR_LEN;
- const ret = wasm.chat2(ptr0, len0, ptr1, len1);
- var ptr3 = ret[0];
- var len3 = ret[1];
- if (ret[3]) {
- ptr3 = 0; len3 = 0;
- throw takeFromExternrefTable0(ret[2]);
- }
- deferred4_0 = ptr3;
- deferred4_1 = len3;
- return getStringFromWasm0(ptr3, len3);
- } finally {
- wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);
- }
-}
-
-/**
- * @param {Uint8Array} dict_data
- * @param {string} input
- * @returns {string}
- */
export function chat(dict_data, input) {
let deferred4_0;
let deferred4_1;
@@ -265,6 +257,9 @@ async function __wbg_load(module, imports) {
function __wbg_get_imports() {
const imports = {};
imports.wbg = {};
+ imports.wbg.__wbg_getRandomValues_1c61fac11405ffdc = function() { return handleError(function (arg0, arg1) {
+ globalThis.crypto.getRandomValues(getArrayU8FromWasm0(arg0, arg1));
+ }, arguments) };
imports.wbg.__wbg_new_da9dc54c5db29dfa = function(arg0, arg1) {
const ret = new Error(getStringFromWasm0(arg0, arg1));
return ret;
@@ -273,7 +268,7 @@ function __wbg_get_imports() {
throw new Error(getStringFromWasm0(arg0, arg1));
};
imports.wbg.__wbindgen_init_externref_table = function() {
- const table = wasm.__wbindgen_export_0;
+ const table = wasm.__wbindgen_export_2;
const offset = table.grow(4);
table.set(0, undefined);
table.set(offset + 0, undefined);
diff --git a/rust-wasm/pkg/rust_wasm_bg.wasm b/rust-wasm/pkg/rust_wasm_bg.wasm
Binary files differ.
diff --git a/rust-wasm/pkg/rust_wasm_bg.wasm.d.ts b/rust-wasm/pkg/rust_wasm_bg.wasm.d.ts
@@ -1,7 +1,6 @@
/* tslint:disable */
-/* eslint-disable */
+
export const memory: WebAssembly.Memory;
-export const chat2: (a: number, b: number, c: number, d: number) => [number, number, number, number];
export const chat: (a: number, b: number, c: number, d: number) => [number, number, number, number];
export const __wbg_nearestpointresult_free: (a: number, b: number) => void;
export const __wbg_get_nearestpointresult_x: (a: number) => number;
@@ -18,7 +17,9 @@ export const rust_zstd_wasm_shim_free: (a: number) => void;
export const rust_zstd_wasm_shim_memcpy: (a: number, b: number, c: number) => number;
export const rust_zstd_wasm_shim_memmove: (a: number, b: number, c: number) => number;
export const rust_zstd_wasm_shim_memset: (a: number, b: number, c: number) => number;
-export const __wbindgen_export_0: WebAssembly.Table;
+export const __wbindgen_exn_store: (a: number) => void;
+export const __externref_table_alloc: () => number;
+export const __wbindgen_export_2: WebAssembly.Table;
export const __wbindgen_malloc: (a: number, b: number) => number;
export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
export const __externref_table_dealloc: (a: number) => void;
diff --git a/rust-wasm/src/lib.rs b/rust-wasm/src/lib.rs
@@ -1,74 +1,69 @@
-use std::{io:: Cursor, iter::Peekable, str::SplitWhitespace, usize};
+use rand::Rng;
+use std::{io::Cursor, iter::Peekable, str::SplitWhitespace, usize};
use vibrato::{Dictionary, Tokenizer};
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
-pub fn chat2(dict_data: &[u8], input: &str) -> Result<String, JsValue> {
+pub fn chat(dict_data: &[u8], input: &str) -> Result<String, JsValue> {
let encoded = Cursor::new(dict_data);
let reader = zstd::Decoder::new(encoded).unwrap();
let dict = Dictionary::read(reader)
- .map_err(|_|{JsValue::from(js_sys::Error::new("Dictionary road Error"))})?;
+ .map_err(|_| JsValue::from(js_sys::Error::new("Dictionary road Error")))?;
let tokenizer = Tokenizer::new(dict);
let mut worker = tokenizer.new_worker();
+ let mut rng = rand::rng();
+ let random_number = rng.random_range(1..=2);
worker.reset_sentence(input);
worker.tokenize();
- let mut ans : String= "どうせ失敗する。当たり前だ。そうに決まっている。".to_string();
+ let mut ans: String = if random_number == 1 {
+ "どうせ失敗する。当たり前だ。そうに決まっている。".to_string()
+ } else {
+ "馬鹿なことを言ってないで。".to_string()
+ };
match worker.num_tokens() {
1..5 => {
- ans = "は?".to_string();
- },
+ ans = if random_number == 1 {
+ "は?".to_string()
+ } else {
+ "何を言っているの?".to_string()
+ };
+ }
5..9 => {
- ans = "期待した私が馬鹿だったの?".to_string();
- },
+ ans = if random_number == 1 {
+ "期待した私が馬鹿だったの?".to_string()
+ } else {
+ "そんなことができるわけないじゃない?".to_string()
+ };
+ }
9 => {
- ans = "お前のせいで私の人生がめちゃくちゃだ。".to_string();
- },
- 10..=usize::MAX => {
- ans = "どうでもいいわ。勝手にすれば。私には関係ない。".to_string();
+ ans = if random_number == 1 {
+ "お前のせいで私の人生がめちゃくちゃだ。".to_string()
+ } else {
+ "そんなこと思ってるんじゃないんでしょ?".to_string()
+ };
}
- _ => {ans = "どうでもいいわ。勝手にすれば。私には関係ない。".to_string();},
- }
-
- Ok(ans)
-}
-
-#[wasm_bindgen]
-pub fn chat(dict_data: &[u8], input: &str) -> Result<String, JsValue> {
- let encoded = Cursor::new(dict_data);
- let reader = zstd::Decoder::new(encoded).unwrap();
- let dict = Dictionary::read(reader)
- .map_err(|_|{JsValue::from(js_sys::Error::new("Dictionary road Error"))})?;
- let tokenizer = Tokenizer::new(dict);
- let mut worker = tokenizer.new_worker();
-
- worker.reset_sentence(input);
- worker.tokenize();
-
- let mut ans : String= "馬鹿なことを言ってないで。".to_string();
-
- match worker.num_tokens() {
- 1..5 => {
- ans = "何を言っているの?".to_string();
- },
- 5..10 => {
- ans = "そんなことができるわけないじゃない?".to_string();
- },
10..=usize::MAX => {
- ans = "そんなこと思ってるんじゃないんでしょ?".to_string();
+ ans = if random_number == 1 {
+ "どうでもいいわ。勝手にすれば。私には関係ない。".to_string()
+ } else {
+ "意味がわからない。".to_string()
+ };
+ }
+ _ => {
+ ans = "どうでもいいわ。勝手にすれば。私には関係ない。".to_string();
}
- _ => {ans = "意味がわからない。".to_string();},
}
Ok(ans)
}
-use kurbo::{Point, BezPath, ParamCurve, PathSeg, Vec2};
use kurbo::ParamCurveNearest;
-use wasm_bindgen::JsValue;
+use kurbo::{BezPath, ParamCurve, PathSeg, Point, Vec2};
use std::f64::consts::PI;
+use wasm_bindgen::JsValue;
// TypeScriptのPoint型に対応する構造体を定義
#[derive(Debug, Clone, Copy)]
@@ -84,10 +79,7 @@ pub struct NearestPointResult {
/// ベクトルVを回転角度φだけ回転させます。(名前を rotate_vec2 に変更)
fn rotate_vec2(v: Vec2, sin_phi: f64, cos_phi: f64) -> Vec2 {
- Vec2::new(
- v.x * cos_phi - v.y * sin_phi,
- v.x * sin_phi + v.y * cos_phi,
- )
+ Vec2::new(v.x * cos_phi - v.y * sin_phi, v.x * sin_phi + v.y * cos_phi)
}
/// 単一のArcセグメント(2つの角度間)をCubic Bezierに変換します。
@@ -100,7 +92,6 @@ fn segment_to_cubic(
path: &mut BezPath,
current_point: Point,
) -> Point {
-
if delta_angle.abs() < 1e-6 {
return current_point;
}
@@ -114,14 +105,17 @@ fn segment_to_cubic(
// Vec2として扱う
let start_vec = Vec2::new(start_angle.cos() * a, start_angle.sin() * b);
- let end_vec = Vec2::new((start_angle + delta_angle).cos() * a, (start_angle + delta_angle).sin() * b);
+ let end_vec = Vec2::new(
+ (start_angle + delta_angle).cos() * a,
+ (start_angle + delta_angle).sin() * b,
+ );
// Vec2を回転
let start_vec_rotated = rotate_vec2(start_vec, sin_phi, cos_phi);
let end_vec_rotated = rotate_vec2(end_vec, sin_phi, cos_phi);
- let p0 = center + start_vec_rotated;
- let p3 = center + end_vec_rotated;
+ let p0 = center + start_vec_rotated;
+ let p3 = center + end_vec_rotated;
// Vec2 を使ったタンジェント計算
let t_start_vec = Vec2::new(-start_vec.y * t_factor, start_vec.x * t_factor);
@@ -138,7 +132,6 @@ fn segment_to_cubic(
p3
}
-
/// SVG Arcコマンドを複数のCubic Bezierセグメントに分解します。
fn arc_to_beziers(
start_point: Point,
@@ -150,7 +143,6 @@ fn arc_to_beziers(
end_point: Point,
path: &mut BezPath,
) -> Point {
-
if (rx.abs() < 1e-6 || ry.abs() < 1e-6) || start_point == end_point {
path.line_to(end_point);
return end_point;
@@ -165,11 +157,7 @@ fn arc_to_beziers(
// Vec2を回転し、結果も Vec2
let p_vec = (start_point - end_point) * 0.5;
- let mut p_prime_vec = rotate_vec2(
- p_vec,
- -sin_phi,
- cos_phi,
- );
+ let p_prime_vec = rotate_vec2(p_vec, -sin_phi, cos_phi);
// Pointとして使うために一時的に変換
let p_prime = Point::new(p_prime_vec.x, p_prime_vec.y);
@@ -185,23 +173,21 @@ fn arc_to_beziers(
let x_prime_sq = p_prime.x * p_prime.x;
let y_prime_sq = p_prime.y * p_prime.y;
- let mut center_coeff = (
- (rx_sq * ry_sq - rx_sq * y_prime_sq - ry_sq * x_prime_sq) /
- (rx_sq * y_prime_sq + ry_sq * x_prime_sq)
- ).max(0.0).sqrt();
+ let mut center_coeff = ((rx_sq * ry_sq - rx_sq * y_prime_sq - ry_sq * x_prime_sq)
+ / (rx_sq * y_prime_sq + ry_sq * x_prime_sq))
+ .max(0.0)
+ .sqrt();
if large_arc_flag == sweep_flag {
center_coeff = -center_coeff;
}
- let center_prime = Vec2::new( // 中心C'は変位なのでVec2で表現
+ let center_prime = Vec2::new(
+ // 中心C'は変位なのでVec2で表現
center_coeff * rx * p_prime.y / ry,
center_coeff * -ry * p_prime.x / rx,
);
- // 🚨 修正: 楕円の中心 C を計算 (Vec2で計算し、Point + Vec2 で最終位置を決定)
- let center_diff_vec = (start_point - Point::ZERO + end_point.to_vec2()) * 0.5;
-
let center_midpoint_vec: Vec2 = (start_point - Point::ZERO + end_point.to_vec2()) * 0.5;
let midpoint: Point = Point::new(center_midpoint_vec.x, center_midpoint_vec.y);
@@ -214,7 +200,9 @@ fn arc_to_beziers(
// 7. 角度の計算
let to_angle = |p: Point| -> f64 {
let mut angle = (p.y).atan2(p.x);
- if angle < 0.0 { angle += 2.0 * PI; }
+ if angle < 0.0 {
+ angle += 2.0 * PI;
+ }
angle
};
@@ -223,13 +211,13 @@ fn arc_to_beziers(
(p_prime.x - center_prime.x) / rx,
(p_prime.y - center_prime.y) / ry,
);
- let mut start_angle = to_angle(start_vec_p);
+ let start_angle = to_angle(start_vec_p);
let end_vec_p = Point::new(
(-p_prime.x - center_prime.x) / rx,
(-p_prime.y - center_prime.y) / ry,
);
- let mut end_angle = to_angle(end_vec_p);
+ let end_angle = to_angle(end_vec_p);
// 角度差の計算
let mut delta_angle = end_angle - start_angle;
@@ -277,7 +265,7 @@ fn parse_svg_path_to_bezpath(path_d: &str) -> Option<BezPath> {
let mut current_point = Point::new(0.0, 0.0);
let mut subpath_start = Point::new(0.0, 0.0);
- let get_f64 = | tokens: &mut Peekable<SplitWhitespace>| -> Option<f64> {
+ let get_f64 = |tokens: &mut Peekable<SplitWhitespace>| -> Option<f64> {
tokens.next().and_then(|s| s.parse::<f64>().ok())
};
@@ -353,7 +341,6 @@ fn parse_svg_path_to_bezpath(path_d: &str) -> Option<BezPath> {
Some(path)
}
-
/**
* SVGパス上で指定された点に最も近い点を計算します。
*/
@@ -362,9 +349,8 @@ pub fn find_nearest_point_on_path(
path_d: &str,
x: f64,
y: f64,
- _snapping_distance_viewbox: f64
+ _snapping_distance_viewbox: f64,
) -> Option<NearestPointResult> {
-
let target_point = Point::new(x, y);
let bez_path = parse_svg_path_to_bezpath(path_d)?;
@@ -374,7 +360,6 @@ pub fn find_nearest_point_on_path(
// PathSegのバリアントからジオメトリ型(Line, CubicBez)を抽出
for segment in bez_path.segments() {
-
let new_closest_point = match segment {
// Line構造体を抽出
PathSeg::Line(line) => {
@@ -385,11 +370,11 @@ pub fn find_nearest_point_on_path(
if dist_sq < min_dist_sq {
min_dist_sq = dist_sq;
// nearest_result.point は非公開なので、eval(param) を使用する
- Some(line.eval(nearest_result.t))
+ Some(line.eval(nearest_result.t))
} else {
None
}
- },
+ }
// CubicBez構造体を抽出
PathSeg::Cubic(cubic_bez) => {
let nearest_result = cubic_bez.nearest(target_point, 1.0);
@@ -401,7 +386,7 @@ pub fn find_nearest_point_on_path(
} else {
None
}
- },
+ }
// Quad Bezier (サポート外) およびその他のバリアントはスキップ
_ => None,
};
@@ -415,10 +400,10 @@ pub fn find_nearest_point_on_path(
if let Some(p) = closest_point {
return Some(NearestPointResult { x: p.x, y: p.y });
} else {
- return Some(NearestPointResult {x:500.0,y:500.0});
+ return Some(NearestPointResult { x: 500.0, y: 500.0 });
}
- return Some(NearestPointResult { x: 0.0, y: 0.0 })
+ Some(NearestPointResult { x: 0.0, y: 0.0 })
}
// WASMの初期化関数 (必須)
diff --git a/target/rust-analyzer/flycheck0/stderr b/target/rust-analyzer/flycheck0/stderr
@@ -0,0 +1,12 @@
+ 0.183803500s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: stale: changed "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs"
+ 0.183840700s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: (vs) "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\.fingerprint\\rust-wasm-ccb3f3c99ff11159\\dep-lib-rust_wasm"
+ 0.183845800s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: FileTime { seconds: 13406391521, nanos: 10841700 } < FileTime { seconds: 13406391530, nanos: 482777700 }
+ 0.184150400s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: fingerprint dirty for rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm)/Check { test: false }/TargetInner { name_inferred: true, ..: lib_target("rust_wasm", ["cdylib"], "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs", Edition2024) }
+ 0.184179300s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleItem(ChangedFile { reference: "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\.fingerprint\\rust-wasm-ccb3f3c99ff11159\\dep-lib-rust_wasm", reference_mtime: FileTime { seconds: 13406391521, nanos: 10841700 }, stale: "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs", stale_mtime: FileTime { seconds: 13406391530, nanos: 482777700 } }))
+ 0.221929100s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: stale: changed "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs"
+ 0.221949400s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: (vs) "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\.fingerprint\\rust-wasm-103cac6150b82a40\\dep-test-lib-rust_wasm"
+ 0.221953700s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: FileTime { seconds: 13406391521, nanos: 10841700 } < FileTime { seconds: 13406391530, nanos: 482777700 }
+ 0.222250800s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: fingerprint dirty for rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm)/Check { test: true }/TargetInner { name_inferred: true, ..: lib_target("rust_wasm", ["cdylib"], "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs", Edition2024) }
+ 0.222285800s INFO prepare_target{force=false package_id=rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm) target="rust_wasm"}: cargo::core::compiler::fingerprint: dirty: FsStatusOutdated(StaleItem(ChangedFile { reference: "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\.fingerprint\\rust-wasm-103cac6150b82a40\\dep-test-lib-rust_wasm", reference_mtime: FileTime { seconds: 13406391521, nanos: 10841700 }, stale: "C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs", stale_mtime: FileTime { seconds: 13406391530, nanos: 482777700 } }))
+ Checking rust-wasm v0.1.0 (C:\Users\ryout\repository\AIdentity\rust-wasm)
+ Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.41s
diff --git a/target/rust-analyzer/flycheck0/stdout b/target/rust-analyzer/flycheck0/stdout
@@ -0,0 +1,149 @@
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\cfg-if-1.0.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"cfg_if","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\cfg-if-1.0.4\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcfg_if-20bb53187b6715fb.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.19","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\unicode-ident-1.0.19\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"unicode_ident","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\unicode-ident-1.0.19\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libunicode_ident-189ca15178b593cc.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libunicode_ident-189ca15178b593cc.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.101","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\proc-macro2-1.0.101\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\proc-macro2-1.0.101\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","proc-macro"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\proc-macro2-87a5f0ce3b8cc4ee\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\proc-macro2-87a5f0ce3b8cc4ee\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#quote@1.0.41","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\quote-1.0.41\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\quote-1.0.41\\build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","proc-macro"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\quote-e6db9c3fe01e6580\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\quote-e6db9c3fe01e6580\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rustversion@1.0.22","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rustversion-1.0.22\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rustversion-1.0.22\\build\\build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\rustversion-4402b8b95773fa7d\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\rustversion-4402b8b95773fa7d\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zerocopy@0.8.27","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zerocopy-0.8.27\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zerocopy-0.8.27\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["simd"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zerocopy-793199fc09e82c50\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zerocopy-793199fc09e82c50\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#autocfg@1.5.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\autocfg-1.5.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"autocfg","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\autocfg-1.5.0\\src\\lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libautocfg-8e68ba8c9cc64d10.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libautocfg-8e68ba8c9cc64d10.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#getrandom@0.2.16","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.2.16\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"getrandom","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.2.16\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["js","js-sys","std","wasm-bindgen"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libgetrandom-112e6c48927a6f1b.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#serde_core@1.0.228","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\serde_core-1.0.228\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\serde_core-1.0.228\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","result","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\serde_core-fe4e12263e96879e\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\serde_core-fe4e12263e96879e\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#getrandom@0.3.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.3.4\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.3.4\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\getrandom-2b5aa131f43f22e4\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\getrandom-2b5aa131f43f22e4\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#windows_x86_64_msvc@0.52.6","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows_x86_64_msvc-0.52.6\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows_x86_64_msvc-0.52.6\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\windows_x86_64_msvc-34d12bac09911094\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\windows_x86_64_msvc-34d12bac09911094\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#cfg-if@1.0.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\cfg-if-1.0.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"cfg_if","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\cfg-if-1.0.4\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcfg_if-fcf6f9c63968de1e.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcfg_if-fcf6f9c63968de1e.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#serde@1.0.228","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\serde-1.0.228\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\serde-1.0.228\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\serde-7d43a81d6ca7d68a\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\serde-7d43a81d6ca7d68a\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen-shared@0.2.104","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-shared-0.2.104\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-shared-0.2.104\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\wasm-bindgen-shared-d5b97ff6f44d3e27\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\wasm-bindgen-shared-d5b97ff6f44d3e27\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#thiserror@1.0.69","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\thiserror-1.0.69\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\thiserror-1.0.69\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\thiserror-8ad831a78bc45fcd\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\thiserror-8ad831a78bc45fcd\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#find-msvc-tools@0.1.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\find-msvc-tools-0.1.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"find_msvc_tools","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\find-msvc-tools-0.1.4\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libfind_msvc_tools-ccda9af3910b38d5.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libfind_msvc_tools-ccda9af3910b38d5.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#crossbeam-utils@0.8.21","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\crossbeam-utils-0.8.21\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\crossbeam-utils-0.8.21\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\crossbeam-utils-0197e3ce4958f992\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\crossbeam-utils-0197e3ce4958f992\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#windows-link@0.2.1","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows-link-0.2.1\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"windows_link","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows-link-0.2.1\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwindows_link-040773b0e32c7ac3.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#anyhow@1.0.100","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\anyhow-1.0.100\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\anyhow-1.0.100\\build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\anyhow-407480eec81b2c3f\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\anyhow-407480eec81b2c3f\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#shlex@1.3.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\shlex-1.3.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"shlex","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\shlex-1.3.0\\src\\lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libshlex-23091e5ead08762b.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libshlex-23091e5ead08762b.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-conv@0.1.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-conv-0.1.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"num_conv","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-conv-0.1.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libnum_conv-6a1a0a74f603c286.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libnum_conv-6a1a0a74f603c286.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#paste@1.0.15","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\paste-1.0.15\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\paste-1.0.15\\build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\paste-8bab462b5cd12688\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\paste-8bab462b5cd12688\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#pkg-config@0.3.32","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\pkg-config-0.3.32\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"pkg_config","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\pkg-config-0.3.32\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libpkg_config-f0dc02b75d7e40ba.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libpkg_config-f0dc02b75d7e40ba.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#time-core@0.1.6","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\time-core-0.1.6\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"time_core","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\time-core-0.1.6\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libtime_core-caa840fe62544e91.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libtime_core-caa840fe62544e91.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#powerfmt@0.2.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\powerfmt-0.2.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"powerfmt","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\powerfmt-0.2.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libpowerfmt-cb69ab1dd940a5f2.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.101","linked_libs":[],"linked_paths":[],"cfgs":["wrap_proc_macro","proc_macro_span_location","proc_macro_span_file"],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\proc-macro2-4b7a3dafd5f82b84\\out"}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#quote@1.0.41","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\quote-102a82c13fe8e5c0\\out"}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#rustversion@1.0.22","linked_libs":[],"linked_paths":[],"cfgs":["host_os=\"windows\""],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\rustversion-427818efd4c571cf\\out"}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#zerocopy@0.8.27","linked_libs":[],"linked_paths":[],"cfgs":["zerocopy_core_error_1_81_0","zerocopy_diagnostic_on_unimplemented_1_78_0","zerocopy_generic_bounds_in_const_fn_1_61_0","zerocopy_target_has_atomics_1_60_0","zerocopy_aarch64_simd_1_59_0","zerocopy_panic_in_const_and_vec_try_reserve_1_57_0"],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zerocopy-6b50d5fe36dc624b\\out"}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-traits@0.2.19","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-traits-0.2.19\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-traits-0.2.19\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","i128","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\num-traits-e0c1286a9ce5cc20\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\num-traits-e0c1286a9ce5cc20\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#getrandom@0.3.4","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\getrandom-c8f7e475b1bf5c34\\out"}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#serde_core@1.0.228","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\serde_core-4c32884a5d259c6a\\out"}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#windows_x86_64_msvc@0.52.6","linked_libs":[],"linked_paths":["native=C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows_x86_64_msvc-0.52.6\\lib"],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\windows_x86_64_msvc-8f1c70f04d068791\\out"}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen-shared@0.2.104","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[["SCHEMA_FILE_HASH","5268316563830462177"]],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\wasm-bindgen-shared-56c20ef600ffb953\\out"}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#serde@1.0.228","linked_libs":[],"linked_paths":[],"cfgs":["if_docsrs_then_no_serde_core"],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\serde-a84a2e9fbe81769e\\out"}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rand_core@0.6.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_core-0.6.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand_core","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_core-0.6.4\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","getrandom","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librand_core-5193f0c292360f52.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#anyhow@1.0.100","linked_libs":[],"linked_paths":[],"cfgs":["std_backtrace"],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\anyhow-294ee02e23beeaaa\\out"}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#thiserror@1.0.69","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\thiserror-f193de1d325333fe\\out"}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#crossbeam-utils@0.8.21","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\crossbeam-utils-d50a88d5aacdc3ff\\out"}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#deranged@0.5.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\deranged-0.5.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"deranged","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\deranged-0.5.4\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","powerfmt"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libderanged-382c78febe440cd5.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#windows-sys@0.61.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows-sys-0.61.2\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"windows_sys","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows-sys-0.61.2\\src\\lib.rs","edition":"2021","doc":true,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["Win32","Win32_Foundation","Win32_Security","Win32_Storage","Win32_Storage_FileSystem","Win32_System","Win32_System_Console","default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwindows_sys-0dba8d544dd96146.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#time-macros@0.2.24","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\time-macros-0.2.24\\Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"time_macros","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\time-macros-0.2.24\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["formatting"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\time_macros-e6b06d58de61a00b.dll","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\time_macros-e6b06d58de61a00b.dll.lib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\time_macros-e6b06d58de61a00b.dll.exp","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\time_macros-e6b06d58de61a00b.pdb"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#paste@1.0.15","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\paste-4b191ff7faa6407d\\out"}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#thread_local@1.1.9","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\thread_local-1.1.9\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"thread_local","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\thread_local-1.1.9\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libthread_local-b0072ee1a542a0ee.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#once_cell@1.21.3","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\once_cell-1.21.3\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"once_cell","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\once_cell-1.21.3\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","race"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libonce_cell-ff0ad348901115f4.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#time-core@0.1.6","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\time-core-0.1.6\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"time_core","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\time-core-0.1.6\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libtime_core-ff1862b628a7a0a5.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#itoa@1.0.15","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\itoa-1.0.15\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"itoa","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\itoa-1.0.15\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libitoa-2179d09a8cbaa087.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-conv@0.1.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-conv-0.1.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"num_conv","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-conv-0.1.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libnum_conv-0d03c5fd8d3669d0.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#getrandom@0.3.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.3.4\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.3.4\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std","wasm_js"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\getrandom-e6cdff516f30f1d9\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\getrandom-e6cdff516f30f1d9\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.101","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\proc-macro2-1.0.101\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"proc_macro2","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\proc-macro2-1.0.101\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","proc-macro"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libproc_macro2-422ab01cb9b02ba1.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libproc_macro2-422ab01cb9b02ba1.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rustversion@1.0.22","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rustversion-1.0.22\\Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"rustversion","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rustversion-1.0.22\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\rustversion-eff2ed6ae02d80d9.dll","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\rustversion-eff2ed6ae02d80d9.dll.lib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\rustversion-eff2ed6ae02d80d9.dll.exp","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\rustversion-eff2ed6ae02d80d9.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zerocopy@0.8.27","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zerocopy-0.8.27\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"zerocopy","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zerocopy-0.8.27\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["simd"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libzerocopy-52ad25bdd83e533d.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-traits@0.2.19","linked_libs":[],"linked_paths":[],"cfgs":["has_total_cmp"],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\num-traits-c60d8ff17850a0b2\\out"}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#getrandom@0.3.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.3.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"getrandom","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.3.4\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libgetrandom-8fc3f0a6a70c1aae.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libgetrandom-8fc3f0a6a70c1aae.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#serde_core@1.0.228","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\serde_core-1.0.228\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"serde_core","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\serde_core-1.0.228\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","result","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libserde_core-f67fb10023ed2dba.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#windows_x86_64_msvc@0.52.6","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows_x86_64_msvc-0.52.6\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"windows_x86_64_msvc","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows_x86_64_msvc-0.52.6\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwindows_x86_64_msvc-14a69c30625fb86e.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#anyhow@1.0.100","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\anyhow-1.0.100\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"anyhow","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\anyhow-1.0.100\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libanyhow-45b776acfbf9f7ed.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#crossbeam-utils@0.8.21","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\crossbeam-utils-0.8.21\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"crossbeam_utils","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\crossbeam-utils-0.8.21\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcrossbeam_utils-d006d632b1d296e4.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen-shared@0.2.104","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-shared-0.2.104\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"wasm_bindgen_shared","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-shared-0.2.104\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwasm_bindgen_shared-a8528d0b6ccc051c.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwasm_bindgen_shared-a8528d0b6ccc051c.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#bumpalo@3.19.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\bumpalo-3.19.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"bumpalo","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\bumpalo-3.19.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libbumpalo-4c348a16f0badee7.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libbumpalo-4c348a16f0badee7.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#version_check@0.9.5","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\version_check-0.9.5\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"version_check","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\version_check-0.9.5\\src\\lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libversion_check-bc9a57e4f71cef9c.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libversion_check-bc9a57e4f71cef9c.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#log@0.4.28","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\log-0.4.28\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"log","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\log-0.4.28\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\liblog-3636dd8cd326c56f.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\liblog-3636dd8cd326c56f.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#memchr@2.7.6","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\memchr-2.7.6\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"memchr","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\memchr-2.7.6\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libmemchr-f6b4808565e1c4aa.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#slog-async@2.8.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-async-2.8.0\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-async-2.8.0\\build.rs","edition":"2015","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\slog-async-dc864f4e00d56e1a\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\slog-async-dc864f4e00d56e1a\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#term@1.2.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\term-1.2.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"term","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\term-1.2.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libterm-64cd54818abb3315.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#getrandom@0.3.4","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\getrandom-d6d8eb0d49a54dd6\\out"}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#paste@1.0.15","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\paste-1.0.15\\Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"paste","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\paste-1.0.15\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\paste-f84e90df2a3b4d5d.dll","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\paste-f84e90df2a3b4d5d.dll.lib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\paste-f84e90df2a3b4d5d.dll.exp","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\paste-f84e90df2a3b4d5d.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#time@0.3.44","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\time-0.3.44\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"time","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\time-0.3.44\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","formatting","macros","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libtime-1ae7d99c233dd8e9.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rand_xoshiro@0.6.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_xoshiro-0.6.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand_xoshiro","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_xoshiro-0.6.0\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librand_xoshiro-9621f07fb88966bd.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#instant@0.1.13","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\instant-0.1.13\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"instant","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\instant-0.1.13\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libinstant-225289b69792fc91.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#take_mut@0.2.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\take_mut-0.2.2\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"take_mut","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\take_mut-0.2.2\\src\\lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libtake_mut-83b347579412f539.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#virtue@0.0.18","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\virtue-0.0.18\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"virtue","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\virtue-0.0.18\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libvirtue-44479add702c1c76.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libvirtue-44479add702c1c76.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zstd-safe@7.2.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-safe-7.2.4\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-safe-7.2.4\\build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["arrays","legacy","std","zdict_builder"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zstd-safe-b4f7b2d4da3917a2\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zstd-safe-b4f7b2d4da3917a2\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#quote@1.0.41","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\quote-1.0.41\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"quote","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\quote-1.0.41\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","proc-macro"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libquote-c5727dce1eaf2b5d.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libquote-c5727dce1eaf2b5d.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-traits@0.2.19","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-traits-0.2.19\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"num_traits","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-traits-0.2.19\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","i128","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libnum_traits-4bb52bdec85e82ce.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#ppv-lite86@0.2.21","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\ppv-lite86-0.2.21\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"ppv_lite86","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\ppv-lite86-0.2.21\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["simd","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libppv_lite86-5f93a61a7b027d08.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#jobserver@0.1.34","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\jobserver-0.1.34\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"jobserver","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\jobserver-0.1.34\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libjobserver-567a1e83b4256e61.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libjobserver-567a1e83b4256e61.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#slog@2.8.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-2.8.2\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-2.8.2\\build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","dynamic-keys","nested-values","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\slog-7d04f55b5dce44fe\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\slog-7d04f55b5dce44fe\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#serde@1.0.228","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\serde-1.0.228\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"serde","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\serde-1.0.228\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libserde-5479e400a0f29763.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#windows-targets@0.52.6","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows-targets-0.52.6\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"windows_targets","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows-targets-0.52.6\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwindows_targets-087a1f209bdc7d58.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#slog-async@2.8.0","linked_libs":[],"linked_paths":[],"cfgs":["integer128"],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\slog-async-4d66d8d6d1908ff0\\out"}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#crossbeam-channel@0.5.15","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\crossbeam-channel-0.5.15\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"crossbeam_channel","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\crossbeam-channel-0.5.15\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcrossbeam_channel-6bbc7059fc4169eb.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#ahash@0.7.8","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\ahash-0.7.8\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\ahash-0.7.8\\build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\ahash-9f8fff1b593f6755\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\ahash-9f8fff1b593f6755\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#bincode_derive@2.0.1","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\bincode_derive-2.0.1\\Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"bincode_derive","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\bincode_derive-2.0.1\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\bincode_derive-e1a46a02342dd86f.dll","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\bincode_derive-e1a46a02342dd86f.dll.lib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\bincode_derive-e1a46a02342dd86f.dll.exp","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\bincode_derive-e1a46a02342dd86f.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen@0.2.104","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-0.2.104\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-0.2.104\\build.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\wasm-bindgen-2dd8ddbf8d83cf71\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\wasm-bindgen-2dd8ddbf8d83cf71\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#getrandom@0.3.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.3.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"getrandom","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\getrandom-0.3.4\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std","wasm_js"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libgetrandom-61e9d2b5847757e2.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#aho-corasick@1.1.3","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\aho-corasick-1.1.3\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"aho_corasick","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\aho-corasick-1.1.3\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["perf-literal","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libaho_corasick-fd2330522298c4d8.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#allocator-api2@0.2.21","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\allocator-api2-0.2.21\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"allocator_api2","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\allocator-api2-0.2.21\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\liballocator_api2-a068e79b7191fc21.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.19","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\unicode-ident-1.0.19\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"unicode_ident","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\unicode-ident-1.0.19\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libunicode_ident-234fca3f993bd676.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#regex-syntax@0.8.8","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\regex-syntax-0.8.8\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"regex_syntax","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\regex-syntax-0.8.8\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std","unicode","unicode-age","unicode-bool","unicode-case","unicode-gencat","unicode-perl","unicode-script","unicode-segment"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libregex_syntax-92bfada28da3f3fa.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#unty@0.0.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\unty-0.0.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"unty","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\unty-0.0.4\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libunty-2c98fe27470c5ca0.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#foldhash@0.1.5","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\foldhash-0.1.5\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"foldhash","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\foldhash-0.1.5\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libfoldhash-ba1d1cac4270f83d.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#equivalent@1.0.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\equivalent-1.0.2\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"equivalent","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\equivalent-1.0.2\\src\\lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libequivalent-a82a1228783d4ddb.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#csv-core@0.1.13","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\csv-core-0.1.13\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"csv_core","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\csv-core-0.1.13\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcsv_core-8d1d3a9e8b2ca162.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#crawdad@0.3.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\crawdad-0.3.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"crawdad","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\crawdad-0.3.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcrawdad-ce4276fab226746b.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#arrayvec@0.7.6","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\arrayvec-0.7.6\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"arrayvec","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\arrayvec-0.7.6\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libarrayvec-bd60b7efa38280e3.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#smallvec@1.15.1","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\smallvec-1.15.1\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"smallvec","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\smallvec-1.15.1\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libsmallvec-6ba212861c00b6eb.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#syn@2.0.106","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\syn-2.0.106\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"syn","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\syn-2.0.106\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["clone-impls","default","derive","full","parsing","printing","proc-macro","visit","visit-mut"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libsyn-bd57590419f02bc0.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libsyn-bd57590419f02bc0.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#cc@1.2.41","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\cc-1.2.41\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"cc","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\cc-1.2.41\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["parallel"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcc-28633b62260d7899.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libcc-28633b62260d7899.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#erased-serde@0.3.31","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\erased-serde-0.3.31\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"erased_serde","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\erased-serde-0.3.31\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\liberased_serde-d9f68ae5cb83f526.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#slog@2.8.2","linked_libs":[],"linked_paths":[],"cfgs":["has_std_error"],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\slog-c4e368f0f2a829d0\\out"}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rand_chacha@0.3.1","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_chacha-0.3.1\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand_chacha","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_chacha-0.3.1\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librand_chacha-153e3778d1c62737.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-integer@0.1.46","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-integer-0.1.46\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"num_integer","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-integer-0.1.46\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libnum_integer-0251ea19821da814.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#num-complex@0.4.6","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-complex-0.4.6\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"num_complex","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\num-complex-0.4.6\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libnum_complex-1f8144cb6664151c.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#windows-sys@0.59.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows-sys-0.59.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"windows_sys","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\windows-sys-0.59.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["Win32","Win32_Foundation","Win32_Storage","Win32_Storage_FileSystem","Win32_System","Win32_System_Console","default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwindows_sys-7dc364cd86f75315.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#chrono@0.4.42","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\chrono-0.4.42\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"chrono","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\chrono-0.4.42\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","clock","default","iana-time-zone","js-sys","now","oldtime","std","wasm-bindgen","wasmbind","winapi","windows-link"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libchrono-805153ddb15b0c21.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#ahash@0.7.8","linked_libs":[],"linked_paths":[],"cfgs":["feature=\"runtime-rng\"","feature=\"folded_multiply\""],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\ahash-ca974626b28a3d9e\\out"}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#regex-automata@0.4.13","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\regex-automata-0.4.13\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"regex_automata","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\regex-automata-0.4.13\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","dfa-onepass","hybrid","meta","nfa-backtrack","nfa-pikevm","nfa-thompson","perf-inline","perf-literal","perf-literal-multisubstring","perf-literal-substring","std","syntax","unicode","unicode-age","unicode-bool","unicode-case","unicode-gencat","unicode-perl","unicode-script","unicode-segment","unicode-word-boundary"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libregex_automata-924ba53260b9d317.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen-shared@0.2.104","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-shared-0.2.104\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"wasm_bindgen_shared","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-shared-0.2.104\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwasm_bindgen_shared-d0e7a5f40a7337fc.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#bincode@2.0.1","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\bincode-2.0.1\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"bincode","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\bincode-2.0.1\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","bincode_derive","default","derive","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libbincode-b8745b534a2e5cd8.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen@0.2.104","linked_libs":[],"linked_paths":[],"cfgs":["wbg_diagnostic"],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\wasm-bindgen-ac3816f8f948c21c\\out"}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rand_core@0.9.3","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_core-0.9.3\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand_core","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_core-0.9.3\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["os_rng","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librand_core-8ea9727cb21df7af.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#hashbrown@0.15.5","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\hashbrown-0.15.5\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"hashbrown","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\hashbrown-0.15.5\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["allocator-api2","default","default-hasher","equivalent","inline-more","raw-entry"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libhashbrown-3d5eeeb4d0893213.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#kurbo@0.12.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\kurbo-0.12.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"kurbo","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\kurbo-0.12.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libkurbo-bfdb72cd7cfb3e6a.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#thiserror-impl@1.0.69","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\thiserror-impl-1.0.69\\Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"thiserror_impl","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\thiserror-impl-1.0.69\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\thiserror_impl-7b54a9369fc65af2.dll","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\thiserror_impl-7b54a9369fc65af2.dll.lib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\thiserror_impl-7b54a9369fc65af2.dll.exp","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\thiserror_impl-7b54a9369fc65af2.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rand@0.8.5","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand-0.8.5\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand-0.8.5\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","getrandom","libc","rand_chacha","std","std_rng"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librand-9228cf46bb6a2954.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zstd-sys@2.0.16+zstd.1.5.7","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-sys-2.0.16+zstd.1.5.7\\Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-sys-2.0.16+zstd.1.5.7\\build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["legacy","std","zdict_builder"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zstd-sys-33a65b100360ff2d\\build-script-build.exe","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zstd-sys-33a65b100360ff2d\\build_script_build.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#slog@2.8.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-2.8.2\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"slog","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-2.8.2\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","dynamic-keys","nested-values","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libslog-07e231d23fc17b47.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#is-terminal@0.4.16","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\is-terminal-0.4.16\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"is_terminal","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\is-terminal-0.4.16\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libis_terminal-5a9f899079d6eee0.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen-backend@0.2.104","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-backend-0.2.104\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"wasm_bindgen_backend","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-backend-0.2.104\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwasm_bindgen_backend-31c3377c6ffa5da8.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwasm_bindgen_backend-31c3377c6ffa5da8.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#ahash@0.7.8","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\ahash-0.7.8\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"ahash","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\ahash-0.7.8\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libahash-4edf125bdf1e31c4.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#regex@1.12.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\regex-1.12.2\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"regex","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\regex-1.12.2\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","perf","perf-backtrack","perf-cache","perf-dfa","perf-inline","perf-literal","perf-onepass","std","unicode","unicode-age","unicode-bool","unicode-case","unicode-gencat","unicode-perl","unicode-script","unicode-segment"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libregex-0447438afaa06731.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rand_chacha@0.9.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_chacha-0.9.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand_chacha","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand_chacha-0.9.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librand_chacha-3de84c9c9b3fc20b.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#thiserror@1.0.69","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\thiserror-1.0.69\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"thiserror","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\thiserror-1.0.69\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libthiserror-04c18c3a94ed6680.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#zstd-sys@2.0.16+zstd.1.5.7","linked_libs":["static=zstd"],"linked_paths":["native=C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.44.35207\\atlmfc\\lib\\x64","native=C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zstd-sys-475a80ad8684003a\\out"],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zstd-sys-475a80ad8684003a\\out"}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#slog-term@2.9.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-term-2.9.2\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"slog_term","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-term-2.9.2\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libslog_term-f6865356416982a1.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen-macro-support@0.2.104","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-macro-support-0.2.104\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"wasm_bindgen_macro_support","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-macro-support-0.2.104\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwasm_bindgen_macro_support-894d380fddf82587.rlib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwasm_bindgen_macro_support-894d380fddf82587.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#slog-async@2.8.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-async-2.8.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"slog_async","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\slog-async-2.8.0\\lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libslog_async-2c4e494577c1a5d0.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#hashbrown@0.12.3","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\hashbrown-0.12.3\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"hashbrown","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\hashbrown-0.12.3\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["ahash","default","inline-more"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libhashbrown-16980954de28e441.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rand@0.9.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand-0.9.2\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rand-0.9.2\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","os_rng","small_rng","std","std_rng","thread_rng"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librand-50318bae00f6adc2.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#argmin-math@0.4.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\argmin-math-0.4.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"argmin_math","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\argmin-math-0.4.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","num-complex_0_4","primitives","vec"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libargmin_math-3388b099d2694caa.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen-macro@0.2.104","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-macro-0.2.104\\Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"wasm_bindgen_macro","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-macro-0.2.104\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":0,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\wasm_bindgen_macro-e928ab882000aeeb.dll","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\wasm_bindgen_macro-e928ab882000aeeb.dll.lib","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\wasm_bindgen_macro-e928ab882000aeeb.dll.exp","C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\wasm_bindgen_macro-e928ab882000aeeb.pdb"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zstd-sys@2.0.16+zstd.1.5.7","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-sys-2.0.16+zstd.1.5.7\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"zstd_sys","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-sys-2.0.16+zstd.1.5.7\\src\\lib.rs","edition":"2018","doc":true,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["legacy","std","zdict_builder"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libzstd_sys-1e223cfe0c64edd7.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"registry+https://github.com/rust-lang/crates.io-index#zstd-safe@7.2.4","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\build\\zstd-safe-761a4d11e1f0a2d6\\out"}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#argmin@0.10.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\argmin-0.10.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"argmin","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\argmin-0.10.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libargmin-bf57ce8c8d4182ed.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zstd-safe@7.2.4","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-safe-7.2.4\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"zstd_safe","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-safe-7.2.4\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["arrays","legacy","std","zdict_builder"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libzstd_safe-14c5d1696b9136b9.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen@0.2.104","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-0.2.104\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"wasm_bindgen","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\wasm-bindgen-0.2.104\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libwasm_bindgen-ac38c456fd42c3ed.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#argmin-observer-slog@0.1.0","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\argmin-observer-slog-0.1.0\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"argmin_observer_slog","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\argmin-observer-slog-0.1.0\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libargmin_observer_slog-42c76501120fd1c0.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#js-sys@0.3.81","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\js-sys-0.3.81\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"js_sys","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\js-sys-0.3.81\\src\\lib.rs","edition":"2021","doc":true,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libjs_sys-74453de689ea0f19.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#zstd@0.13.3","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-0.13.3\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"zstd","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\zstd-0.13.3\\src\\lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["arrays","default","legacy","zdict_builder"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libzstd-9837f1075aeb7035.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#rucrf@0.3.3","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rucrf-0.3.3\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rucrf","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\rucrf-0.3.3\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","argmin","argmin-math","argmin-observer-slog","crossbeam-channel","default","std","train"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librucrf-08c5b8420dbaeeba.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"registry+https://github.com/rust-lang/crates.io-index#vibrato@0.5.2","manifest_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\vibrato-0.5.2\\Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"vibrato","src_path":"C:\\Users\\ryout\\.cargo\\registry\\src\\index.crates.io-1949cf8c6b5b557f\\vibrato-0.5.2\\src\\lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","rucrf","train"],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\libvibrato-9e8ad7b69d4d843c.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-message","package_id":"path+file:///C:/Users/ryout/repository/AIdentity/rust-wasm#0.1.0","manifest_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\Cargo.toml","target":{"kind":["cdylib"],"crate_types":["cdylib"],"name":"rust_wasm","src_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs","edition":"2024","doc":true,"doctest":false,"test":true},"message":{"rendered":"warning: unreachable expression\n --> src\\lib.rs:406:5\n |\n401 | return Some(NearestPointResult { x: p.x, y: p.y });\n | -------------------------------------------------- any code following this expression is unreachable\n...\n406 | Some(NearestPointResult { x: 0.0, y: 0.0 })\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression\n |\n = note: `#[warn(unreachable_code)]` on by default\n\n","$message_type":"diagnostic","children":[{"children":[],"code":null,"level":"note","message":"`#[warn(unreachable_code)]` on by default","rendered":null,"spans":[]}],"code":{"code":"unreachable_code","explanation":null},"level":"warning","message":"unreachable expression","spans":[{"byte_end":13084,"byte_start":13041,"column_end":48,"column_start":5,"expansion":null,"file_name":"src\\lib.rs","is_primary":true,"label":"unreachable expression","line_end":406,"line_start":406,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":48,"highlight_start":5,"text":" Some(NearestPointResult { x: 0.0, y: 0.0 })"}]},{"byte_end":12951,"byte_start":12901,"column_end":59,"column_start":9,"expansion":null,"file_name":"src\\lib.rs","is_primary":false,"label":"any code following this expression is unreachable","line_end":401,"line_start":401,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":59,"highlight_start":9,"text":" return Some(NearestPointResult { x: p.x, y: p.y });"}]}]}}
+{"reason":"compiler-message","package_id":"path+file:///C:/Users/ryout/repository/AIdentity/rust-wasm#0.1.0","manifest_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\Cargo.toml","target":{"kind":["cdylib"],"crate_types":["cdylib"],"name":"rust_wasm","src_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs","edition":"2024","doc":true,"doctest":false,"test":true},"message":{"rendered":"warning: unreachable expression\n --> src\\lib.rs:406:5\n |\n401 | return Some(NearestPointResult { x: p.x, y: p.y });\n | -------------------------------------------------- any code following this expression is unreachable\n...\n406 | Some(NearestPointResult { x: 0.0, y: 0.0 })\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression\n |\n = note: `#[warn(unreachable_code)]` on by default\n\n","$message_type":"diagnostic","children":[{"children":[],"code":null,"level":"note","message":"`#[warn(unreachable_code)]` on by default","rendered":null,"spans":[]}],"code":{"code":"unreachable_code","explanation":null},"level":"warning","message":"unreachable expression","spans":[{"byte_end":13084,"byte_start":13041,"column_end":48,"column_start":5,"expansion":null,"file_name":"src\\lib.rs","is_primary":true,"label":"unreachable expression","line_end":406,"line_start":406,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":48,"highlight_start":5,"text":" Some(NearestPointResult { x: 0.0, y: 0.0 })"}]},{"byte_end":12951,"byte_start":12901,"column_end":59,"column_start":9,"expansion":null,"file_name":"src\\lib.rs","is_primary":false,"label":"any code following this expression is unreachable","line_end":401,"line_start":401,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":59,"highlight_start":9,"text":" return Some(NearestPointResult { x: p.x, y: p.y });"}]}]}}
+{"reason":"compiler-message","package_id":"path+file:///C:/Users/ryout/repository/AIdentity/rust-wasm#0.1.0","manifest_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\Cargo.toml","target":{"kind":["cdylib"],"crate_types":["cdylib"],"name":"rust_wasm","src_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs","edition":"2024","doc":true,"doctest":false,"test":true},"message":{"rendered":"warning: value assigned to `ans` is never read\n --> src\\lib.rs:20:13\n |\n20 | let mut ans: String = if random_number == 1 {\n | ^^^\n |\n = help: maybe it is overwritten before being read?\n = note: `#[warn(unused_assignments)]` on by default\n\n","$message_type":"diagnostic","children":[{"children":[],"code":null,"level":"help","message":"maybe it is overwritten before being read?","rendered":null,"spans":[]},{"children":[],"code":null,"level":"note","message":"`#[warn(unused_assignments)]` on by default","rendered":null,"spans":[]}],"code":{"code":"unused_assignments","explanation":null},"level":"warning","message":"value assigned to `ans` is never read","spans":[{"byte_end":701,"byte_start":698,"column_end":16,"column_start":13,"expansion":null,"file_name":"src\\lib.rs","is_primary":true,"label":null,"line_end":20,"line_start":20,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":16,"highlight_start":13,"text":" let mut ans: String = if random_number == 1 {"}]}]}}
+{"reason":"compiler-message","package_id":"path+file:///C:/Users/ryout/repository/AIdentity/rust-wasm#0.1.0","manifest_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\Cargo.toml","target":{"kind":["cdylib"],"crate_types":["cdylib"],"name":"rust_wasm","src_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs","edition":"2024","doc":true,"doctest":false,"test":true},"message":{"rendered":"warning: value assigned to `ans` is never read\n --> src\\lib.rs:20:13\n |\n20 | let mut ans: String = if random_number == 1 {\n | ^^^\n |\n = help: maybe it is overwritten before being read?\n = note: `#[warn(unused_assignments)]` on by default\n\n","$message_type":"diagnostic","children":[{"children":[],"code":null,"level":"help","message":"maybe it is overwritten before being read?","rendered":null,"spans":[]},{"children":[],"code":null,"level":"note","message":"`#[warn(unused_assignments)]` on by default","rendered":null,"spans":[]}],"code":{"code":"unused_assignments","explanation":null},"level":"warning","message":"value assigned to `ans` is never read","spans":[{"byte_end":701,"byte_start":698,"column_end":16,"column_start":13,"expansion":null,"file_name":"src\\lib.rs","is_primary":true,"label":null,"line_end":20,"line_start":20,"suggested_replacement":null,"suggestion_applicability":null,"text":[{"highlight_end":16,"highlight_start":13,"text":" let mut ans: String = if random_number == 1 {"}]}]}}
+{"reason":"compiler-artifact","package_id":"path+file:///C:/Users/ryout/repository/AIdentity/rust-wasm#0.1.0","manifest_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\Cargo.toml","target":{"kind":["cdylib"],"crate_types":["cdylib"],"name":"rust_wasm","src_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs","edition":"2024","doc":true,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":true},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librust_wasm-103cac6150b82a40.rmeta"],"executable":null,"fresh":false}
+{"reason":"compiler-artifact","package_id":"path+file:///C:/Users/ryout/repository/AIdentity/rust-wasm#0.1.0","manifest_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\Cargo.toml","target":{"kind":["cdylib"],"crate_types":["cdylib"],"name":"rust_wasm","src_path":"C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\src\\lib.rs","edition":"2024","doc":true,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["C:\\Users\\ryout\\repository\\AIdentity\\rust-wasm\\target\\debug\\deps\\librust_wasm-ccb3f3c99ff11159.rmeta"],"executable":null,"fresh":false}
+{"reason":"build-finished","success":true}