diff --git a/.next/cache/webpack/client-development/11.pack.gz b/.next/cache/webpack/client-development/11.pack.gz index bfed098..bc4fba3 100644 Binary files a/.next/cache/webpack/client-development/11.pack.gz and b/.next/cache/webpack/client-development/11.pack.gz differ diff --git a/.next/cache/webpack/client-development/12.pack.gz b/.next/cache/webpack/client-development/12.pack.gz index d2ba297..dabc49e 100644 Binary files a/.next/cache/webpack/client-development/12.pack.gz and b/.next/cache/webpack/client-development/12.pack.gz differ diff --git a/.next/cache/webpack/client-development/13.pack.gz b/.next/cache/webpack/client-development/13.pack.gz index a273cfc..c040942 100644 Binary files a/.next/cache/webpack/client-development/13.pack.gz and b/.next/cache/webpack/client-development/13.pack.gz differ diff --git a/.next/cache/webpack/client-development/14.pack.gz b/.next/cache/webpack/client-development/14.pack.gz index 9ffd02e..1e7611f 100644 Binary files a/.next/cache/webpack/client-development/14.pack.gz and b/.next/cache/webpack/client-development/14.pack.gz differ diff --git a/.next/cache/webpack/client-development/4.pack.gz b/.next/cache/webpack/client-development/4.pack.gz index 1ada88e..fa75014 100644 Binary files a/.next/cache/webpack/client-development/4.pack.gz and b/.next/cache/webpack/client-development/4.pack.gz differ diff --git a/.next/cache/webpack/client-development/9.pack.gz b/.next/cache/webpack/client-development/9.pack.gz index dad201c..528a2df 100644 Binary files a/.next/cache/webpack/client-development/9.pack.gz and b/.next/cache/webpack/client-development/9.pack.gz differ diff --git a/.next/cache/webpack/client-development/index.pack.gz b/.next/cache/webpack/client-development/index.pack.gz index a772b6a..16aac18 100644 Binary files a/.next/cache/webpack/client-development/index.pack.gz and b/.next/cache/webpack/client-development/index.pack.gz differ diff --git a/.next/cache/webpack/client-development/index.pack.gz.old b/.next/cache/webpack/client-development/index.pack.gz.old index 33f3c6a..44ce572 100644 Binary files a/.next/cache/webpack/client-development/index.pack.gz.old and b/.next/cache/webpack/client-development/index.pack.gz.old differ diff --git a/.next/cache/webpack/server-development/0.pack.gz b/.next/cache/webpack/server-development/0.pack.gz index 4a76178..8aa28cd 100644 Binary files a/.next/cache/webpack/server-development/0.pack.gz and b/.next/cache/webpack/server-development/0.pack.gz differ diff --git a/.next/cache/webpack/server-development/1.pack.gz b/.next/cache/webpack/server-development/1.pack.gz index 63ee217..b3dd11a 100644 Binary files a/.next/cache/webpack/server-development/1.pack.gz and b/.next/cache/webpack/server-development/1.pack.gz differ diff --git a/.next/cache/webpack/server-development/2.pack.gz b/.next/cache/webpack/server-development/2.pack.gz index e6f98f3..83e0dd7 100644 Binary files a/.next/cache/webpack/server-development/2.pack.gz and b/.next/cache/webpack/server-development/2.pack.gz differ diff --git a/.next/cache/webpack/server-development/4.pack.gz b/.next/cache/webpack/server-development/4.pack.gz index 532f52c..5f6e8ed 100644 Binary files a/.next/cache/webpack/server-development/4.pack.gz and b/.next/cache/webpack/server-development/4.pack.gz differ diff --git a/.next/cache/webpack/server-development/5.pack.gz b/.next/cache/webpack/server-development/5.pack.gz index 3c5b998..92f2bdc 100644 Binary files a/.next/cache/webpack/server-development/5.pack.gz and b/.next/cache/webpack/server-development/5.pack.gz differ diff --git a/.next/cache/webpack/server-development/7.pack.gz b/.next/cache/webpack/server-development/7.pack.gz index ec3dceb..917240a 100644 Binary files a/.next/cache/webpack/server-development/7.pack.gz and b/.next/cache/webpack/server-development/7.pack.gz differ diff --git a/.next/cache/webpack/server-development/8.pack.gz b/.next/cache/webpack/server-development/8.pack.gz index d274272..fbdb249 100644 Binary files a/.next/cache/webpack/server-development/8.pack.gz and b/.next/cache/webpack/server-development/8.pack.gz differ diff --git a/.next/cache/webpack/server-development/index.pack.gz b/.next/cache/webpack/server-development/index.pack.gz index e41a1bf..dcdd787 100644 Binary files a/.next/cache/webpack/server-development/index.pack.gz and b/.next/cache/webpack/server-development/index.pack.gz differ diff --git a/.next/cache/webpack/server-development/index.pack.gz.old b/.next/cache/webpack/server-development/index.pack.gz.old index d39198a..cef4f3e 100644 Binary files a/.next/cache/webpack/server-development/index.pack.gz.old and b/.next/cache/webpack/server-development/index.pack.gz.old differ diff --git a/.next/server/app-paths-manifest.json b/.next/server/app-paths-manifest.json index 1cdce68..282d8cb 100644 --- a/.next/server/app-paths-manifest.json +++ b/.next/server/app-paths-manifest.json @@ -1,7 +1,7 @@ { + "/gunbuilder/page": "app/gunbuilder/page.js", "/gunbuilder/[categoryId]/page": "app/gunbuilder/[categoryId]/page.js", - "/gunbuilder/build/page": "app/gunbuilder/build/page.js", - "/gunbuilder/[categoryId]/[partId]/page": "app/gunbuilder/[categoryId]/[partId]/page.js", "/page": "app/page.js", - "/gunbuilder/page": "app/gunbuilder/page.js" + "/gunbuilder/build/page": "app/gunbuilder/build/page.js", + "/gunbuilder/[categoryId]/[partId]/page": "app/gunbuilder/[categoryId]/[partId]/page.js" } \ No newline at end of file diff --git a/.next/server/app/gunbuilder/[categoryId]/[partId]/page.js b/.next/server/app/gunbuilder/[categoryId]/[partId]/page.js index 679f07d..15ac1f7 100644 --- a/.next/server/app/gunbuilder/[categoryId]/[partId]/page.js +++ b/.next/server/app/gunbuilder/[categoryId]/[partId]/page.js @@ -130,6 +130,17 @@ eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__w /***/ }), +/***/ "(ssr)/./app/gunbuilder/[categoryId]/[partId]/data.ts": +/*!******************************************************!*\ + !*** ./app/gunbuilder/[categoryId]/[partId]/data.ts ***! + \******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getPricingHistory: () => (/* binding */ getPricingHistory),\n/* harmony export */ getRetailerOffers: () => (/* binding */ getRetailerOffers)\n/* harmony export */ });\n// Simulated data functions - Replace these with API calls when ready\n// Example: export async function getPricingHistory(partId: string) { ... }\n/**\n * Get pricing history for a part\n * TODO: Replace with API call: GET /api/parts/{partId}/pricing-history\n */ function getPricingHistory(partId, basePrice) {\n // Generate 30 days of price history with some variation\n const days = 30;\n const history = [];\n const today = new Date();\n for(let i = days - 1; i >= 0; i--){\n const date = new Date(today);\n date.setDate(date.getDate() - i);\n // Simulate price fluctuations (±15% variation)\n const variation = (Math.random() - 0.5) * 0.3; // -15% to +15%\n const price = basePrice * (1 + variation);\n history.push({\n date: date.toISOString().split(\"T\")[0],\n price: Math.round(price * 100) / 100\n });\n }\n return history;\n}\n/**\n * Get retailer offers for a part\n * TODO: Replace with API call: GET /api/parts/{partId}/retailers\n */ function getRetailerOffers(partId, basePrice, baseAffiliateUrl) {\n const retailers = [\n \"Primary Arms\",\n \"Brownells\",\n \"Optics Planet\",\n \"MidwayUSA\",\n \"Palmetto State Armory\"\n ];\n return retailers.map((retailer, index)=>{\n // Simulate price variations between retailers\n const priceVariation = (Math.random() - 0.4) * 0.2; // -8% to +12%\n const price = basePrice * (1 + priceVariation);\n const hasSale = Math.random() > 0.6; // 40% chance of sale\n const originalPrice = hasSale ? price * 1.15 : undefined;\n const inStock = Math.random() > 0.2; // 80% chance in stock\n return {\n id: `retailer-${index}`,\n retailerName: retailer,\n price: Math.round(price * 100) / 100,\n originalPrice: originalPrice ? Math.round(originalPrice * 100) / 100 : undefined,\n inStock,\n affiliateUrl: baseAffiliateUrl.replace(\"example.com\", `${retailer.toLowerCase().replace(/\\s+/g, \"\")}.com`),\n lastUpdated: new Date().toISOString()\n };\n }).sort((a, b)=>a.price - b.price); // Sort by price ascending\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vW3BhcnRJZF0vZGF0YS50cyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFFQUFxRTtBQUNyRSwyRUFBMkU7QUFpQjNFOzs7Q0FHQyxHQUNNLFNBQVNBLGtCQUNkQyxNQUFjLEVBQ2RDLFNBQWlCO0lBRWpCLHdEQUF3RDtJQUN4RCxNQUFNQyxPQUFPO0lBQ2IsTUFBTUMsVUFBK0IsRUFBRTtJQUN2QyxNQUFNQyxRQUFRLElBQUlDO0lBRWxCLElBQUssSUFBSUMsSUFBSUosT0FBTyxHQUFHSSxLQUFLLEdBQUdBLElBQUs7UUFDbEMsTUFBTUMsT0FBTyxJQUFJRixLQUFLRDtRQUN0QkcsS0FBS0MsT0FBTyxDQUFDRCxLQUFLRSxPQUFPLEtBQUtIO1FBRTlCLCtDQUErQztRQUMvQyxNQUFNSSxZQUFZLENBQUNDLEtBQUtDLE1BQU0sS0FBSyxHQUFFLElBQUssS0FBSyxlQUFlO1FBQzlELE1BQU1DLFFBQVFaLFlBQWEsS0FBSVMsU0FBUTtRQUV2Q1AsUUFBUVcsSUFBSSxDQUFDO1lBQ1hQLE1BQU1BLEtBQUtRLFdBQVcsR0FBR0MsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3RDSCxPQUFPRixLQUFLTSxLQUFLLENBQUNKLFFBQVEsT0FBTztRQUNuQztJQUNGO0lBRUEsT0FBT1Y7QUFDVDtBQUVBOzs7Q0FHQyxHQUNNLFNBQVNlLGtCQUNkbEIsTUFBYyxFQUNkQyxTQUFpQixFQUNqQmtCLGdCQUF3QjtJQUV4QixNQUFNQyxZQUFZO1FBQ2hCO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7S0FDRDtJQUVELE9BQU9BLFVBQVVDLEdBQUcsQ0FBQyxDQUFDQyxVQUFVQztRQUM5Qiw4Q0FBOEM7UUFDOUMsTUFBTUMsaUJBQWlCLENBQUNiLEtBQUtDLE1BQU0sS0FBSyxHQUFFLElBQUssS0FBSyxjQUFjO1FBQ2xFLE1BQU1DLFFBQVFaLFlBQWEsS0FBSXVCLGNBQWE7UUFDNUMsTUFBTUMsVUFBVWQsS0FBS0MsTUFBTSxLQUFLLEtBQUsscUJBQXFCO1FBQzFELE1BQU1jLGdCQUFnQkQsVUFBVVosUUFBUSxPQUFPYztRQUMvQyxNQUFNQyxVQUFVakIsS0FBS0MsTUFBTSxLQUFLLEtBQUssc0JBQXNCO1FBRTNELE9BQU87WUFDTGlCLElBQUksQ0FBQyxTQUFTLEVBQUVOLE1BQU0sQ0FBQztZQUN2Qk8sY0FBY1I7WUFDZFQsT0FBT0YsS0FBS00sS0FBSyxDQUFDSixRQUFRLE9BQU87WUFDakNhLGVBQWVBLGdCQUNYZixLQUFLTSxLQUFLLENBQUNTLGdCQUFnQixPQUFPLE1BQ2xDQztZQUNKQztZQUNBRyxjQUFjWixpQkFBaUJhLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRVYsU0FBU1csV0FBVyxHQUFHRCxPQUFPLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQztZQUN6R0UsYUFBYSxJQUFJN0IsT0FBT1UsV0FBVztRQUNyQztJQUNGLEdBQUdvQixJQUFJLENBQUMsQ0FBQ0MsR0FBR0MsSUFBTUQsRUFBRXZCLEtBQUssR0FBR3dCLEVBQUV4QixLQUFLLEdBQUcsMEJBQTBCO0FBQ2xFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vW3BhcnRJZF0vZGF0YS50cz9kNzM1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNpbXVsYXRlZCBkYXRhIGZ1bmN0aW9ucyAtIFJlcGxhY2UgdGhlc2Ugd2l0aCBBUEkgY2FsbHMgd2hlbiByZWFkeVxuLy8gRXhhbXBsZTogZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFByaWNpbmdIaXN0b3J5KHBhcnRJZDogc3RyaW5nKSB7IC4uLiB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpY2VIaXN0b3J5UG9pbnQge1xuICBkYXRlOiBzdHJpbmc7IC8vIElTTyBkYXRlIHN0cmluZ1xuICBwcmljZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldGFpbGVyT2ZmZXIge1xuICBpZDogc3RyaW5nO1xuICByZXRhaWxlck5hbWU6IHN0cmluZztcbiAgcHJpY2U6IG51bWJlcjtcbiAgb3JpZ2luYWxQcmljZT86IG51bWJlcjtcbiAgaW5TdG9jazogYm9vbGVhbjtcbiAgYWZmaWxpYXRlVXJsOiBzdHJpbmc7XG4gIGxhc3RVcGRhdGVkOiBzdHJpbmc7IC8vIElTTyBkYXRlIHN0cmluZ1xufVxuXG4vKipcbiAqIEdldCBwcmljaW5nIGhpc3RvcnkgZm9yIGEgcGFydFxuICogVE9ETzogUmVwbGFjZSB3aXRoIEFQSSBjYWxsOiBHRVQgL2FwaS9wYXJ0cy97cGFydElkfS9wcmljaW5nLWhpc3RvcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByaWNpbmdIaXN0b3J5KFxuICBwYXJ0SWQ6IHN0cmluZyxcbiAgYmFzZVByaWNlOiBudW1iZXIsXG4pOiBQcmljZUhpc3RvcnlQb2ludFtdIHtcbiAgLy8gR2VuZXJhdGUgMzAgZGF5cyBvZiBwcmljZSBoaXN0b3J5IHdpdGggc29tZSB2YXJpYXRpb25cbiAgY29uc3QgZGF5cyA9IDMwO1xuICBjb25zdCBoaXN0b3J5OiBQcmljZUhpc3RvcnlQb2ludFtdID0gW107XG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcblxuICBmb3IgKGxldCBpID0gZGF5cyAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRvZGF5KTtcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBpKTtcblxuICAgIC8vIFNpbXVsYXRlIHByaWNlIGZsdWN0dWF0aW9ucyAowrExNSUgdmFyaWF0aW9uKVxuICAgIGNvbnN0IHZhcmlhdGlvbiA9IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIDAuMzsgLy8gLTE1JSB0byArMTUlXG4gICAgY29uc3QgcHJpY2UgPSBiYXNlUHJpY2UgKiAoMSArIHZhcmlhdGlvbik7XG5cbiAgICBoaXN0b3J5LnB1c2goe1xuICAgICAgZGF0ZTogZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSxcbiAgICAgIHByaWNlOiBNYXRoLnJvdW5kKHByaWNlICogMTAwKSAvIDEwMCxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoaXN0b3J5O1xufVxuXG4vKipcbiAqIEdldCByZXRhaWxlciBvZmZlcnMgZm9yIGEgcGFydFxuICogVE9ETzogUmVwbGFjZSB3aXRoIEFQSSBjYWxsOiBHRVQgL2FwaS9wYXJ0cy97cGFydElkfS9yZXRhaWxlcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJldGFpbGVyT2ZmZXJzKFxuICBwYXJ0SWQ6IHN0cmluZyxcbiAgYmFzZVByaWNlOiBudW1iZXIsXG4gIGJhc2VBZmZpbGlhdGVVcmw6IHN0cmluZyxcbik6IFJldGFpbGVyT2ZmZXJbXSB7XG4gIGNvbnN0IHJldGFpbGVycyA9IFtcbiAgICBcIlByaW1hcnkgQXJtc1wiLFxuICAgIFwiQnJvd25lbGxzXCIsXG4gICAgXCJPcHRpY3MgUGxhbmV0XCIsXG4gICAgXCJNaWR3YXlVU0FcIixcbiAgICBcIlBhbG1ldHRvIFN0YXRlIEFybW9yeVwiLFxuICBdO1xuXG4gIHJldHVybiByZXRhaWxlcnMubWFwKChyZXRhaWxlciwgaW5kZXgpID0+IHtcbiAgICAvLyBTaW11bGF0ZSBwcmljZSB2YXJpYXRpb25zIGJldHdlZW4gcmV0YWlsZXJzXG4gICAgY29uc3QgcHJpY2VWYXJpYXRpb24gPSAoTWF0aC5yYW5kb20oKSAtIDAuNCkgKiAwLjI7IC8vIC04JSB0byArMTIlXG4gICAgY29uc3QgcHJpY2UgPSBiYXNlUHJpY2UgKiAoMSArIHByaWNlVmFyaWF0aW9uKTtcbiAgICBjb25zdCBoYXNTYWxlID0gTWF0aC5yYW5kb20oKSA+IDAuNjsgLy8gNDAlIGNoYW5jZSBvZiBzYWxlXG4gICAgY29uc3Qgb3JpZ2luYWxQcmljZSA9IGhhc1NhbGUgPyBwcmljZSAqIDEuMTUgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgaW5TdG9jayA9IE1hdGgucmFuZG9tKCkgPiAwLjI7IC8vIDgwJSBjaGFuY2UgaW4gc3RvY2tcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogYHJldGFpbGVyLSR7aW5kZXh9YCxcbiAgICAgIHJldGFpbGVyTmFtZTogcmV0YWlsZXIsXG4gICAgICBwcmljZTogTWF0aC5yb3VuZChwcmljZSAqIDEwMCkgLyAxMDAsXG4gICAgICBvcmlnaW5hbFByaWNlOiBvcmlnaW5hbFByaWNlXG4gICAgICAgID8gTWF0aC5yb3VuZChvcmlnaW5hbFByaWNlICogMTAwKSAvIDEwMFxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGluU3RvY2ssXG4gICAgICBhZmZpbGlhdGVVcmw6IGJhc2VBZmZpbGlhdGVVcmwucmVwbGFjZShcImV4YW1wbGUuY29tXCIsIGAke3JldGFpbGVyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCBcIlwiKX0uY29tYCksXG4gICAgICBsYXN0VXBkYXRlZDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG4gIH0pLnNvcnQoKGEsIGIpID0+IGEucHJpY2UgLSBiLnByaWNlKTsgLy8gU29ydCBieSBwcmljZSBhc2NlbmRpbmdcbn1cblxuIl0sIm5hbWVzIjpbImdldFByaWNpbmdIaXN0b3J5IiwicGFydElkIiwiYmFzZVByaWNlIiwiZGF5cyIsImhpc3RvcnkiLCJ0b2RheSIsIkRhdGUiLCJpIiwiZGF0ZSIsInNldERhdGUiLCJnZXREYXRlIiwidmFyaWF0aW9uIiwiTWF0aCIsInJhbmRvbSIsInByaWNlIiwicHVzaCIsInRvSVNPU3RyaW5nIiwic3BsaXQiLCJyb3VuZCIsImdldFJldGFpbGVyT2ZmZXJzIiwiYmFzZUFmZmlsaWF0ZVVybCIsInJldGFpbGVycyIsIm1hcCIsInJldGFpbGVyIiwiaW5kZXgiLCJwcmljZVZhcmlhdGlvbiIsImhhc1NhbGUiLCJvcmlnaW5hbFByaWNlIiwidW5kZWZpbmVkIiwiaW5TdG9jayIsImlkIiwicmV0YWlsZXJOYW1lIiwiYWZmaWxpYXRlVXJsIiwicmVwbGFjZSIsInRvTG93ZXJDYXNlIiwibGFzdFVwZGF0ZWQiLCJzb3J0IiwiYSIsImIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./app/gunbuilder/[categoryId]/[partId]/data.ts\n"); + +/***/ }), + /***/ "(ssr)/./app/gunbuilder/[categoryId]/[partId]/page.tsx": /*!*******************************************************!*\ !*** ./app/gunbuilder/[categoryId]/[partId]/page.tsx ***! @@ -137,7 +148,29 @@ eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__w /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PartDetailPage)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(ssr)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(ssr)/./data/gunbuilderParts.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\nfunction PartDetailPage() {\n const params = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams)();\n const categoryId = params.categoryId;\n const partId = params.partId;\n const category = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.find((c)=>c.id === categoryId), [\n categoryId\n ]);\n const part = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId), [\n partId,\n categoryId\n ]);\n if (!category || !part) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"Product Not Found\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 29,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-amber-300 hover:text-amber-200 underline\",\n children: \"Return to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 32,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 28,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 27,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 26,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: `/gunbuilder/${categoryId}`,\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: [\n \"← Back to \",\n category.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 49,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 56,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 60,\n columnNumber: 28\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 59,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: [\n category.name,\n \" • Product Details\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 62,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 55,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 48,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 lg:grid-cols-[2fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-6 md:grid-cols-[1fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-2\",\n children: \"Product Information\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 75,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Brand\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 80,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.brand\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 83,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 79,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Model\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 88,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 91,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 87,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Category\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 96,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 99,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 95,\n columnNumber: 19\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 105,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-300 leading-relaxed\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 108,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 104,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 78,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 74,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full aspect-square max-w-md rounded-md border border-zinc-700 bg-zinc-900/50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center p-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-16 h-16 mx-auto text-zinc-600 mb-2\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5,\n d: \"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 127,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 120,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide\",\n children: \"Product Image\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 134,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 119,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 118,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 117,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 72,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 71,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/80 p-4 md:p-6 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400 mb-2\",\n children: \"Price\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 146,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-semibold text-amber-300\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 147,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 145,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-auto space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: `/gunbuilder?select=${categoryId}:${part.id}`,\n className: \"block w-full rounded-md border border-amber-400/60 bg-amber-400/10 px-4 py-3 text-sm font-medium text-amber-200 hover:bg-amber-400/15 text-center transition-colors\",\n children: \"Add to Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 153,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: part.affiliateUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"block w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-4 py-3 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 text-center transition-colors\",\n children: \"View Retailer\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 159,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 152,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 144,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 69,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 46,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 45,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vW3BhcnRJZF0vcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBRWdDO0FBQ0g7QUFDZTtBQUNlO0FBRzVDLFNBQVNLO0lBQ3RCLE1BQU1DLFNBQVNKLDBEQUFTQTtJQUN4QixNQUFNSyxhQUFhRCxPQUFPQyxVQUFVO0lBQ3BDLE1BQU1DLFNBQVNGLE9BQU9FLE1BQU07SUFFNUIsTUFBTUMsV0FBV1QsOENBQU9BLENBQ3RCLElBQU1HLDZEQUFVQSxDQUFDTyxJQUFJLENBQUMsQ0FBQ0MsSUFBTUEsRUFBRUMsRUFBRSxLQUFLTCxhQUN0QztRQUFDQTtLQUFXO0lBR2QsTUFBTU0sT0FBT2IsOENBQU9BLENBQ2xCLElBQU1JLHdEQUFLQSxDQUFDTSxJQUFJLENBQUMsQ0FBQ0ksSUFBTUEsRUFBRUYsRUFBRSxLQUFLSixVQUFVTSxFQUFFUCxVQUFVLEtBQUtBLGFBQzVEO1FBQUNDO1FBQVFEO0tBQVc7SUFHdEIsSUFBSSxDQUFDRSxZQUFZLENBQUNJLE1BQU07UUFDdEIscUJBQ0UsOERBQUNFO1lBQUtDLFdBQVU7c0JBQ2QsNEVBQUNDO2dCQUFJRCxXQUFVOzBCQUNiLDRFQUFDQztvQkFBSUQsV0FBVTs7c0NBQ2IsOERBQUNFOzRCQUFHRixXQUFVO3NDQUEyQzs7Ozs7O3NDQUd6RCw4REFBQ2YsaURBQUlBOzRCQUNIa0IsTUFBSzs0QkFDTEgsV0FBVTtzQ0FDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU9YO0lBRUEscUJBQ0UsOERBQUNEO1FBQUtDLFdBQVU7a0JBQ2QsNEVBQUNDO1lBQUlELFdBQVU7OzhCQUViLDhEQUFDSTtvQkFBT0osV0FBVTs7c0NBQ2hCLDhEQUFDZixpREFBSUE7NEJBQ0hrQixNQUFNLENBQUMsWUFBWSxFQUFFWixXQUFXLENBQUM7NEJBQ2pDUyxXQUFVOztnQ0FDWDtnQ0FDWVAsU0FBU1ksSUFBSTs7Ozs7OztzQ0FFMUIsOERBQUNKOzs4Q0FDQyw4REFBQ0g7b0NBQUVFLFdBQVU7OENBQWlFOzs7Ozs7OENBRzlFLDhEQUFDRTtvQ0FBR0YsV0FBVTs7d0NBQ1hILEtBQUtTLEtBQUs7d0NBQUM7c0RBQUMsOERBQUNDOzRDQUFLUCxXQUFVO3NEQUFrQkgsS0FBS1EsSUFBSTs7Ozs7Ozs7Ozs7OzhDQUUxRCw4REFBQ1A7b0NBQUVFLFdBQVU7O3dDQUNWUCxTQUFTWSxJQUFJO3dDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCQU1yQiw4REFBQ0o7b0JBQUlELFdBQVU7O3NDQUViLDhEQUFDUTs0QkFBUVIsV0FBVTtzQ0FDakIsNEVBQUNDO2dDQUFJRCxXQUFVOztrREFFYiw4REFBQ0M7OzBEQUNDLDhEQUFDQTtnREFBSUQsV0FBVTswREFBdUU7Ozs7OzswREFHdEYsOERBQUNDO2dEQUFJRCxXQUFVOztrRUFDYiw4REFBQ0M7OzBFQUNDLDhEQUFDQTtnRUFBSUQsV0FBVTswRUFBcUQ7Ozs7OzswRUFHcEUsOERBQUNDO2dFQUFJRCxXQUFVOzBFQUNaSCxLQUFLUyxLQUFLOzs7Ozs7Ozs7Ozs7a0VBR2YsOERBQUNMOzswRUFDQyw4REFBQ0E7Z0VBQUlELFdBQVU7MEVBQXFEOzs7Ozs7MEVBR3BFLDhEQUFDQztnRUFBSUQsV0FBVTswRUFDWkgsS0FBS1EsSUFBSTs7Ozs7Ozs7Ozs7O2tFQUdkLDhEQUFDSjs7MEVBQ0MsOERBQUNBO2dFQUFJRCxXQUFVOzBFQUFxRDs7Ozs7OzBFQUdwRSw4REFBQ0M7Z0VBQUlELFdBQVU7MEVBQ1pQLFNBQVNZLElBQUk7Ozs7Ozs7Ozs7OztvREFHakJSLEtBQUtZLEtBQUssa0JBQ1QsOERBQUNSOzswRUFDQyw4REFBQ0E7Z0VBQUlELFdBQVU7MEVBQXFEOzs7Ozs7MEVBR3BFLDhEQUFDQztnRUFBSUQsV0FBVTswRUFDWkgsS0FBS1ksS0FBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tEQVFyQiw4REFBQ1I7d0NBQUlELFdBQVU7a0RBQ2IsNEVBQUNDOzRDQUFJRCxXQUFVO3NEQUNiLDRFQUFDQztnREFBSUQsV0FBVTs7a0VBQ2IsOERBQUNVO3dEQUNDVixXQUFVO3dEQUNWVyxNQUFLO3dEQUNMQyxRQUFPO3dEQUNQQyxTQUFRO3dEQUNSQyxPQUFNO2tFQUVOLDRFQUFDQzs0REFDQ0MsZUFBYzs0REFDZEMsZ0JBQWU7NERBQ2ZDLGFBQWE7NERBQ2JDLEdBQUU7Ozs7Ozs7Ozs7O2tFQUdOLDhEQUFDckI7d0RBQUVFLFdBQVU7a0VBQWdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0NBVXZFLDhEQUFDb0I7NEJBQU1wQixXQUFVOzs4Q0FDZiw4REFBQ0M7b0NBQUlELFdBQVU7O3NEQUNiLDhEQUFDQzs0Q0FBSUQsV0FBVTtzREFBNkI7Ozs7OztzREFDNUMsOERBQUNDOzRDQUFJRCxXQUFVOztnREFBd0M7Z0RBQ25ESCxLQUFLd0IsS0FBSyxDQUFDQyxPQUFPLENBQUM7Ozs7Ozs7Ozs7Ozs7OENBSXpCLDhEQUFDckI7b0NBQUlELFdBQVU7O3NEQUNiLDhEQUFDZixpREFBSUE7NENBQ0hrQixNQUFNLENBQUMsbUJBQW1CLEVBQUVaLFdBQVcsQ0FBQyxFQUFFTSxLQUFLRCxFQUFFLENBQUMsQ0FBQzs0Q0FDbkRJLFdBQVU7c0RBQ1g7Ozs7OztzREFHRCw4REFBQ3VCOzRDQUNDcEIsTUFBTU4sS0FBSzJCLFlBQVk7NENBQ3ZCQyxRQUFPOzRDQUNQQyxLQUFJOzRDQUNKMUIsV0FBVTtzREFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTZiIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLy4vYXBwL2d1bmJ1aWxkZXIvW2NhdGVnb3J5SWRdL1twYXJ0SWRdL3BhZ2UudHN4PzQyYzEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB7IHVzZVBhcmFtcyB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIjtcbmltcG9ydCB7IENBVEVHT1JJRVMsIFBBUlRTIH0gZnJvbSBcIkAvZGF0YS9ndW5idWlsZGVyUGFydHNcIjtcbmltcG9ydCB0eXBlIHsgQ2F0ZWdvcnlJZCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFydERldGFpbFBhZ2UoKSB7XG4gIGNvbnN0IHBhcmFtcyA9IHVzZVBhcmFtcygpO1xuICBjb25zdCBjYXRlZ29yeUlkID0gcGFyYW1zLmNhdGVnb3J5SWQgYXMgQ2F0ZWdvcnlJZDtcbiAgY29uc3QgcGFydElkID0gcGFyYW1zLnBhcnRJZCBhcyBzdHJpbmc7XG5cbiAgY29uc3QgY2F0ZWdvcnkgPSB1c2VNZW1vKFxuICAgICgpID0+IENBVEVHT1JJRVMuZmluZCgoYykgPT4gYy5pZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW2NhdGVnb3J5SWRdLFxuICApO1xuXG4gIGNvbnN0IHBhcnQgPSB1c2VNZW1vKFxuICAgICgpID0+IFBBUlRTLmZpbmQoKHApID0+IHAuaWQgPT09IHBhcnRJZCAmJiBwLmNhdGVnb3J5SWQgPT09IGNhdGVnb3J5SWQpLFxuICAgIFtwYXJ0SWQsIGNhdGVnb3J5SWRdLFxuICApO1xuXG4gIGlmICghY2F0ZWdvcnkgfHwgIXBhcnQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gbWF4LXctNnhsIHB4LTQgcHktNiBsZzpweS0xMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtemluYy01MCBtYi00XCI+XG4gICAgICAgICAgICAgIFByb2R1Y3QgTm90IEZvdW5kXG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9ndW5idWlsZGVyXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDAgaG92ZXI6dGV4dC1hbWJlci0yMDAgdW5kZXJsaW5lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmV0dXJuIHRvIEd1bmJ1aWxkZXJcbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21haW4+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIG1heC13LTZ4bCBweC00IHB5LTYgbGc6cHktMTBcIj5cbiAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJtYi02XCI+XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlci8ke2NhdGVnb3J5SWR9YH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMzAwIG1iLTQgaW5saW5lLWJsb2NrXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICDihpAgQmFjayB0byB7Y2F0ZWdvcnkubmFtZX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4yZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgIFNoYWRvdyBTdGFuZGFyZFxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cIm10LTEgdGV4dC0yeGwgbWQ6dGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodFwiPlxuICAgICAgICAgICAgICB7cGFydC5icmFuZH0gPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDBcIj57cGFydC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0yIHRleHQtc20gdGV4dC16aW5jLTQwMCBtYXgtdy14bFwiPlxuICAgICAgICAgICAgICB7Y2F0ZWdvcnkubmFtZX0g4oCiIFByb2R1Y3QgRGV0YWlsc1xuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICB7LyogUHJvZHVjdCBEZXRhaWxzICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ2FwLTQgbGc6Z3JpZC1jb2xzLVsyZnIsMWZyXVwiPlxuICAgICAgICAgIHsvKiBNYWluIENvbnRlbnQgKi99XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtNCBtZDpwLTZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBnYXAtNiBtZDpncmlkLWNvbHMtWzFmciwxZnJdXCI+XG4gICAgICAgICAgICAgIHsvKiBQcm9kdWN0IEluZm8gKi99XG4gICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWzAuMTZlbV0gdXBwZXJjYXNlIHRleHQtemluYy00MDAgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgUHJvZHVjdCBJbmZvcm1hdGlvblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQnJhbmRcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0LmJyYW5kfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy01MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUgbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIE1vZGVsXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7cGFydC5uYW1lfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy01MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUgbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIENhdGVnb3J5XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7Y2F0ZWdvcnkubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIHtwYXJ0Lm5vdGVzICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtemluYy0zMDAgbGVhZGluZy1yZWxheGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5ub3Rlc31cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICB7LyogUHJvZHVjdCBJbWFnZSAqL31cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGwgYXNwZWN0LXNxdWFyZSBtYXgtdy1tZCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05MDAvNTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgcC04XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LTE2IGgtMTYgbXgtYXV0byB0ZXh0LXppbmMtNjAwIG1iLTJcIlxuICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXsxLjV9XG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQgMTZsNC41ODYtNC41ODZhMiAyIDAgMDEyLjgyOCAwTDE2IDE2bS0yLTJsMS41ODYtMS41ODZhMiAyIDAgMDEyLjgyOCAwTDIwIDE0bS02LTZoLjAxTTYgMjBoMTJhMiAyIDAgMDAyLTJWNmEyIDIgMCAwMC0yLTJINmEyIDIgMCAwMC0yIDJ2MTJhMiAyIDAgMDAyIDJ6XCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgUHJvZHVjdCBJbWFnZVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICB7LyogU2lkZWJhciAqL31cbiAgICAgICAgICA8YXNpZGUgY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzgwIHAtNCBtZDpwLTYgZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi00XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNDAwIG1iLTJcIj5QcmljZTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0zMDBcIj5cbiAgICAgICAgICAgICAgICAke3BhcnQucHJpY2UudG9GaXhlZCgyKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC1hdXRvIHNwYWNlLXktM1wiPlxuICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlcj9zZWxlY3Q9JHtjYXRlZ29yeUlkfToke3BhcnQuaWR9YH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9jayB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWFtYmVyLTQwMC82MCBiZy1hbWJlci00MDAvMTAgcHgtNCBweS0zIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1hbWJlci0yMDAgaG92ZXI6YmctYW1iZXItNDAwLzE1IHRleHQtY2VudGVyIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEFkZCB0byBCdWlsZFxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgaHJlZj17cGFydC5hZmZpbGlhdGVVcmx9XG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9jayB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzUwIHB4LTQgcHktMyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtemluYy0zMDAgaG92ZXI6YmctemluYy04MDAgaG92ZXI6Ym9yZGVyLXppbmMtNjAwIHRleHQtY2VudGVyIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFZpZXcgUmV0YWlsZXJcbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hc2lkZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21haW4+XG4gICk7XG59XG5cbiJdLCJuYW1lcyI6WyJ1c2VNZW1vIiwiTGluayIsInVzZVBhcmFtcyIsIkNBVEVHT1JJRVMiLCJQQVJUUyIsIlBhcnREZXRhaWxQYWdlIiwicGFyYW1zIiwiY2F0ZWdvcnlJZCIsInBhcnRJZCIsImNhdGVnb3J5IiwiZmluZCIsImMiLCJpZCIsInBhcnQiLCJwIiwibWFpbiIsImNsYXNzTmFtZSIsImRpdiIsImgxIiwiaHJlZiIsImhlYWRlciIsIm5hbWUiLCJicmFuZCIsInNwYW4iLCJzZWN0aW9uIiwibm90ZXMiLCJzdmciLCJmaWxsIiwic3Ryb2tlIiwidmlld0JveCIsInhtbG5zIiwicGF0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsInN0cm9rZVdpZHRoIiwiZCIsImFzaWRlIiwicHJpY2UiLCJ0b0ZpeGVkIiwiYSIsImFmZmlsaWF0ZVVybCIsInRhcmdldCIsInJlbCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./app/gunbuilder/[categoryId]/[partId]/page.tsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PartDetailPage)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(ssr)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(ssr)/./data/gunbuilderParts.ts\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./data */ \"(ssr)/./app/gunbuilder/[categoryId]/[partId]/data.ts\");\n/* harmony import */ var _components_PricingHistoryGraph__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/PricingHistoryGraph */ \"(ssr)/./components/PricingHistoryGraph.tsx\");\n/* harmony import */ var _components_RetailersList__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/components/RetailersList */ \"(ssr)/./components/RetailersList.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\n\n\n\nfunction PartDetailPage() {\n const params = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams)();\n const categoryId = params.categoryId;\n const partId = params.partId;\n const category = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.find((c)=>c.id === categoryId), [\n categoryId\n ]);\n const part = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId), [\n partId,\n categoryId\n ]);\n // Get pricing history and retailer offers\n // TODO: Replace with API calls when endpoints are ready\n const pricingHistory = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>part ? (0,_data__WEBPACK_IMPORTED_MODULE_5__.getPricingHistory)(part.id, part.price) : [], [\n part\n ]);\n const retailerOffers = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>part ? (0,_data__WEBPACK_IMPORTED_MODULE_5__.getRetailerOffers)(part.id, part.price, part.affiliateUrl) : [], [\n part\n ]);\n if (!category || !part) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"Product Not Found\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 47,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-amber-300 hover:text-amber-200 underline\",\n children: \"Return to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 50,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 46,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 45,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 44,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: `/gunbuilder/${categoryId}`,\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: [\n \"← Back to \",\n category.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 67,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 74,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 78,\n columnNumber: 28\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 77,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: [\n category.name,\n \" • Product Details\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 80,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 73,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 66,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 lg:grid-cols-[2fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-6 md:grid-cols-[1fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-2\",\n children: \"Product Information\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 95,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Brand\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 100,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.brand\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 103,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 99,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Model\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 108,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 111,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 107,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Category\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 116,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 119,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 115,\n columnNumber: 21\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 125,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-300 leading-relaxed\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 128,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 124,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 98,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 94,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full aspect-square max-w-md rounded-md border border-zinc-700 bg-zinc-900/50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center p-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-16 h-16 mx-auto text-zinc-600 mb-2\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5,\n d: \"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 147,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 140,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide\",\n children: \"Product Image\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 154,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 139,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 138,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 137,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 92,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 91,\n columnNumber: 13\n }, this),\n retailerOffers.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_RetailersList__WEBPACK_IMPORTED_MODULE_7__.RetailersList, {\n retailers: retailerOffers\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 166,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 165,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 89,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/80 p-4 md:p-6 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400 mb-2\",\n children: \"Price\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 174,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-semibold text-amber-300\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 175,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 173,\n columnNumber: 13\n }, this),\n pricingHistory.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_PricingHistoryGraph__WEBPACK_IMPORTED_MODULE_6__.PricingHistoryGraph, {\n data: pricingHistory,\n currentPrice: part.price\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 183,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 182,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-auto space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: `/gunbuilder?select=${categoryId}:${part.id}`,\n className: \"block w-full rounded-md border border-amber-400/60 bg-amber-400/10 px-4 py-3 text-sm font-medium text-amber-200 hover:bg-amber-400/15 text-center transition-colors\",\n children: \"Add to Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 191,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: part.affiliateUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"block w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-4 py-3 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 text-center transition-colors\",\n children: \"View Retailer\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 197,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 190,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 172,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 87,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 64,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 63,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vW3BhcnRJZF0vcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBRWdDO0FBQ0g7QUFDZTtBQUNlO0FBRUc7QUFDUztBQUNaO0FBRTVDLFNBQVNTO0lBQ3RCLE1BQU1DLFNBQVNSLDBEQUFTQTtJQUN4QixNQUFNUyxhQUFhRCxPQUFPQyxVQUFVO0lBQ3BDLE1BQU1DLFNBQVNGLE9BQU9FLE1BQU07SUFFNUIsTUFBTUMsV0FBV2IsOENBQU9BLENBQ3RCLElBQU1HLDZEQUFVQSxDQUFDVyxJQUFJLENBQUMsQ0FBQ0MsSUFBTUEsRUFBRUMsRUFBRSxLQUFLTCxhQUN0QztRQUFDQTtLQUFXO0lBR2QsTUFBTU0sT0FBT2pCLDhDQUFPQSxDQUNsQixJQUFNSSx3REFBS0EsQ0FBQ1UsSUFBSSxDQUFDLENBQUNJLElBQU1BLEVBQUVGLEVBQUUsS0FBS0osVUFBVU0sRUFBRVAsVUFBVSxLQUFLQSxhQUM1RDtRQUFDQztRQUFRRDtLQUFXO0lBR3RCLDBDQUEwQztJQUMxQyx3REFBd0Q7SUFDeEQsTUFBTVEsaUJBQWlCbkIsOENBQU9BLENBQzVCLElBQU9pQixPQUFPWix3REFBaUJBLENBQUNZLEtBQUtELEVBQUUsRUFBRUMsS0FBS0csS0FBSyxJQUFJLEVBQUUsRUFDekQ7UUFBQ0g7S0FBSztJQUdSLE1BQU1JLGlCQUFpQnJCLDhDQUFPQSxDQUM1QixJQUNFaUIsT0FDSVgsd0RBQWlCQSxDQUFDVyxLQUFLRCxFQUFFLEVBQUVDLEtBQUtHLEtBQUssRUFBRUgsS0FBS0ssWUFBWSxJQUN4RCxFQUFFLEVBQ1I7UUFBQ0w7S0FBSztJQUdSLElBQUksQ0FBQ0osWUFBWSxDQUFDSSxNQUFNO1FBQ3RCLHFCQUNFLDhEQUFDTTtZQUFLQyxXQUFVO3NCQUNkLDRFQUFDQztnQkFBSUQsV0FBVTswQkFDYiw0RUFBQ0M7b0JBQUlELFdBQVU7O3NDQUNiLDhEQUFDRTs0QkFBR0YsV0FBVTtzQ0FBMkM7Ozs7OztzQ0FHekQsOERBQUN2QixpREFBSUE7NEJBQ0gwQixNQUFLOzRCQUNMSCxXQUFVO3NDQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBT1g7SUFFQSxxQkFDRSw4REFBQ0Q7UUFBS0MsV0FBVTtrQkFDZCw0RUFBQ0M7WUFBSUQsV0FBVTs7OEJBRWIsOERBQUNJO29CQUFPSixXQUFVOztzQ0FDaEIsOERBQUN2QixpREFBSUE7NEJBQ0gwQixNQUFNLENBQUMsWUFBWSxFQUFFaEIsV0FBVyxDQUFDOzRCQUNqQ2EsV0FBVTs7Z0NBQ1g7Z0NBQ1lYLFNBQVNnQixJQUFJOzs7Ozs7O3NDQUUxQiw4REFBQ0o7OzhDQUNDLDhEQUFDUDtvQ0FBRU0sV0FBVTs4Q0FBaUU7Ozs7Ozs4Q0FHOUUsOERBQUNFO29DQUFHRixXQUFVOzt3Q0FDWFAsS0FBS2EsS0FBSzt3Q0FBQztzREFBQyw4REFBQ0M7NENBQUtQLFdBQVU7c0RBQWtCUCxLQUFLWSxJQUFJOzs7Ozs7Ozs7Ozs7OENBRTFELDhEQUFDWDtvQ0FBRU0sV0FBVTs7d0NBQ1ZYLFNBQVNnQixJQUFJO3dDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCQU1yQiw4REFBQ0o7b0JBQUlELFdBQVU7O3NDQUViLDhEQUFDUTs0QkFBUVIsV0FBVTs7OENBRWpCLDhEQUFDQztvQ0FBSUQsV0FBVTs4Q0FDYiw0RUFBQ0M7d0NBQUlELFdBQVU7OzBEQUViLDhEQUFDQzs7a0VBQ0MsOERBQUNBO3dEQUFJRCxXQUFVO2tFQUF1RTs7Ozs7O2tFQUd0Riw4REFBQ0M7d0RBQUlELFdBQVU7OzBFQUNiLDhEQUFDQzs7a0ZBQ0MsOERBQUNBO3dFQUFJRCxXQUFVO2tGQUFxRDs7Ozs7O2tGQUdwRSw4REFBQ0M7d0VBQUlELFdBQVU7a0ZBQ1pQLEtBQUthLEtBQUs7Ozs7Ozs7Ozs7OzswRUFHZiw4REFBQ0w7O2tGQUNDLDhEQUFDQTt3RUFBSUQsV0FBVTtrRkFBcUQ7Ozs7OztrRkFHcEUsOERBQUNDO3dFQUFJRCxXQUFVO2tGQUNaUCxLQUFLWSxJQUFJOzs7Ozs7Ozs7Ozs7MEVBR2QsOERBQUNKOztrRkFDQyw4REFBQ0E7d0VBQUlELFdBQVU7a0ZBQXFEOzs7Ozs7a0ZBR3BFLDhEQUFDQzt3RUFBSUQsV0FBVTtrRkFDWlgsU0FBU2dCLElBQUk7Ozs7Ozs7Ozs7Ozs0REFHakJaLEtBQUtnQixLQUFLLGtCQUNULDhEQUFDUjs7a0ZBQ0MsOERBQUNBO3dFQUFJRCxXQUFVO2tGQUFxRDs7Ozs7O2tGQUdwRSw4REFBQ0M7d0VBQUlELFdBQVU7a0ZBQ1pQLEtBQUtnQixLQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MERBUXJCLDhEQUFDUjtnREFBSUQsV0FBVTswREFDYiw0RUFBQ0M7b0RBQUlELFdBQVU7OERBQ2IsNEVBQUNDO3dEQUFJRCxXQUFVOzswRUFDYiw4REFBQ1U7Z0VBQ0NWLFdBQVU7Z0VBQ1ZXLE1BQUs7Z0VBQ0xDLFFBQU87Z0VBQ1BDLFNBQVE7Z0VBQ1JDLE9BQU07MEVBRU4sNEVBQUNDO29FQUNDQyxlQUFjO29FQUNkQyxnQkFBZTtvRUFDZkMsYUFBYTtvRUFDYkMsR0FBRTs7Ozs7Ozs7Ozs7MEVBR04sOERBQUN6QjtnRUFBRU0sV0FBVTswRUFBZ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQ0FVdEVILGVBQWV1QixNQUFNLEdBQUcsbUJBQ3ZCLDhEQUFDbkI7b0NBQUlELFdBQVU7OENBQ2IsNEVBQUNoQixvRUFBYUE7d0NBQUNxQyxXQUFXeEI7Ozs7Ozs7Ozs7Ozs7Ozs7O3NDQU1oQyw4REFBQ3lCOzRCQUFNdEIsV0FBVTs7OENBQ2YsOERBQUNDO29DQUFJRCxXQUFVOztzREFDYiw4REFBQ0M7NENBQUlELFdBQVU7c0RBQTZCOzs7Ozs7c0RBQzVDLDhEQUFDQzs0Q0FBSUQsV0FBVTs7Z0RBQXdDO2dEQUNuRFAsS0FBS0csS0FBSyxDQUFDMkIsT0FBTyxDQUFDOzs7Ozs7Ozs7Ozs7O2dDQUt4QjVCLGVBQWV5QixNQUFNLEdBQUcsbUJBQ3ZCLDhEQUFDbkI7b0NBQUlELFdBQVU7OENBQ2IsNEVBQUNqQixnRkFBbUJBO3dDQUNsQnlDLE1BQU03Qjt3Q0FDTjhCLGNBQWNoQyxLQUFLRyxLQUFLOzs7Ozs7Ozs7Ozs4Q0FLOUIsOERBQUNLO29DQUFJRCxXQUFVOztzREFDYiw4REFBQ3ZCLGlEQUFJQTs0Q0FDSDBCLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRWhCLFdBQVcsQ0FBQyxFQUFFTSxLQUFLRCxFQUFFLENBQUMsQ0FBQzs0Q0FDbkRRLFdBQVU7c0RBQ1g7Ozs7OztzREFHRCw4REFBQzBCOzRDQUNDdkIsTUFBTVYsS0FBS0ssWUFBWTs0Q0FDdkI2QixRQUFPOzRDQUNQQyxLQUFJOzRDQUNKNUIsV0FBVTtzREFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTZiIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLy4vYXBwL2d1bmJ1aWxkZXIvW2NhdGVnb3J5SWRdL1twYXJ0SWRdL3BhZ2UudHN4PzQyYzEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB7IHVzZVBhcmFtcyB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIjtcbmltcG9ydCB7IENBVEVHT1JJRVMsIFBBUlRTIH0gZnJvbSBcIkAvZGF0YS9ndW5idWlsZGVyUGFydHNcIjtcbmltcG9ydCB0eXBlIHsgQ2F0ZWdvcnlJZCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcbmltcG9ydCB7IGdldFByaWNpbmdIaXN0b3J5LCBnZXRSZXRhaWxlck9mZmVycyB9IGZyb20gXCIuL2RhdGFcIjtcbmltcG9ydCB7IFByaWNpbmdIaXN0b3J5R3JhcGggfSBmcm9tIFwiQC9jb21wb25lbnRzL1ByaWNpbmdIaXN0b3J5R3JhcGhcIjtcbmltcG9ydCB7IFJldGFpbGVyc0xpc3QgfSBmcm9tIFwiQC9jb21wb25lbnRzL1JldGFpbGVyc0xpc3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFydERldGFpbFBhZ2UoKSB7XG4gIGNvbnN0IHBhcmFtcyA9IHVzZVBhcmFtcygpO1xuICBjb25zdCBjYXRlZ29yeUlkID0gcGFyYW1zLmNhdGVnb3J5SWQgYXMgQ2F0ZWdvcnlJZDtcbiAgY29uc3QgcGFydElkID0gcGFyYW1zLnBhcnRJZCBhcyBzdHJpbmc7XG5cbiAgY29uc3QgY2F0ZWdvcnkgPSB1c2VNZW1vKFxuICAgICgpID0+IENBVEVHT1JJRVMuZmluZCgoYykgPT4gYy5pZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW2NhdGVnb3J5SWRdLFxuICApO1xuXG4gIGNvbnN0IHBhcnQgPSB1c2VNZW1vKFxuICAgICgpID0+IFBBUlRTLmZpbmQoKHApID0+IHAuaWQgPT09IHBhcnRJZCAmJiBwLmNhdGVnb3J5SWQgPT09IGNhdGVnb3J5SWQpLFxuICAgIFtwYXJ0SWQsIGNhdGVnb3J5SWRdLFxuICApO1xuXG4gIC8vIEdldCBwcmljaW5nIGhpc3RvcnkgYW5kIHJldGFpbGVyIG9mZmVyc1xuICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggQVBJIGNhbGxzIHdoZW4gZW5kcG9pbnRzIGFyZSByZWFkeVxuICBjb25zdCBwcmljaW5nSGlzdG9yeSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHBhcnQgPyBnZXRQcmljaW5nSGlzdG9yeShwYXJ0LmlkLCBwYXJ0LnByaWNlKSA6IFtdKSxcbiAgICBbcGFydF0sXG4gICk7XG5cbiAgY29uc3QgcmV0YWlsZXJPZmZlcnMgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBwYXJ0XG4gICAgICAgID8gZ2V0UmV0YWlsZXJPZmZlcnMocGFydC5pZCwgcGFydC5wcmljZSwgcGFydC5hZmZpbGlhdGVVcmwpXG4gICAgICAgIDogW10sXG4gICAgW3BhcnRdLFxuICApO1xuXG4gIGlmICghY2F0ZWdvcnkgfHwgIXBhcnQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gbWF4LXctNnhsIHB4LTQgcHktNiBsZzpweS0xMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtemluYy01MCBtYi00XCI+XG4gICAgICAgICAgICAgIFByb2R1Y3QgTm90IEZvdW5kXG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9ndW5idWlsZGVyXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDAgaG92ZXI6dGV4dC1hbWJlci0yMDAgdW5kZXJsaW5lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmV0dXJuIHRvIEd1bmJ1aWxkZXJcbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21haW4+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIG1heC13LTZ4bCBweC00IHB5LTYgbGc6cHktMTBcIj5cbiAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJtYi02XCI+XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlci8ke2NhdGVnb3J5SWR9YH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMzAwIG1iLTQgaW5saW5lLWJsb2NrXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICDihpAgQmFjayB0byB7Y2F0ZWdvcnkubmFtZX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4yZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgIFNoYWRvdyBTdGFuZGFyZFxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cIm10LTEgdGV4dC0yeGwgbWQ6dGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodFwiPlxuICAgICAgICAgICAgICB7cGFydC5icmFuZH0gPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDBcIj57cGFydC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0yIHRleHQtc20gdGV4dC16aW5jLTQwMCBtYXgtdy14bFwiPlxuICAgICAgICAgICAgICB7Y2F0ZWdvcnkubmFtZX0g4oCiIFByb2R1Y3QgRGV0YWlsc1xuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICB7LyogUHJvZHVjdCBEZXRhaWxzICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ2FwLTQgbGc6Z3JpZC1jb2xzLVsyZnIsMWZyXVwiPlxuICAgICAgICAgIHsvKiBNYWluIENvbnRlbnQgKi99XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgICB7LyogUHJvZHVjdCBJbmZvcm1hdGlvbiAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtNCBtZDpwLTZcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC02IG1kOmdyaWQtY29scy1bMWZyLDFmcl1cIj5cbiAgICAgICAgICAgICAgICB7LyogUHJvZHVjdCBJbmZvICovfVxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4xNmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTQwMCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIFByb2R1Y3QgSW5mb3JtYXRpb25cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBCcmFuZFxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQuYnJhbmR9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2NhdGVnb3J5Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB7cGFydC5ub3RlcyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTMwMCBsZWFkaW5nLXJlbGF4ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgey8qIFByb2R1Y3QgSW1hZ2UgKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBhc3BlY3Qtc3F1YXJlIG1heC13LW1kIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC81MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIHAtOFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMTYgaC0xNiBteC1hdXRvIHRleHQtemluYy02MDAgbWItMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezEuNX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00IDE2bDQuNTg2LTQuNTg2YTIgMiAwIDAxMi44MjggMEwxNiAxNm0tMi0ybDEuNTg2LTEuNTg2YTIgMiAwIDAxMi44MjggMEwyMCAxNG0tNi02aC4wMU02IDIwaDEyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyelwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUHJvZHVjdCBJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIFJldGFpbGVycyBMaXN0ICovfVxuICAgICAgICAgICAge3JldGFpbGVyT2ZmZXJzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTk1MC82MCBwLTQgbWQ6cC02XCI+XG4gICAgICAgICAgICAgICAgPFJldGFpbGVyc0xpc3QgcmV0YWlsZXJzPXtyZXRhaWxlck9mZmVyc30gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgIHsvKiBTaWRlYmFyICovfVxuICAgICAgICAgIDxhc2lkZSBjbGFzc05hbWU9XCJyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItemluYy04MDAgYmctemluYy05NTAvODAgcC00IG1kOnAtNiBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy00MDAgbWItMlwiPlByaWNlPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMFwiPlxuICAgICAgICAgICAgICAgICR7cGFydC5wcmljZS50b0ZpeGVkKDIpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogUHJpY2luZyBIaXN0b3J5ICovfVxuICAgICAgICAgICAge3ByaWNpbmdIaXN0b3J5Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTZcIj5cbiAgICAgICAgICAgICAgICA8UHJpY2luZ0hpc3RvcnlHcmFwaFxuICAgICAgICAgICAgICAgICAgZGF0YT17cHJpY2luZ0hpc3Rvcnl9XG4gICAgICAgICAgICAgICAgICBjdXJyZW50UHJpY2U9e3BhcnQucHJpY2V9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LWF1dG8gc3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyP3NlbGVjdD0ke2NhdGVnb3J5SWR9OiR7cGFydC5pZH1gfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYW1iZXItNDAwLzYwIGJnLWFtYmVyLTQwMC8xMCBweC00IHB5LTMgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWFtYmVyLTIwMCBob3ZlcjpiZy1hbWJlci00MDAvMTUgdGV4dC1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQWRkIHRvIEJ1aWxkXG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBocmVmPXtwYXJ0LmFmZmlsaWF0ZVVybH1cbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05MDAvNTAgcHgtNCBweS0zIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy02MDAgdGV4dC1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBSZXRhaWxlclxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FzaWRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWFpbj5cbiAgKTtcbn1cblxuIl0sIm5hbWVzIjpbInVzZU1lbW8iLCJMaW5rIiwidXNlUGFyYW1zIiwiQ0FURUdPUklFUyIsIlBBUlRTIiwiZ2V0UHJpY2luZ0hpc3RvcnkiLCJnZXRSZXRhaWxlck9mZmVycyIsIlByaWNpbmdIaXN0b3J5R3JhcGgiLCJSZXRhaWxlcnNMaXN0IiwiUGFydERldGFpbFBhZ2UiLCJwYXJhbXMiLCJjYXRlZ29yeUlkIiwicGFydElkIiwiY2F0ZWdvcnkiLCJmaW5kIiwiYyIsImlkIiwicGFydCIsInAiLCJwcmljaW5nSGlzdG9yeSIsInByaWNlIiwicmV0YWlsZXJPZmZlcnMiLCJhZmZpbGlhdGVVcmwiLCJtYWluIiwiY2xhc3NOYW1lIiwiZGl2IiwiaDEiLCJocmVmIiwiaGVhZGVyIiwibmFtZSIsImJyYW5kIiwic3BhbiIsInNlY3Rpb24iLCJub3RlcyIsInN2ZyIsImZpbGwiLCJzdHJva2UiLCJ2aWV3Qm94IiwieG1sbnMiLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwibGVuZ3RoIiwicmV0YWlsZXJzIiwiYXNpZGUiLCJ0b0ZpeGVkIiwiZGF0YSIsImN1cnJlbnRQcmljZSIsImEiLCJ0YXJnZXQiLCJyZWwiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./app/gunbuilder/[categoryId]/[partId]/page.tsx\n"); + +/***/ }), + +/***/ "(ssr)/./components/PricingHistoryGraph.tsx": +/*!********************************************!*\ + !*** ./components/PricingHistoryGraph.tsx ***! + \********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PricingHistoryGraph: () => (/* binding */ PricingHistoryGraph)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* __next_internal_client_entry_do_not_use__ PricingHistoryGraph auto */ \nfunction PricingHistoryGraph({ data, currentPrice }) {\n if (data.length === 0) return null;\n // Calculate chart dimensions\n const width = 100;\n const height = 60;\n const padding = 4;\n // Find min and max prices for scaling\n const prices = data.map((d)=>d.price);\n const minPrice = Math.min(...prices);\n const maxPrice = Math.max(...prices);\n const priceRange = maxPrice - minPrice || 1; // Avoid division by zero\n // Generate path points\n const points = data.map((point, index)=>{\n const x = padding + index / (data.length - 1) * (width - padding * 2);\n const normalizedPrice = (point.price - minPrice) / priceRange;\n const y = padding + (height - padding * 2) * (1 - normalizedPrice);\n return {\n x,\n y,\n price: point.price\n };\n });\n // Create SVG path\n const pathData = points.map((point, index)=>`${index === 0 ? \"M\" : \"L\"} ${point.x} ${point.y}`).join(\" \");\n // Create area path (for gradient fill)\n const areaPath = `${pathData} L ${width - padding} ${height - padding} L ${padding} ${height - padding} Z`;\n // Format date for display\n const formatDate = (dateStr)=>{\n const date = new Date(dateStr);\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\"\n });\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400\",\n children: \"Price History (30 Days)\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 53,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 text-xs text-zinc-500\",\n children: [\n \"Current: \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300 font-semibold\",\n children: [\n \"$\",\n currentPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 57,\n columnNumber: 22\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 56,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 52,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500\",\n children: [\n formatDate(data[0].date),\n \" - \",\n formatDate(data[data.length - 1].date)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 60,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 51,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-32 rounded-md border border-zinc-800 bg-zinc-900/30 p-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n viewBox: `0 0 ${width} ${height}`,\n className: \"w-full h-full\",\n preserveAspectRatio: \"none\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"defs\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"linearGradient\", {\n id: \"priceGradient\",\n x1: \"0%\",\n y1: \"0%\",\n x2: \"0%\",\n y2: \"100%\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"stop\", {\n offset: \"0%\",\n stopColor: \"#fbbf24\",\n stopOpacity: \"0.3\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 73,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"stop\", {\n offset: \"100%\",\n stopColor: \"#fbbf24\",\n stopOpacity: \"0.05\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 74,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 72,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 71,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: areaPath,\n fill: \"url(#priceGradient)\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 78,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: pathData,\n fill: \"none\",\n stroke: \"#fbbf24\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 83,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: points[points.length - 1].x,\n cy: points[points.length - 1].y,\n r: \"2\",\n fill: \"#fbbf24\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 92,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 66,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 65,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-2 flex items-center justify-between text-xs text-zinc-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"Low: $\",\n minPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 102,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"High: $\",\n maxPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 103,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 101,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 50,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb21wb25lbnRzL1ByaWNpbmdIaXN0b3J5R3JhcGgudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFTTyxTQUFTQSxvQkFBb0IsRUFDbENDLElBQUksRUFDSkMsWUFBWSxFQUNhO0lBQ3pCLElBQUlELEtBQUtFLE1BQU0sS0FBSyxHQUFHLE9BQU87SUFFOUIsNkJBQTZCO0lBQzdCLE1BQU1DLFFBQVE7SUFDZCxNQUFNQyxTQUFTO0lBQ2YsTUFBTUMsVUFBVTtJQUVoQixzQ0FBc0M7SUFDdEMsTUFBTUMsU0FBU04sS0FBS08sR0FBRyxDQUFDLENBQUNDLElBQU1BLEVBQUVDLEtBQUs7SUFDdEMsTUFBTUMsV0FBV0MsS0FBS0MsR0FBRyxJQUFJTjtJQUM3QixNQUFNTyxXQUFXRixLQUFLRyxHQUFHLElBQUlSO0lBQzdCLE1BQU1TLGFBQWFGLFdBQVdILFlBQVksR0FBRyx5QkFBeUI7SUFFdEUsdUJBQXVCO0lBQ3ZCLE1BQU1NLFNBQVNoQixLQUFLTyxHQUFHLENBQUMsQ0FBQ1UsT0FBT0M7UUFDOUIsTUFBTUMsSUFBSWQsVUFBVyxRQUFVTCxDQUFBQSxLQUFLRSxNQUFNLEdBQUcsS0FBT0MsQ0FBQUEsUUFBUUUsVUFBVTtRQUN0RSxNQUFNZSxrQkFBa0IsQ0FBQ0gsTUFBTVIsS0FBSyxHQUFHQyxRQUFPLElBQUtLO1FBQ25ELE1BQU1NLElBQUloQixVQUFVLENBQUNELFNBQVNDLFVBQVUsS0FBTSxLQUFJZSxlQUFjO1FBQ2hFLE9BQU87WUFBRUQ7WUFBR0U7WUFBR1osT0FBT1EsTUFBTVIsS0FBSztRQUFDO0lBQ3BDO0lBRUEsa0JBQWtCO0lBQ2xCLE1BQU1hLFdBQVdOLE9BQ2RULEdBQUcsQ0FBQyxDQUFDVSxPQUFPQyxRQUFVLENBQUMsRUFBRUEsVUFBVSxJQUFJLE1BQU0sSUFBSSxDQUFDLEVBQUVELE1BQU1FLENBQUMsQ0FBQyxDQUFDLEVBQUVGLE1BQU1JLENBQUMsQ0FBQyxDQUFDLEVBQ3hFRSxJQUFJLENBQUM7SUFFUix1Q0FBdUM7SUFDdkMsTUFBTUMsV0FBVyxDQUFDLEVBQUVGLFNBQVMsR0FBRyxFQUFFbkIsUUFBUUUsUUFBUSxDQUFDLEVBQUVELFNBQVNDLFFBQVEsR0FBRyxFQUFFQSxRQUFRLENBQUMsRUFBRUQsU0FBU0MsUUFBUSxFQUFFLENBQUM7SUFFMUcsMEJBQTBCO0lBQzFCLE1BQU1vQixhQUFhLENBQUNDO1FBQ2xCLE1BQU1DLE9BQU8sSUFBSUMsS0FBS0Y7UUFDdEIsT0FBT0MsS0FBS0Usa0JBQWtCLENBQUMsU0FBUztZQUFFQyxPQUFPO1lBQVNDLEtBQUs7UUFBVTtJQUMzRTtJQUVBLHFCQUNFLDhEQUFDQztRQUFJQyxXQUFVOzswQkFDYiw4REFBQ0Q7Z0JBQUlDLFdBQVU7O2tDQUNiLDhEQUFDRDs7MENBQ0MsOERBQUNBO2dDQUFJQyxXQUFVOzBDQUFrRTs7Ozs7OzBDQUdqRiw4REFBQ0Q7Z0NBQUlDLFdBQVU7O29DQUE2QjtrREFDakMsOERBQUNDO3dDQUFLRCxXQUFVOzs0Q0FBK0I7NENBQUVoQyxhQUFha0MsT0FBTyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDQUduRiw4REFBQ0g7d0JBQUlDLFdBQVU7OzRCQUNaUixXQUFXekIsSUFBSSxDQUFDLEVBQUUsQ0FBQzJCLElBQUk7NEJBQUU7NEJBQUlGLFdBQVd6QixJQUFJLENBQUNBLEtBQUtFLE1BQU0sR0FBRyxFQUFFLENBQUN5QixJQUFJOzs7Ozs7Ozs7Ozs7OzBCQUl2RSw4REFBQ0s7Z0JBQUlDLFdBQVU7MEJBQ2IsNEVBQUNHO29CQUNDQyxTQUFTLENBQUMsSUFBSSxFQUFFbEMsTUFBTSxDQUFDLEVBQUVDLE9BQU8sQ0FBQztvQkFDakM2QixXQUFVO29CQUNWSyxxQkFBb0I7O3NDQUVwQiw4REFBQ0M7c0NBQ0MsNEVBQUNDO2dDQUFlQyxJQUFHO2dDQUFnQkMsSUFBRztnQ0FBS0MsSUFBRztnQ0FBS0MsSUFBRztnQ0FBS0MsSUFBRzs7a0RBQzVELDhEQUFDQzt3Q0FBS0MsUUFBTzt3Q0FBS0MsV0FBVTt3Q0FBVUMsYUFBWTs7Ozs7O2tEQUNsRCw4REFBQ0g7d0NBQUtDLFFBQU87d0NBQU9DLFdBQVU7d0NBQVVDLGFBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7O3NDQUl4RCw4REFBQ0M7NEJBQ0MxQyxHQUFHZ0I7NEJBQ0gyQixNQUFLOzs7Ozs7c0NBR1AsOERBQUNEOzRCQUNDMUMsR0FBR2M7NEJBQ0g2QixNQUFLOzRCQUNMQyxRQUFPOzRCQUNQQyxhQUFZOzRCQUNaQyxlQUFjOzRCQUNkQyxnQkFBZTs7Ozs7O3NDQUdqQiw4REFBQ0M7NEJBQ0NDLElBQUl6QyxNQUFNLENBQUNBLE9BQU9kLE1BQU0sR0FBRyxFQUFFLENBQUNpQixDQUFDOzRCQUMvQnVDLElBQUkxQyxNQUFNLENBQUNBLE9BQU9kLE1BQU0sR0FBRyxFQUFFLENBQUNtQixDQUFDOzRCQUMvQnNDLEdBQUU7NEJBQ0ZSLE1BQUs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCQUtYLDhEQUFDbkI7Z0JBQUlDLFdBQVU7O2tDQUNiLDhEQUFDQzs7NEJBQUs7NEJBQU94QixTQUFTeUIsT0FBTyxDQUFDOzs7Ozs7O2tDQUM5Qiw4REFBQ0Q7OzRCQUFLOzRCQUFRckIsU0FBU3NCLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUl2QyIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLy4vY29tcG9uZW50cy9QcmljaW5nSGlzdG9yeUdyYXBoLnRzeD82YzVhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgdHlwZSB7IFByaWNlSGlzdG9yeVBvaW50IH0gZnJvbSBcIkAvYXBwL2d1bmJ1aWxkZXIvW2NhdGVnb3J5SWRdL1twYXJ0SWRdL2RhdGFcIjtcblxuaW50ZXJmYWNlIFByaWNpbmdIaXN0b3J5R3JhcGhQcm9wcyB7XG4gIGRhdGE6IFByaWNlSGlzdG9yeVBvaW50W107XG4gIGN1cnJlbnRQcmljZTogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUHJpY2luZ0hpc3RvcnlHcmFwaCh7XG4gIGRhdGEsXG4gIGN1cnJlbnRQcmljZSxcbn06IFByaWNpbmdIaXN0b3J5R3JhcGhQcm9wcykge1xuICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIC8vIENhbGN1bGF0ZSBjaGFydCBkaW1lbnNpb25zXG4gIGNvbnN0IHdpZHRoID0gMTAwO1xuICBjb25zdCBoZWlnaHQgPSA2MDtcbiAgY29uc3QgcGFkZGluZyA9IDQ7XG5cbiAgLy8gRmluZCBtaW4gYW5kIG1heCBwcmljZXMgZm9yIHNjYWxpbmdcbiAgY29uc3QgcHJpY2VzID0gZGF0YS5tYXAoKGQpID0+IGQucHJpY2UpO1xuICBjb25zdCBtaW5QcmljZSA9IE1hdGgubWluKC4uLnByaWNlcyk7XG4gIGNvbnN0IG1heFByaWNlID0gTWF0aC5tYXgoLi4ucHJpY2VzKTtcbiAgY29uc3QgcHJpY2VSYW5nZSA9IG1heFByaWNlIC0gbWluUHJpY2UgfHwgMTsgLy8gQXZvaWQgZGl2aXNpb24gYnkgemVyb1xuXG4gIC8vIEdlbmVyYXRlIHBhdGggcG9pbnRzXG4gIGNvbnN0IHBvaW50cyA9IGRhdGEubWFwKChwb2ludCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCB4ID0gcGFkZGluZyArICgoaW5kZXggLyAoZGF0YS5sZW5ndGggLSAxKSkgKiAod2lkdGggLSBwYWRkaW5nICogMikpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQcmljZSA9IChwb2ludC5wcmljZSAtIG1pblByaWNlKSAvIHByaWNlUmFuZ2U7XG4gICAgY29uc3QgeSA9IHBhZGRpbmcgKyAoaGVpZ2h0IC0gcGFkZGluZyAqIDIpICogKDEgLSBub3JtYWxpemVkUHJpY2UpO1xuICAgIHJldHVybiB7IHgsIHksIHByaWNlOiBwb2ludC5wcmljZSB9O1xuICB9KTtcblxuICAvLyBDcmVhdGUgU1ZHIHBhdGhcbiAgY29uc3QgcGF0aERhdGEgPSBwb2ludHNcbiAgICAubWFwKChwb2ludCwgaW5kZXgpID0+IGAke2luZGV4ID09PSAwID8gXCJNXCIgOiBcIkxcIn0gJHtwb2ludC54fSAke3BvaW50Lnl9YClcbiAgICAuam9pbihcIiBcIik7XG5cbiAgLy8gQ3JlYXRlIGFyZWEgcGF0aCAoZm9yIGdyYWRpZW50IGZpbGwpXG4gIGNvbnN0IGFyZWFQYXRoID0gYCR7cGF0aERhdGF9IEwgJHt3aWR0aCAtIHBhZGRpbmd9ICR7aGVpZ2h0IC0gcGFkZGluZ30gTCAke3BhZGRpbmd9ICR7aGVpZ2h0IC0gcGFkZGluZ30gWmA7XG5cbiAgLy8gRm9ybWF0IGRhdGUgZm9yIGRpc3BsYXlcbiAgY29uc3QgZm9ybWF0RGF0ZSA9IChkYXRlU3RyOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cik7XG4gICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZW4tVVNcIiwgeyBtb250aDogXCJzaG9ydFwiLCBkYXk6IFwibnVtZXJpY1wiIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGxcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItNCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4xNmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTQwMFwiPlxuICAgICAgICAgICAgUHJpY2UgSGlzdG9yeSAoMzAgRGF5cylcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTEgdGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICBDdXJyZW50OiA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWFtYmVyLTMwMCBmb250LXNlbWlib2xkXCI+JHtjdXJyZW50UHJpY2UudG9GaXhlZCgyKX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgIHtmb3JtYXREYXRlKGRhdGFbMF0uZGF0ZSl9IC0ge2Zvcm1hdERhdGUoZGF0YVtkYXRhLmxlbmd0aCAtIDFdLmRhdGUpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbCBoLTMyIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTkwMC8zMCBwLTNcIj5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIHZpZXdCb3g9e2AwIDAgJHt3aWR0aH0gJHtoZWlnaHR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsXCJcbiAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInByaWNlR3JhZGllbnRcIiB4MT1cIjAlXCIgeTE9XCIwJVwiIHgyPVwiMCVcIiB5Mj1cIjEwMCVcIj5cbiAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMCVcIiBzdG9wQ29sb3I9XCIjZmJiZjI0XCIgc3RvcE9wYWNpdHk9XCIwLjNcIiAvPlxuICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxMDAlXCIgc3RvcENvbG9yPVwiI2ZiYmYyNFwiIHN0b3BPcGFjaXR5PVwiMC4wNVwiIC8+XG4gICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICB7LyogQXJlYSBmaWxsICovfVxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPXthcmVhUGF0aH1cbiAgICAgICAgICAgIGZpbGw9XCJ1cmwoI3ByaWNlR3JhZGllbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIHsvKiBMaW5lICovfVxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPXtwYXRoRGF0YX1cbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIHN0cm9rZT1cIiNmYmJmMjRcIlxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjVcIlxuICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgey8qIEN1cnJlbnQgcHJpY2UgaW5kaWNhdG9yICovfVxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGN4PXtwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLnh9XG4gICAgICAgICAgICBjeT17cG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXS55fVxuICAgICAgICAgICAgcj1cIjJcIlxuICAgICAgICAgICAgZmlsbD1cIiNmYmJmMjRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gdGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgIDxzcGFuPkxvdzogJHttaW5QcmljZS50b0ZpeGVkKDIpfTwvc3Bhbj5cbiAgICAgICAgPHNwYW4+SGlnaDogJHttYXhQcmljZS50b0ZpeGVkKDIpfTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG4iXSwibmFtZXMiOlsiUHJpY2luZ0hpc3RvcnlHcmFwaCIsImRhdGEiLCJjdXJyZW50UHJpY2UiLCJsZW5ndGgiLCJ3aWR0aCIsImhlaWdodCIsInBhZGRpbmciLCJwcmljZXMiLCJtYXAiLCJkIiwicHJpY2UiLCJtaW5QcmljZSIsIk1hdGgiLCJtaW4iLCJtYXhQcmljZSIsIm1heCIsInByaWNlUmFuZ2UiLCJwb2ludHMiLCJwb2ludCIsImluZGV4IiwieCIsIm5vcm1hbGl6ZWRQcmljZSIsInkiLCJwYXRoRGF0YSIsImpvaW4iLCJhcmVhUGF0aCIsImZvcm1hdERhdGUiLCJkYXRlU3RyIiwiZGF0ZSIsIkRhdGUiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJtb250aCIsImRheSIsImRpdiIsImNsYXNzTmFtZSIsInNwYW4iLCJ0b0ZpeGVkIiwic3ZnIiwidmlld0JveCIsInByZXNlcnZlQXNwZWN0UmF0aW8iLCJkZWZzIiwibGluZWFyR3JhZGllbnQiLCJpZCIsIngxIiwieTEiLCJ4MiIsInkyIiwic3RvcCIsIm9mZnNldCIsInN0b3BDb2xvciIsInN0b3BPcGFjaXR5IiwicGF0aCIsImZpbGwiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsImNpcmNsZSIsImN4IiwiY3kiLCJyIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./components/PricingHistoryGraph.tsx\n"); + +/***/ }), + +/***/ "(ssr)/./components/RetailersList.tsx": +/*!**************************************!*\ + !*** ./components/RetailersList.tsx ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RetailersList: () => (/* binding */ RetailersList)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* __next_internal_client_entry_do_not_use__ RetailersList auto */ \nfunction RetailersList({ retailers }) {\n if (retailers.length === 0) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-500 text-center py-4\",\n children: \"No retailer offers available.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, this);\n }\n const lowestPrice = Math.min(...retailers.map((r)=>r.price));\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400\",\n children: \"Available Retailers\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 23,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 text-xs text-zinc-500\",\n children: [\n retailers.length,\n \" retailer\",\n retailers.length !== 1 ? \"s\" : \"\",\n \" found\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 26,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 22,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: retailers.map((retailer)=>{\n const isLowestPrice = retailer.price === lowestPrice;\n const isOnSale = retailer.originalPrice !== undefined;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `border rounded-md p-3 transition-colors ${retailer.inStock ? \"border-zinc-700 bg-zinc-900/30 hover:border-zinc-600\" : \"border-zinc-800 bg-zinc-900/20 opacity-60\"}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 min-w-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 mb-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-semibold text-zinc-50\",\n children: retailer.retailerName\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 48,\n columnNumber: 21\n }, this),\n isLowestPrice && retailer.inStock && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[0.65rem] font-semibold uppercase tracking-wide px-1.5 py-0.5 rounded bg-amber-400/20 text-amber-300 border border-amber-400/30\",\n children: \"Best Price\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 52,\n columnNumber: 23\n }, this),\n !retailer.inStock && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[0.65rem] font-semibold uppercase tracking-wide px-1.5 py-0.5 rounded bg-red-500/20 text-red-400 border border-red-500/30\",\n children: \"Out of Stock\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 57,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 47,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `text-lg font-semibold ${isLowestPrice && retailer.inStock ? \"text-amber-300\" : \"text-zinc-300\"}`,\n children: [\n \"$\",\n retailer.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 63,\n columnNumber: 21\n }, this),\n isOnSale && retailer.originalPrice && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-zinc-500 line-through\",\n children: [\n \"$\",\n retailer.originalPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 73,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 62,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 46,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: retailer.affiliateUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: `rounded-md border px-3 py-1.5 text-xs font-medium transition-colors whitespace-nowrap ${retailer.inStock ? \"border-amber-400/60 bg-amber-400/10 text-amber-200 hover:bg-amber-400/15\" : \"border-zinc-700 bg-zinc-800/50 text-zinc-500 cursor-not-allowed pointer-events-none\"}`,\n children: retailer.inStock ? \"Buy Now\" : \"Unavailable\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 80,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 79,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 45,\n columnNumber: 15\n }, this)\n }, retailer.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 37,\n columnNumber: 13\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 31,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 21,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb21wb25lbnRzL1JldGFpbGVyc0xpc3QudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFRTyxTQUFTQSxjQUFjLEVBQUVDLFNBQVMsRUFBc0I7SUFDN0QsSUFBSUEsVUFBVUMsTUFBTSxLQUFLLEdBQUc7UUFDMUIscUJBQ0UsOERBQUNDO1lBQUlDLFdBQVU7c0JBQXlDOzs7Ozs7SUFJNUQ7SUFFQSxNQUFNQyxjQUFjQyxLQUFLQyxHQUFHLElBQUlOLFVBQVVPLEdBQUcsQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxLQUFLO0lBRTVELHFCQUNFLDhEQUFDUDtRQUFJQyxXQUFVOzswQkFDYiw4REFBQ0Q7Z0JBQUlDLFdBQVU7O2tDQUNiLDhEQUFDRDt3QkFBSUMsV0FBVTtrQ0FBa0U7Ozs7OztrQ0FHakYsOERBQUNEO3dCQUFJQyxXQUFVOzs0QkFDWkgsVUFBVUMsTUFBTTs0QkFBQzs0QkFBVUQsVUFBVUMsTUFBTSxLQUFLLElBQUksTUFBTTs0QkFBRzs7Ozs7Ozs7Ozs7OzswQkFJbEUsOERBQUNDO2dCQUFJQyxXQUFVOzBCQUNaSCxVQUFVTyxHQUFHLENBQUMsQ0FBQ0c7b0JBQ2QsTUFBTUMsZ0JBQWdCRCxTQUFTRCxLQUFLLEtBQUtMO29CQUN6QyxNQUFNUSxXQUFXRixTQUFTRyxhQUFhLEtBQUtDO29CQUU1QyxxQkFDRSw4REFBQ1o7d0JBRUNDLFdBQVcsQ0FBQyx3Q0FBd0MsRUFDbERPLFNBQVNLLE9BQU8sR0FDWix5REFDQSw0Q0FDTCxDQUFDO2tDQUVGLDRFQUFDYjs0QkFBSUMsV0FBVTs7OENBQ2IsOERBQUNEO29DQUFJQyxXQUFVOztzREFDYiw4REFBQ0Q7NENBQUlDLFdBQVU7OzhEQUNiLDhEQUFDYTtvREFBS2IsV0FBVTs4REFDYk8sU0FBU08sWUFBWTs7Ozs7O2dEQUV2Qk4saUJBQWlCRCxTQUFTSyxPQUFPLGtCQUNoQyw4REFBQ0M7b0RBQUtiLFdBQVU7OERBQXVJOzs7Ozs7Z0RBSXhKLENBQUNPLFNBQVNLLE9BQU8sa0JBQ2hCLDhEQUFDQztvREFBS2IsV0FBVTs4REFBaUk7Ozs7Ozs7Ozs7OztzREFLckosOERBQUNEOzRDQUFJQyxXQUFVOzs4REFDYiw4REFBQ2E7b0RBQ0NiLFdBQVcsQ0FBQyxzQkFBc0IsRUFDaENRLGlCQUFpQkQsU0FBU0ssT0FBTyxHQUM3QixtQkFDQSxnQkFDTCxDQUFDOzt3REFDSDt3REFDR0wsU0FBU0QsS0FBSyxDQUFDUyxPQUFPLENBQUM7Ozs7Ozs7Z0RBRTFCTixZQUFZRixTQUFTRyxhQUFhLGtCQUNqQyw4REFBQ0c7b0RBQUtiLFdBQVU7O3dEQUFxQzt3REFDakRPLFNBQVNHLGFBQWEsQ0FBQ0ssT0FBTyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhDQUt6Qyw4REFBQ2hCO29DQUFJQyxXQUFVOzhDQUNiLDRFQUFDZ0I7d0NBQ0NDLE1BQU1WLFNBQVNXLFlBQVk7d0NBQzNCQyxRQUFPO3dDQUNQQyxLQUFJO3dDQUNKcEIsV0FBVyxDQUFDLHNGQUFzRixFQUNoR08sU0FBU0ssT0FBTyxHQUNaLDZFQUNBLHNGQUNMLENBQUM7a0RBRURMLFNBQVNLLE9BQU8sR0FBRyxZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozt1QkFwRGpDTCxTQUFTYyxFQUFFOzs7OztnQkEwRHRCOzs7Ozs7Ozs7Ozs7QUFJUiIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLy4vY29tcG9uZW50cy9SZXRhaWxlcnNMaXN0LnRzeD8yYmViIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgdHlwZSB7IFJldGFpbGVyT2ZmZXIgfSBmcm9tIFwiQC9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vW3BhcnRJZF0vZGF0YVwiO1xuXG5pbnRlcmZhY2UgUmV0YWlsZXJzTGlzdFByb3BzIHtcbiAgcmV0YWlsZXJzOiBSZXRhaWxlck9mZmVyW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXRhaWxlcnNMaXN0KHsgcmV0YWlsZXJzIH06IFJldGFpbGVyc0xpc3RQcm9wcykge1xuICBpZiAocmV0YWlsZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTUwMCB0ZXh0LWNlbnRlciBweS00XCI+XG4gICAgICAgIE5vIHJldGFpbGVyIG9mZmVycyBhdmFpbGFibGUuXG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgY29uc3QgbG93ZXN0UHJpY2UgPSBNYXRoLm1pbiguLi5yZXRhaWxlcnMubWFwKChyKSA9PiByLnByaWNlKSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi00XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjE2ZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNDAwXCI+XG4gICAgICAgICAgQXZhaWxhYmxlIFJldGFpbGVyc1xuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0xIHRleHQteHMgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgIHtyZXRhaWxlcnMubGVuZ3RofSByZXRhaWxlcntyZXRhaWxlcnMubGVuZ3RoICE9PSAxID8gXCJzXCIgOiBcIlwifSBmb3VuZFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICB7cmV0YWlsZXJzLm1hcCgocmV0YWlsZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBpc0xvd2VzdFByaWNlID0gcmV0YWlsZXIucHJpY2UgPT09IGxvd2VzdFByaWNlO1xuICAgICAgICAgIGNvbnN0IGlzT25TYWxlID0gcmV0YWlsZXIub3JpZ2luYWxQcmljZSAhPT0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAga2V5PXtyZXRhaWxlci5pZH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgYm9yZGVyIHJvdW5kZWQtbWQgcC0zIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgcmV0YWlsZXIuaW5TdG9ja1xuICAgICAgICAgICAgICAgICAgPyBcImJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC8zMCBob3Zlcjpib3JkZXItemluYy02MDBcIlxuICAgICAgICAgICAgICAgICAgOiBcImJvcmRlci16aW5jLTgwMCBiZy16aW5jLTkwMC8yMCBvcGFjaXR5LTYwXCJcbiAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgbWluLXctMFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7cmV0YWlsZXIucmV0YWlsZXJOYW1lfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIHtpc0xvd2VzdFByaWNlICYmIHJldGFpbGVyLmluU3RvY2sgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzAuNjVyZW1dIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUgcHgtMS41IHB5LTAuNSByb3VuZGVkIGJnLWFtYmVyLTQwMC8yMCB0ZXh0LWFtYmVyLTMwMCBib3JkZXIgYm9yZGVyLWFtYmVyLTQwMC8zMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQmVzdCBQcmljZVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgeyFyZXRhaWxlci5pblN0b2NrICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVswLjY1cmVtXSBmb250LXNlbWlib2xkIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIHB4LTEuNSBweS0wLjUgcm91bmRlZCBiZy1yZWQtNTAwLzIwIHRleHQtcmVkLTQwMCBib3JkZXIgYm9yZGVyLXJlZC01MDAvMzBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE91dCBvZiBTdG9ja1xuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHRleHQtbGcgZm9udC1zZW1pYm9sZCAke1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb3dlc3RQcmljZSAmJiByZXRhaWxlci5pblN0b2NrXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJ0ZXh0LWFtYmVyLTMwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJ0ZXh0LXppbmMtMzAwXCJcbiAgICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICR7cmV0YWlsZXIucHJpY2UudG9GaXhlZCgyKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB7aXNPblNhbGUgJiYgcmV0YWlsZXIub3JpZ2luYWxQcmljZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIGxpbmUtdGhyb3VnaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgJHtyZXRhaWxlci5vcmlnaW5hbFByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgaHJlZj17cmV0YWlsZXIuYWZmaWxpYXRlVXJsfVxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcm91bmRlZC1tZCBib3JkZXIgcHgtMyBweS0xLjUgdGV4dC14cyBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9ycyB3aGl0ZXNwYWNlLW5vd3JhcCAke1xuICAgICAgICAgICAgICAgICAgICAgIHJldGFpbGVyLmluU3RvY2tcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJib3JkZXItYW1iZXItNDAwLzYwIGJnLWFtYmVyLTQwMC8xMCB0ZXh0LWFtYmVyLTIwMCBob3ZlcjpiZy1hbWJlci00MDAvMTVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcImJvcmRlci16aW5jLTcwMCBiZy16aW5jLTgwMC81MCB0ZXh0LXppbmMtNTAwIGN1cnNvci1ub3QtYWxsb3dlZCBwb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtyZXRhaWxlci5pblN0b2NrID8gXCJCdXkgTm93XCIgOiBcIlVuYXZhaWxhYmxlXCJ9XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuIl0sIm5hbWVzIjpbIlJldGFpbGVyc0xpc3QiLCJyZXRhaWxlcnMiLCJsZW5ndGgiLCJkaXYiLCJjbGFzc05hbWUiLCJsb3dlc3RQcmljZSIsIk1hdGgiLCJtaW4iLCJtYXAiLCJyIiwicHJpY2UiLCJyZXRhaWxlciIsImlzTG93ZXN0UHJpY2UiLCJpc09uU2FsZSIsIm9yaWdpbmFsUHJpY2UiLCJ1bmRlZmluZWQiLCJpblN0b2NrIiwic3BhbiIsInJldGFpbGVyTmFtZSIsInRvRml4ZWQiLCJhIiwiaHJlZiIsImFmZmlsaWF0ZVVybCIsInRhcmdldCIsInJlbCIsImlkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./components/RetailersList.tsx\n"); /***/ }), diff --git a/.next/server/webpack-runtime.js b/.next/server/webpack-runtime.js index 27e5b49..a204cd7 100644 --- a/.next/server/webpack-runtime.js +++ b/.next/server/webpack-runtime.js @@ -125,7 +125,7 @@ /******/ /******/ /* webpack/runtime/getFullHash */ /******/ (() => { -/******/ __webpack_require__.h = () => ("f1ed3dd09708e67e") +/******/ __webpack_require__.h = () => ("245fbb94dbc2f126") /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ diff --git a/.next/static/chunks/app/gunbuilder/[categoryId]/[partId]/page.js b/.next/static/chunks/app/gunbuilder/[categoryId]/[partId]/page.js index 7aa0db2..d746a3c 100644 --- a/.next/static/chunks/app/gunbuilder/[categoryId]/[partId]/page.js +++ b/.next/static/chunks/app/gunbuilder/[categoryId]/[partId]/page.js @@ -40,6 +40,17 @@ eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* har /***/ }), +/***/ "(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/data.ts": +/*!******************************************************!*\ + !*** ./app/gunbuilder/[categoryId]/[partId]/data.ts ***! + \******************************************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getPricingHistory: function() { return /* binding */ getPricingHistory; },\n/* harmony export */ getRetailerOffers: function() { return /* binding */ getRetailerOffers; }\n/* harmony export */ });\n// Simulated data functions - Replace these with API calls when ready\n// Example: export async function getPricingHistory(partId: string) { ... }\n/**\n * Get pricing history for a part\n * TODO: Replace with API call: GET /api/parts/{partId}/pricing-history\n */ function getPricingHistory(partId, basePrice) {\n // Generate 30 days of price history with some variation\n const days = 30;\n const history = [];\n const today = new Date();\n for(let i = days - 1; i >= 0; i--){\n const date = new Date(today);\n date.setDate(date.getDate() - i);\n // Simulate price fluctuations (±15% variation)\n const variation = (Math.random() - 0.5) * 0.3; // -15% to +15%\n const price = basePrice * (1 + variation);\n history.push({\n date: date.toISOString().split(\"T\")[0],\n price: Math.round(price * 100) / 100\n });\n }\n return history;\n}\n/**\n * Get retailer offers for a part\n * TODO: Replace with API call: GET /api/parts/{partId}/retailers\n */ function getRetailerOffers(partId, basePrice, baseAffiliateUrl) {\n const retailers = [\n \"Primary Arms\",\n \"Brownells\",\n \"Optics Planet\",\n \"MidwayUSA\",\n \"Palmetto State Armory\"\n ];\n return retailers.map((retailer, index)=>{\n // Simulate price variations between retailers\n const priceVariation = (Math.random() - 0.4) * 0.2; // -8% to +12%\n const price = basePrice * (1 + priceVariation);\n const hasSale = Math.random() > 0.6; // 40% chance of sale\n const originalPrice = hasSale ? price * 1.15 : undefined;\n const inStock = Math.random() > 0.2; // 80% chance in stock\n return {\n id: \"retailer-\".concat(index),\n retailerName: retailer,\n price: Math.round(price * 100) / 100,\n originalPrice: originalPrice ? Math.round(originalPrice * 100) / 100 : undefined,\n inStock,\n affiliateUrl: baseAffiliateUrl.replace(\"example.com\", \"\".concat(retailer.toLowerCase().replace(/\\s+/g, \"\"), \".com\")),\n lastUpdated: new Date().toISOString()\n };\n }).sort((a, b)=>a.price - b.price); // Sort by price ascending\n}\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL1tjYXRlZ29yeUlkXS9bcGFydElkXS9kYXRhLnRzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUVBQXFFO0FBQ3JFLDJFQUEyRTtBQWlCM0U7OztDQUdDLEdBQ00sU0FBU0Esa0JBQ2RDLE1BQWMsRUFDZEMsU0FBaUI7SUFFakIsd0RBQXdEO0lBQ3hELE1BQU1DLE9BQU87SUFDYixNQUFNQyxVQUErQixFQUFFO0lBQ3ZDLE1BQU1DLFFBQVEsSUFBSUM7SUFFbEIsSUFBSyxJQUFJQyxJQUFJSixPQUFPLEdBQUdJLEtBQUssR0FBR0EsSUFBSztRQUNsQyxNQUFNQyxPQUFPLElBQUlGLEtBQUtEO1FBQ3RCRyxLQUFLQyxPQUFPLENBQUNELEtBQUtFLE9BQU8sS0FBS0g7UUFFOUIsK0NBQStDO1FBQy9DLE1BQU1JLFlBQVksQ0FBQ0MsS0FBS0MsTUFBTSxLQUFLLEdBQUUsSUFBSyxLQUFLLGVBQWU7UUFDOUQsTUFBTUMsUUFBUVosWUFBYSxLQUFJUyxTQUFRO1FBRXZDUCxRQUFRVyxJQUFJLENBQUM7WUFDWFAsTUFBTUEsS0FBS1EsV0FBVyxHQUFHQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdENILE9BQU9GLEtBQUtNLEtBQUssQ0FBQ0osUUFBUSxPQUFPO1FBQ25DO0lBQ0Y7SUFFQSxPQUFPVjtBQUNUO0FBRUE7OztDQUdDLEdBQ00sU0FBU2Usa0JBQ2RsQixNQUFjLEVBQ2RDLFNBQWlCLEVBQ2pCa0IsZ0JBQXdCO0lBRXhCLE1BQU1DLFlBQVk7UUFDaEI7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBRUQsT0FBT0EsVUFBVUMsR0FBRyxDQUFDLENBQUNDLFVBQVVDO1FBQzlCLDhDQUE4QztRQUM5QyxNQUFNQyxpQkFBaUIsQ0FBQ2IsS0FBS0MsTUFBTSxLQUFLLEdBQUUsSUFBSyxLQUFLLGNBQWM7UUFDbEUsTUFBTUMsUUFBUVosWUFBYSxLQUFJdUIsY0FBYTtRQUM1QyxNQUFNQyxVQUFVZCxLQUFLQyxNQUFNLEtBQUssS0FBSyxxQkFBcUI7UUFDMUQsTUFBTWMsZ0JBQWdCRCxVQUFVWixRQUFRLE9BQU9jO1FBQy9DLE1BQU1DLFVBQVVqQixLQUFLQyxNQUFNLEtBQUssS0FBSyxzQkFBc0I7UUFFM0QsT0FBTztZQUNMaUIsSUFBSSxZQUFrQixPQUFOTjtZQUNoQk8sY0FBY1I7WUFDZFQsT0FBT0YsS0FBS00sS0FBSyxDQUFDSixRQUFRLE9BQU87WUFDakNhLGVBQWVBLGdCQUNYZixLQUFLTSxLQUFLLENBQUNTLGdCQUFnQixPQUFPLE1BQ2xDQztZQUNKQztZQUNBRyxjQUFjWixpQkFBaUJhLE9BQU8sQ0FBQyxlQUFlLEdBQThDLE9BQTNDVixTQUFTVyxXQUFXLEdBQUdELE9BQU8sQ0FBQyxRQUFRLEtBQUk7WUFDcEdFLGFBQWEsSUFBSTdCLE9BQU9VLFdBQVc7UUFDckM7SUFDRixHQUFHb0IsSUFBSSxDQUFDLENBQUNDLEdBQUdDLElBQU1ELEVBQUV2QixLQUFLLEdBQUd3QixFQUFFeEIsS0FBSyxHQUFHLDBCQUEwQjtBQUNsRSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vW3BhcnRJZF0vZGF0YS50cz9kNzM1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNpbXVsYXRlZCBkYXRhIGZ1bmN0aW9ucyAtIFJlcGxhY2UgdGhlc2Ugd2l0aCBBUEkgY2FsbHMgd2hlbiByZWFkeVxuLy8gRXhhbXBsZTogZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFByaWNpbmdIaXN0b3J5KHBhcnRJZDogc3RyaW5nKSB7IC4uLiB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpY2VIaXN0b3J5UG9pbnQge1xuICBkYXRlOiBzdHJpbmc7IC8vIElTTyBkYXRlIHN0cmluZ1xuICBwcmljZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldGFpbGVyT2ZmZXIge1xuICBpZDogc3RyaW5nO1xuICByZXRhaWxlck5hbWU6IHN0cmluZztcbiAgcHJpY2U6IG51bWJlcjtcbiAgb3JpZ2luYWxQcmljZT86IG51bWJlcjtcbiAgaW5TdG9jazogYm9vbGVhbjtcbiAgYWZmaWxpYXRlVXJsOiBzdHJpbmc7XG4gIGxhc3RVcGRhdGVkOiBzdHJpbmc7IC8vIElTTyBkYXRlIHN0cmluZ1xufVxuXG4vKipcbiAqIEdldCBwcmljaW5nIGhpc3RvcnkgZm9yIGEgcGFydFxuICogVE9ETzogUmVwbGFjZSB3aXRoIEFQSSBjYWxsOiBHRVQgL2FwaS9wYXJ0cy97cGFydElkfS9wcmljaW5nLWhpc3RvcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByaWNpbmdIaXN0b3J5KFxuICBwYXJ0SWQ6IHN0cmluZyxcbiAgYmFzZVByaWNlOiBudW1iZXIsXG4pOiBQcmljZUhpc3RvcnlQb2ludFtdIHtcbiAgLy8gR2VuZXJhdGUgMzAgZGF5cyBvZiBwcmljZSBoaXN0b3J5IHdpdGggc29tZSB2YXJpYXRpb25cbiAgY29uc3QgZGF5cyA9IDMwO1xuICBjb25zdCBoaXN0b3J5OiBQcmljZUhpc3RvcnlQb2ludFtdID0gW107XG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcblxuICBmb3IgKGxldCBpID0gZGF5cyAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRvZGF5KTtcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBpKTtcblxuICAgIC8vIFNpbXVsYXRlIHByaWNlIGZsdWN0dWF0aW9ucyAowrExNSUgdmFyaWF0aW9uKVxuICAgIGNvbnN0IHZhcmlhdGlvbiA9IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIDAuMzsgLy8gLTE1JSB0byArMTUlXG4gICAgY29uc3QgcHJpY2UgPSBiYXNlUHJpY2UgKiAoMSArIHZhcmlhdGlvbik7XG5cbiAgICBoaXN0b3J5LnB1c2goe1xuICAgICAgZGF0ZTogZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSxcbiAgICAgIHByaWNlOiBNYXRoLnJvdW5kKHByaWNlICogMTAwKSAvIDEwMCxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoaXN0b3J5O1xufVxuXG4vKipcbiAqIEdldCByZXRhaWxlciBvZmZlcnMgZm9yIGEgcGFydFxuICogVE9ETzogUmVwbGFjZSB3aXRoIEFQSSBjYWxsOiBHRVQgL2FwaS9wYXJ0cy97cGFydElkfS9yZXRhaWxlcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJldGFpbGVyT2ZmZXJzKFxuICBwYXJ0SWQ6IHN0cmluZyxcbiAgYmFzZVByaWNlOiBudW1iZXIsXG4gIGJhc2VBZmZpbGlhdGVVcmw6IHN0cmluZyxcbik6IFJldGFpbGVyT2ZmZXJbXSB7XG4gIGNvbnN0IHJldGFpbGVycyA9IFtcbiAgICBcIlByaW1hcnkgQXJtc1wiLFxuICAgIFwiQnJvd25lbGxzXCIsXG4gICAgXCJPcHRpY3MgUGxhbmV0XCIsXG4gICAgXCJNaWR3YXlVU0FcIixcbiAgICBcIlBhbG1ldHRvIFN0YXRlIEFybW9yeVwiLFxuICBdO1xuXG4gIHJldHVybiByZXRhaWxlcnMubWFwKChyZXRhaWxlciwgaW5kZXgpID0+IHtcbiAgICAvLyBTaW11bGF0ZSBwcmljZSB2YXJpYXRpb25zIGJldHdlZW4gcmV0YWlsZXJzXG4gICAgY29uc3QgcHJpY2VWYXJpYXRpb24gPSAoTWF0aC5yYW5kb20oKSAtIDAuNCkgKiAwLjI7IC8vIC04JSB0byArMTIlXG4gICAgY29uc3QgcHJpY2UgPSBiYXNlUHJpY2UgKiAoMSArIHByaWNlVmFyaWF0aW9uKTtcbiAgICBjb25zdCBoYXNTYWxlID0gTWF0aC5yYW5kb20oKSA+IDAuNjsgLy8gNDAlIGNoYW5jZSBvZiBzYWxlXG4gICAgY29uc3Qgb3JpZ2luYWxQcmljZSA9IGhhc1NhbGUgPyBwcmljZSAqIDEuMTUgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgaW5TdG9jayA9IE1hdGgucmFuZG9tKCkgPiAwLjI7IC8vIDgwJSBjaGFuY2UgaW4gc3RvY2tcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogYHJldGFpbGVyLSR7aW5kZXh9YCxcbiAgICAgIHJldGFpbGVyTmFtZTogcmV0YWlsZXIsXG4gICAgICBwcmljZTogTWF0aC5yb3VuZChwcmljZSAqIDEwMCkgLyAxMDAsXG4gICAgICBvcmlnaW5hbFByaWNlOiBvcmlnaW5hbFByaWNlXG4gICAgICAgID8gTWF0aC5yb3VuZChvcmlnaW5hbFByaWNlICogMTAwKSAvIDEwMFxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGluU3RvY2ssXG4gICAgICBhZmZpbGlhdGVVcmw6IGJhc2VBZmZpbGlhdGVVcmwucmVwbGFjZShcImV4YW1wbGUuY29tXCIsIGAke3JldGFpbGVyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCBcIlwiKX0uY29tYCksXG4gICAgICBsYXN0VXBkYXRlZDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG4gIH0pLnNvcnQoKGEsIGIpID0+IGEucHJpY2UgLSBiLnByaWNlKTsgLy8gU29ydCBieSBwcmljZSBhc2NlbmRpbmdcbn1cblxuIl0sIm5hbWVzIjpbImdldFByaWNpbmdIaXN0b3J5IiwicGFydElkIiwiYmFzZVByaWNlIiwiZGF5cyIsImhpc3RvcnkiLCJ0b2RheSIsIkRhdGUiLCJpIiwiZGF0ZSIsInNldERhdGUiLCJnZXREYXRlIiwidmFyaWF0aW9uIiwiTWF0aCIsInJhbmRvbSIsInByaWNlIiwicHVzaCIsInRvSVNPU3RyaW5nIiwic3BsaXQiLCJyb3VuZCIsImdldFJldGFpbGVyT2ZmZXJzIiwiYmFzZUFmZmlsaWF0ZVVybCIsInJldGFpbGVycyIsIm1hcCIsInJldGFpbGVyIiwiaW5kZXgiLCJwcmljZVZhcmlhdGlvbiIsImhhc1NhbGUiLCJvcmlnaW5hbFByaWNlIiwidW5kZWZpbmVkIiwiaW5TdG9jayIsImlkIiwicmV0YWlsZXJOYW1lIiwiYWZmaWxpYXRlVXJsIiwicmVwbGFjZSIsInRvTG93ZXJDYXNlIiwibGFzdFVwZGF0ZWQiLCJzb3J0IiwiYSIsImIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/data.ts\n")); + +/***/ }), + /***/ "(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx": /*!*******************************************************!*\ !*** ./app/gunbuilder/[categoryId]/[partId]/page.tsx ***! @@ -47,7 +58,29 @@ eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* har /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ PartDetailPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\nfunction PartDetailPage() {\n _s();\n const params = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams)();\n const categoryId = params.categoryId;\n const partId = params.partId;\n const category = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.find((c)=>c.id === categoryId), [\n categoryId\n ]);\n const part = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId), [\n partId,\n categoryId\n ]);\n if (!category || !part) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"Product Not Found\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 29,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-amber-300 hover:text-amber-200 underline\",\n children: \"Return to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 32,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 28,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 27,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 26,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/\".concat(categoryId),\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: [\n \"← Back to \",\n category.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 49,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 56,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 60,\n columnNumber: 28\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 59,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: [\n category.name,\n \" • Product Details\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 62,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 55,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 48,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 lg:grid-cols-[2fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-6 md:grid-cols-[1fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-2\",\n children: \"Product Information\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 75,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Brand\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 80,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.brand\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 83,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 79,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Model\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 88,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 91,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 87,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Category\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 96,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 99,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 95,\n columnNumber: 19\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 105,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-300 leading-relaxed\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 108,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 104,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 78,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 74,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full aspect-square max-w-md rounded-md border border-zinc-700 bg-zinc-900/50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center p-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-16 h-16 mx-auto text-zinc-600 mb-2\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5,\n d: \"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 127,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 120,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide\",\n children: \"Product Image\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 134,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 119,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 118,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 117,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 72,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 71,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/80 p-4 md:p-6 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400 mb-2\",\n children: \"Price\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 146,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-semibold text-amber-300\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 147,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 145,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-auto space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder?select=\".concat(categoryId, \":\").concat(part.id),\n className: \"block w-full rounded-md border border-amber-400/60 bg-amber-400/10 px-4 py-3 text-sm font-medium text-amber-200 hover:bg-amber-400/15 text-center transition-colors\",\n children: \"Add to Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 153,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: part.affiliateUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"block w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-4 py-3 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 text-center transition-colors\",\n children: \"View Retailer\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 159,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 152,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 144,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 69,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 46,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 45,\n columnNumber: 5\n }, this);\n}\n_s(PartDetailPage, \"x98W2lsgkrj67cp5WacZHnLLPfg=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams\n ];\n});\n_c = PartDetailPage;\nvar _c;\n$RefreshReg$(_c, \"PartDetailPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL1tjYXRlZ29yeUlkXS9bcGFydElkXS9wYWdlLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFFZ0M7QUFDSDtBQUNlO0FBQ2U7QUFHNUMsU0FBU0s7O0lBQ3RCLE1BQU1DLFNBQVNKLDBEQUFTQTtJQUN4QixNQUFNSyxhQUFhRCxPQUFPQyxVQUFVO0lBQ3BDLE1BQU1DLFNBQVNGLE9BQU9FLE1BQU07SUFFNUIsTUFBTUMsV0FBV1QsOENBQU9BLENBQ3RCLElBQU1HLDZEQUFVQSxDQUFDTyxJQUFJLENBQUMsQ0FBQ0MsSUFBTUEsRUFBRUMsRUFBRSxLQUFLTCxhQUN0QztRQUFDQTtLQUFXO0lBR2QsTUFBTU0sT0FBT2IsOENBQU9BLENBQ2xCLElBQU1JLHdEQUFLQSxDQUFDTSxJQUFJLENBQUMsQ0FBQ0ksSUFBTUEsRUFBRUYsRUFBRSxLQUFLSixVQUFVTSxFQUFFUCxVQUFVLEtBQUtBLGFBQzVEO1FBQUNDO1FBQVFEO0tBQVc7SUFHdEIsSUFBSSxDQUFDRSxZQUFZLENBQUNJLE1BQU07UUFDdEIscUJBQ0UsOERBQUNFO1lBQUtDLFdBQVU7c0JBQ2QsNEVBQUNDO2dCQUFJRCxXQUFVOzBCQUNiLDRFQUFDQztvQkFBSUQsV0FBVTs7c0NBQ2IsOERBQUNFOzRCQUFHRixXQUFVO3NDQUEyQzs7Ozs7O3NDQUd6RCw4REFBQ2YsaURBQUlBOzRCQUNIa0IsTUFBSzs0QkFDTEgsV0FBVTtzQ0FDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU9YO0lBRUEscUJBQ0UsOERBQUNEO1FBQUtDLFdBQVU7a0JBQ2QsNEVBQUNDO1lBQUlELFdBQVU7OzhCQUViLDhEQUFDSTtvQkFBT0osV0FBVTs7c0NBQ2hCLDhEQUFDZixpREFBSUE7NEJBQ0hrQixNQUFNLGVBQTBCLE9BQVhaOzRCQUNyQlMsV0FBVTs7Z0NBQ1g7Z0NBQ1lQLFNBQVNZLElBQUk7Ozs7Ozs7c0NBRTFCLDhEQUFDSjs7OENBQ0MsOERBQUNIO29DQUFFRSxXQUFVOzhDQUFpRTs7Ozs7OzhDQUc5RSw4REFBQ0U7b0NBQUdGLFdBQVU7O3dDQUNYSCxLQUFLUyxLQUFLO3dDQUFDO3NEQUFDLDhEQUFDQzs0Q0FBS1AsV0FBVTtzREFBa0JILEtBQUtRLElBQUk7Ozs7Ozs7Ozs7Ozs4Q0FFMUQsOERBQUNQO29DQUFFRSxXQUFVOzt3Q0FDVlAsU0FBU1ksSUFBSTt3Q0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4QkFNckIsOERBQUNKO29CQUFJRCxXQUFVOztzQ0FFYiw4REFBQ1E7NEJBQVFSLFdBQVU7c0NBQ2pCLDRFQUFDQztnQ0FBSUQsV0FBVTs7a0RBRWIsOERBQUNDOzswREFDQyw4REFBQ0E7Z0RBQUlELFdBQVU7MERBQXVFOzs7Ozs7MERBR3RGLDhEQUFDQztnREFBSUQsV0FBVTs7a0VBQ2IsOERBQUNDOzswRUFDQyw4REFBQ0E7Z0VBQUlELFdBQVU7MEVBQXFEOzs7Ozs7MEVBR3BFLDhEQUFDQztnRUFBSUQsV0FBVTswRUFDWkgsS0FBS1MsS0FBSzs7Ozs7Ozs7Ozs7O2tFQUdmLDhEQUFDTDs7MEVBQ0MsOERBQUNBO2dFQUFJRCxXQUFVOzBFQUFxRDs7Ozs7OzBFQUdwRSw4REFBQ0M7Z0VBQUlELFdBQVU7MEVBQ1pILEtBQUtRLElBQUk7Ozs7Ozs7Ozs7OztrRUFHZCw4REFBQ0o7OzBFQUNDLDhEQUFDQTtnRUFBSUQsV0FBVTswRUFBcUQ7Ozs7OzswRUFHcEUsOERBQUNDO2dFQUFJRCxXQUFVOzBFQUNaUCxTQUFTWSxJQUFJOzs7Ozs7Ozs7Ozs7b0RBR2pCUixLQUFLWSxLQUFLLGtCQUNULDhEQUFDUjs7MEVBQ0MsOERBQUNBO2dFQUFJRCxXQUFVOzBFQUFxRDs7Ozs7OzBFQUdwRSw4REFBQ0M7Z0VBQUlELFdBQVU7MEVBQ1pILEtBQUtZLEtBQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrREFRckIsOERBQUNSO3dDQUFJRCxXQUFVO2tEQUNiLDRFQUFDQzs0Q0FBSUQsV0FBVTtzREFDYiw0RUFBQ0M7Z0RBQUlELFdBQVU7O2tFQUNiLDhEQUFDVTt3REFDQ1YsV0FBVTt3REFDVlcsTUFBSzt3REFDTEMsUUFBTzt3REFDUEMsU0FBUTt3REFDUkMsT0FBTTtrRUFFTiw0RUFBQ0M7NERBQ0NDLGVBQWM7NERBQ2RDLGdCQUFlOzREQUNmQyxhQUFhOzREQUNiQyxHQUFFOzs7Ozs7Ozs7OztrRUFHTiw4REFBQ3JCO3dEQUFFRSxXQUFVO2tFQUFnRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NDQVV2RSw4REFBQ29COzRCQUFNcEIsV0FBVTs7OENBQ2YsOERBQUNDO29DQUFJRCxXQUFVOztzREFDYiw4REFBQ0M7NENBQUlELFdBQVU7c0RBQTZCOzs7Ozs7c0RBQzVDLDhEQUFDQzs0Q0FBSUQsV0FBVTs7Z0RBQXdDO2dEQUNuREgsS0FBS3dCLEtBQUssQ0FBQ0MsT0FBTyxDQUFDOzs7Ozs7Ozs7Ozs7OzhDQUl6Qiw4REFBQ3JCO29DQUFJRCxXQUFVOztzREFDYiw4REFBQ2YsaURBQUlBOzRDQUNIa0IsTUFBTSxzQkFBb0NOLE9BQWROLFlBQVcsS0FBVyxPQUFSTSxLQUFLRCxFQUFFOzRDQUNqREksV0FBVTtzREFDWDs7Ozs7O3NEQUdELDhEQUFDdUI7NENBQ0NwQixNQUFNTixLQUFLMkIsWUFBWTs0Q0FDdkJDLFFBQU87NENBQ1BDLEtBQUk7NENBQ0oxQixXQUFVO3NEQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNmO0dBcEt3Qlg7O1FBQ1BILHNEQUFTQTs7O0tBREZHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2FwcC9ndW5idWlsZGVyL1tjYXRlZ29yeUlkXS9bcGFydElkXS9wYWdlLnRzeD80MmMxIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgTGluayBmcm9tIFwibmV4dC9saW5rXCI7XG5pbXBvcnQgeyB1c2VQYXJhbXMgfSBmcm9tIFwibmV4dC9uYXZpZ2F0aW9uXCI7XG5pbXBvcnQgeyBDQVRFR09SSUVTLCBQQVJUUyB9IGZyb20gXCJAL2RhdGEvZ3VuYnVpbGRlclBhcnRzXCI7XG5pbXBvcnQgdHlwZSB7IENhdGVnb3J5SWQgfSBmcm9tIFwiQC90eXBlcy9ndW5idWlsZGVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBhcnREZXRhaWxQYWdlKCkge1xuICBjb25zdCBwYXJhbXMgPSB1c2VQYXJhbXMoKTtcbiAgY29uc3QgY2F0ZWdvcnlJZCA9IHBhcmFtcy5jYXRlZ29yeUlkIGFzIENhdGVnb3J5SWQ7XG4gIGNvbnN0IHBhcnRJZCA9IHBhcmFtcy5wYXJ0SWQgYXMgc3RyaW5nO1xuXG4gIGNvbnN0IGNhdGVnb3J5ID0gdXNlTWVtbyhcbiAgICAoKSA9PiBDQVRFR09SSUVTLmZpbmQoKGMpID0+IGMuaWQgPT09IGNhdGVnb3J5SWQpLFxuICAgIFtjYXRlZ29yeUlkXSxcbiAgKTtcblxuICBjb25zdCBwYXJ0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiBQQVJUUy5maW5kKChwKSA9PiBwLmlkID09PSBwYXJ0SWQgJiYgcC5jYXRlZ29yeUlkID09PSBjYXRlZ29yeUlkKSxcbiAgICBbcGFydElkLCBjYXRlZ29yeUlkXSxcbiAgKTtcblxuICBpZiAoIWNhdGVnb3J5IHx8ICFwYXJ0KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxtYWluIGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ibGFjayB0ZXh0LXppbmMtNTBcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIG1heC13LTZ4bCBweC00IHB5LTYgbGc6cHktMTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtNTAgbWItNFwiPlxuICAgICAgICAgICAgICBQcm9kdWN0IE5vdCBGb3VuZFxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgIGhyZWY9XCIvZ3VuYnVpbGRlclwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwIGhvdmVyOnRleHQtYW1iZXItMjAwIHVuZGVybGluZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJldHVybiB0byBHdW5idWlsZGVyXG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYWluPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxtYWluIGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ibGFjayB0ZXh0LXppbmMtNTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtYXgtdy02eGwgcHgtNCBweS02IGxnOnB5LTEwXCI+XG4gICAgICAgIHsvKiBIZWFkZXIgKi99XG4gICAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwibWItNlwiPlxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBocmVmPXtgL2d1bmJ1aWxkZXIvJHtjYXRlZ29yeUlkfWB9XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy00MDAgaG92ZXI6dGV4dC16aW5jLTMwMCBtYi00IGlubGluZS1ibG9ja1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAg4oaQIEJhY2sgdG8ge2NhdGVnb3J5Lm5hbWV9XG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWzAuMmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICBTaGFkb3cgU3RhbmRhcmRcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJtdC0xIHRleHQtMnhsIG1kOnRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRcIj5cbiAgICAgICAgICAgICAge3BhcnQuYnJhbmR9IDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwXCI+e3BhcnQubmFtZX08L3NwYW4+XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMiB0ZXh0LXNtIHRleHQtemluYy00MDAgbWF4LXcteGxcIj5cbiAgICAgICAgICAgICAge2NhdGVnb3J5Lm5hbWV9IOKAoiBQcm9kdWN0IERldGFpbHNcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgey8qIFByb2R1Y3QgRGV0YWlscyAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC00IGxnOmdyaWQtY29scy1bMmZyLDFmcl1cIj5cbiAgICAgICAgICB7LyogTWFpbiBDb250ZW50ICovfVxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTk1MC82MCBwLTQgbWQ6cC02XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ2FwLTYgbWQ6Z3JpZC1jb2xzLVsxZnIsMWZyXVwiPlxuICAgICAgICAgICAgICB7LyogUHJvZHVjdCBJbmZvICovfVxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjE2ZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNDAwIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgIFByb2R1Y3QgSW5mb3JtYXRpb25cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktM1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy01MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUgbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIEJyYW5kXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7cGFydC5icmFuZH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICBNb2RlbFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3BhcnQubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2NhdGVnb3J5Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB7cGFydC5ub3RlcyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy01MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUgbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXppbmMtMzAwIGxlYWRpbmctcmVsYXhlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgey8qIFByb2R1Y3QgSW1hZ2UgKi99XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGFzcGVjdC1zcXVhcmUgbWF4LXctbWQgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIHAtOFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0xNiBoLTE2IG14LWF1dG8gdGV4dC16aW5jLTYwMCBtYi0yXCJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17MS41fVxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00IDE2bDQuNTg2LTQuNTg2YTIgMiAwIDAxMi44MjggMEwxNiAxNm0tMi0ybDEuNTg2LTEuNTg2YTIgMiAwIDAxMi44MjggMEwyMCAxNG0tNi02aC4wMU02IDIwaDEyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyelwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIFByb2R1Y3QgSW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgey8qIFNpZGViYXIgKi99XG4gICAgICAgICAgPGFzaWRlIGNsYXNzTmFtZT1cInJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTk1MC84MCBwLTQgbWQ6cC02IGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItNFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTQwMCBtYi0yXCI+UHJpY2U8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMzAwXCI+XG4gICAgICAgICAgICAgICAgJHtwYXJ0LnByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtYXV0byBzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICBocmVmPXtgL2d1bmJ1aWxkZXI/c2VsZWN0PSR7Y2F0ZWdvcnlJZH06JHtwYXJ0LmlkfWB9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2sgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1hbWJlci00MDAvNjAgYmctYW1iZXItNDAwLzEwIHB4LTQgcHktMyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtYW1iZXItMjAwIGhvdmVyOmJnLWFtYmVyLTQwMC8xNSB0ZXh0LWNlbnRlciB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBBZGQgdG8gQnVpbGRcbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGhyZWY9e3BhcnQuYWZmaWxpYXRlVXJsfVxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2sgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC81MCBweC00IHB5LTMgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LXppbmMtMzAwIGhvdmVyOmJnLXppbmMtODAwIGhvdmVyOmJvcmRlci16aW5jLTYwMCB0ZXh0LWNlbnRlciB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IFJldGFpbGVyXG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXNpZGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tYWluPlxuICApO1xufVxuXG4iXSwibmFtZXMiOlsidXNlTWVtbyIsIkxpbmsiLCJ1c2VQYXJhbXMiLCJDQVRFR09SSUVTIiwiUEFSVFMiLCJQYXJ0RGV0YWlsUGFnZSIsInBhcmFtcyIsImNhdGVnb3J5SWQiLCJwYXJ0SWQiLCJjYXRlZ29yeSIsImZpbmQiLCJjIiwiaWQiLCJwYXJ0IiwicCIsIm1haW4iLCJjbGFzc05hbWUiLCJkaXYiLCJoMSIsImhyZWYiLCJoZWFkZXIiLCJuYW1lIiwiYnJhbmQiLCJzcGFuIiwic2VjdGlvbiIsIm5vdGVzIiwic3ZnIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJ4bWxucyIsInBhdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImQiLCJhc2lkZSIsInByaWNlIiwidG9GaXhlZCIsImEiLCJhZmZpbGlhdGVVcmwiLCJ0YXJnZXQiLCJyZWwiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx\n")); +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ PartDetailPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./data */ \"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/data.ts\");\n/* harmony import */ var _components_PricingHistoryGraph__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/PricingHistoryGraph */ \"(app-pages-browser)/./components/PricingHistoryGraph.tsx\");\n/* harmony import */ var _components_RetailersList__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/components/RetailersList */ \"(app-pages-browser)/./components/RetailersList.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\n\nfunction PartDetailPage() {\n _s();\n const params = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams)();\n const categoryId = params.categoryId;\n const partId = params.partId;\n const category = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.find((c)=>c.id === categoryId), [\n categoryId\n ]);\n const part = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId), [\n partId,\n categoryId\n ]);\n // Get pricing history and retailer offers\n // TODO: Replace with API calls when endpoints are ready\n const pricingHistory = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>part ? (0,_data__WEBPACK_IMPORTED_MODULE_5__.getPricingHistory)(part.id, part.price) : [], [\n part\n ]);\n const retailerOffers = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>part ? (0,_data__WEBPACK_IMPORTED_MODULE_5__.getRetailerOffers)(part.id, part.price, part.affiliateUrl) : [], [\n part\n ]);\n if (!category || !part) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"Product Not Found\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 47,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-amber-300 hover:text-amber-200 underline\",\n children: \"Return to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 50,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 46,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 45,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 44,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/\".concat(categoryId),\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: [\n \"← Back to \",\n category.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 67,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 74,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 78,\n columnNumber: 28\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 77,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: [\n category.name,\n \" • Product Details\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 80,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 73,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 66,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 lg:grid-cols-[2fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-6 md:grid-cols-[1fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-2\",\n children: \"Product Information\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 95,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Brand\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 100,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.brand\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 103,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 99,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Model\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 108,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 111,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 107,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Category\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 116,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 119,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 115,\n columnNumber: 21\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 125,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-300 leading-relaxed\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 128,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 124,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 98,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 94,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full aspect-square max-w-md rounded-md border border-zinc-700 bg-zinc-900/50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center p-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-16 h-16 mx-auto text-zinc-600 mb-2\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5,\n d: \"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 147,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 140,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide\",\n children: \"Product Image\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 154,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 139,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 138,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 137,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 92,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 91,\n columnNumber: 13\n }, this),\n retailerOffers.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_RetailersList__WEBPACK_IMPORTED_MODULE_7__.RetailersList, {\n retailers: retailerOffers\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 166,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 165,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 89,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/80 p-4 md:p-6 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400 mb-2\",\n children: \"Price\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 174,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-semibold text-amber-300\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 175,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 173,\n columnNumber: 13\n }, this),\n pricingHistory.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_PricingHistoryGraph__WEBPACK_IMPORTED_MODULE_6__.PricingHistoryGraph, {\n data: pricingHistory,\n currentPrice: part.price\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 183,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 182,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-auto space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder?select=\".concat(categoryId, \":\").concat(part.id),\n className: \"block w-full rounded-md border border-amber-400/60 bg-amber-400/10 px-4 py-3 text-sm font-medium text-amber-200 hover:bg-amber-400/15 text-center transition-colors\",\n children: \"Add to Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 191,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: part.affiliateUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"block w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-4 py-3 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 text-center transition-colors\",\n children: \"View Retailer\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 197,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 190,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 172,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 87,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 64,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 63,\n columnNumber: 5\n }, this);\n}\n_s(PartDetailPage, \"ZpwVUtr8mmMYWPNCCmGSoaSl2YI=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams\n ];\n});\n_c = PartDetailPage;\nvar _c;\n$RefreshReg$(_c, \"PartDetailPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL1tjYXRlZ29yeUlkXS9bcGFydElkXS9wYWdlLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFFZ0M7QUFDSDtBQUNlO0FBQ2U7QUFFRztBQUNTO0FBQ1o7QUFFNUMsU0FBU1M7O0lBQ3RCLE1BQU1DLFNBQVNSLDBEQUFTQTtJQUN4QixNQUFNUyxhQUFhRCxPQUFPQyxVQUFVO0lBQ3BDLE1BQU1DLFNBQVNGLE9BQU9FLE1BQU07SUFFNUIsTUFBTUMsV0FBV2IsOENBQU9BLENBQ3RCLElBQU1HLDZEQUFVQSxDQUFDVyxJQUFJLENBQUMsQ0FBQ0MsSUFBTUEsRUFBRUMsRUFBRSxLQUFLTCxhQUN0QztRQUFDQTtLQUFXO0lBR2QsTUFBTU0sT0FBT2pCLDhDQUFPQSxDQUNsQixJQUFNSSx3REFBS0EsQ0FBQ1UsSUFBSSxDQUFDLENBQUNJLElBQU1BLEVBQUVGLEVBQUUsS0FBS0osVUFBVU0sRUFBRVAsVUFBVSxLQUFLQSxhQUM1RDtRQUFDQztRQUFRRDtLQUFXO0lBR3RCLDBDQUEwQztJQUMxQyx3REFBd0Q7SUFDeEQsTUFBTVEsaUJBQWlCbkIsOENBQU9BLENBQzVCLElBQU9pQixPQUFPWix3REFBaUJBLENBQUNZLEtBQUtELEVBQUUsRUFBRUMsS0FBS0csS0FBSyxJQUFJLEVBQUUsRUFDekQ7UUFBQ0g7S0FBSztJQUdSLE1BQU1JLGlCQUFpQnJCLDhDQUFPQSxDQUM1QixJQUNFaUIsT0FDSVgsd0RBQWlCQSxDQUFDVyxLQUFLRCxFQUFFLEVBQUVDLEtBQUtHLEtBQUssRUFBRUgsS0FBS0ssWUFBWSxJQUN4RCxFQUFFLEVBQ1I7UUFBQ0w7S0FBSztJQUdSLElBQUksQ0FBQ0osWUFBWSxDQUFDSSxNQUFNO1FBQ3RCLHFCQUNFLDhEQUFDTTtZQUFLQyxXQUFVO3NCQUNkLDRFQUFDQztnQkFBSUQsV0FBVTswQkFDYiw0RUFBQ0M7b0JBQUlELFdBQVU7O3NDQUNiLDhEQUFDRTs0QkFBR0YsV0FBVTtzQ0FBMkM7Ozs7OztzQ0FHekQsOERBQUN2QixpREFBSUE7NEJBQ0gwQixNQUFLOzRCQUNMSCxXQUFVO3NDQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBT1g7SUFFQSxxQkFDRSw4REFBQ0Q7UUFBS0MsV0FBVTtrQkFDZCw0RUFBQ0M7WUFBSUQsV0FBVTs7OEJBRWIsOERBQUNJO29CQUFPSixXQUFVOztzQ0FDaEIsOERBQUN2QixpREFBSUE7NEJBQ0gwQixNQUFNLGVBQTBCLE9BQVhoQjs0QkFDckJhLFdBQVU7O2dDQUNYO2dDQUNZWCxTQUFTZ0IsSUFBSTs7Ozs7OztzQ0FFMUIsOERBQUNKOzs4Q0FDQyw4REFBQ1A7b0NBQUVNLFdBQVU7OENBQWlFOzs7Ozs7OENBRzlFLDhEQUFDRTtvQ0FBR0YsV0FBVTs7d0NBQ1hQLEtBQUthLEtBQUs7d0NBQUM7c0RBQUMsOERBQUNDOzRDQUFLUCxXQUFVO3NEQUFrQlAsS0FBS1ksSUFBSTs7Ozs7Ozs7Ozs7OzhDQUUxRCw4REFBQ1g7b0NBQUVNLFdBQVU7O3dDQUNWWCxTQUFTZ0IsSUFBSTt3Q0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4QkFNckIsOERBQUNKO29CQUFJRCxXQUFVOztzQ0FFYiw4REFBQ1E7NEJBQVFSLFdBQVU7OzhDQUVqQiw4REFBQ0M7b0NBQUlELFdBQVU7OENBQ2IsNEVBQUNDO3dDQUFJRCxXQUFVOzswREFFYiw4REFBQ0M7O2tFQUNDLDhEQUFDQTt3REFBSUQsV0FBVTtrRUFBdUU7Ozs7OztrRUFHdEYsOERBQUNDO3dEQUFJRCxXQUFVOzswRUFDYiw4REFBQ0M7O2tGQUNDLDhEQUFDQTt3RUFBSUQsV0FBVTtrRkFBcUQ7Ozs7OztrRkFHcEUsOERBQUNDO3dFQUFJRCxXQUFVO2tGQUNaUCxLQUFLYSxLQUFLOzs7Ozs7Ozs7Ozs7MEVBR2YsOERBQUNMOztrRkFDQyw4REFBQ0E7d0VBQUlELFdBQVU7a0ZBQXFEOzs7Ozs7a0ZBR3BFLDhEQUFDQzt3RUFBSUQsV0FBVTtrRkFDWlAsS0FBS1ksSUFBSTs7Ozs7Ozs7Ozs7OzBFQUdkLDhEQUFDSjs7a0ZBQ0MsOERBQUNBO3dFQUFJRCxXQUFVO2tGQUFxRDs7Ozs7O2tGQUdwRSw4REFBQ0M7d0VBQUlELFdBQVU7a0ZBQ1pYLFNBQVNnQixJQUFJOzs7Ozs7Ozs7Ozs7NERBR2pCWixLQUFLZ0IsS0FBSyxrQkFDVCw4REFBQ1I7O2tGQUNDLDhEQUFDQTt3RUFBSUQsV0FBVTtrRkFBcUQ7Ozs7OztrRkFHcEUsOERBQUNDO3dFQUFJRCxXQUFVO2tGQUNaUCxLQUFLZ0IsS0FBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBEQVFyQiw4REFBQ1I7Z0RBQUlELFdBQVU7MERBQ2IsNEVBQUNDO29EQUFJRCxXQUFVOzhEQUNiLDRFQUFDQzt3REFBSUQsV0FBVTs7MEVBQ2IsOERBQUNVO2dFQUNDVixXQUFVO2dFQUNWVyxNQUFLO2dFQUNMQyxRQUFPO2dFQUNQQyxTQUFRO2dFQUNSQyxPQUFNOzBFQUVOLDRFQUFDQztvRUFDQ0MsZUFBYztvRUFDZEMsZ0JBQWU7b0VBQ2ZDLGFBQWE7b0VBQ2JDLEdBQUU7Ozs7Ozs7Ozs7OzBFQUdOLDhEQUFDekI7Z0VBQUVNLFdBQVU7MEVBQWdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0NBVXRFSCxlQUFldUIsTUFBTSxHQUFHLG1CQUN2Qiw4REFBQ25CO29DQUFJRCxXQUFVOzhDQUNiLDRFQUFDaEIsb0VBQWFBO3dDQUFDcUMsV0FBV3hCOzs7Ozs7Ozs7Ozs7Ozs7OztzQ0FNaEMsOERBQUN5Qjs0QkFBTXRCLFdBQVU7OzhDQUNmLDhEQUFDQztvQ0FBSUQsV0FBVTs7c0RBQ2IsOERBQUNDOzRDQUFJRCxXQUFVO3NEQUE2Qjs7Ozs7O3NEQUM1Qyw4REFBQ0M7NENBQUlELFdBQVU7O2dEQUF3QztnREFDbkRQLEtBQUtHLEtBQUssQ0FBQzJCLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7OztnQ0FLeEI1QixlQUFleUIsTUFBTSxHQUFHLG1CQUN2Qiw4REFBQ25CO29DQUFJRCxXQUFVOzhDQUNiLDRFQUFDakIsZ0ZBQW1CQTt3Q0FDbEJ5QyxNQUFNN0I7d0NBQ044QixjQUFjaEMsS0FBS0csS0FBSzs7Ozs7Ozs7Ozs7OENBSzlCLDhEQUFDSztvQ0FBSUQsV0FBVTs7c0RBQ2IsOERBQUN2QixpREFBSUE7NENBQ0gwQixNQUFNLHNCQUFvQ1YsT0FBZE4sWUFBVyxLQUFXLE9BQVJNLEtBQUtELEVBQUU7NENBQ2pEUSxXQUFVO3NEQUNYOzs7Ozs7c0RBR0QsOERBQUMwQjs0Q0FDQ3ZCLE1BQU1WLEtBQUtLLFlBQVk7NENBQ3ZCNkIsUUFBTzs0Q0FDUEMsS0FBSTs0Q0FDSjVCLFdBQVU7c0RBQ1g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU2Y7R0F2TXdCZjs7UUFDUFAsc0RBQVNBOzs7S0FERk8iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2d1bmJ1aWxkZXIvW2NhdGVnb3J5SWRdL1twYXJ0SWRdL3BhZ2UudHN4PzQyYzEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB7IHVzZVBhcmFtcyB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIjtcbmltcG9ydCB7IENBVEVHT1JJRVMsIFBBUlRTIH0gZnJvbSBcIkAvZGF0YS9ndW5idWlsZGVyUGFydHNcIjtcbmltcG9ydCB0eXBlIHsgQ2F0ZWdvcnlJZCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcbmltcG9ydCB7IGdldFByaWNpbmdIaXN0b3J5LCBnZXRSZXRhaWxlck9mZmVycyB9IGZyb20gXCIuL2RhdGFcIjtcbmltcG9ydCB7IFByaWNpbmdIaXN0b3J5R3JhcGggfSBmcm9tIFwiQC9jb21wb25lbnRzL1ByaWNpbmdIaXN0b3J5R3JhcGhcIjtcbmltcG9ydCB7IFJldGFpbGVyc0xpc3QgfSBmcm9tIFwiQC9jb21wb25lbnRzL1JldGFpbGVyc0xpc3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFydERldGFpbFBhZ2UoKSB7XG4gIGNvbnN0IHBhcmFtcyA9IHVzZVBhcmFtcygpO1xuICBjb25zdCBjYXRlZ29yeUlkID0gcGFyYW1zLmNhdGVnb3J5SWQgYXMgQ2F0ZWdvcnlJZDtcbiAgY29uc3QgcGFydElkID0gcGFyYW1zLnBhcnRJZCBhcyBzdHJpbmc7XG5cbiAgY29uc3QgY2F0ZWdvcnkgPSB1c2VNZW1vKFxuICAgICgpID0+IENBVEVHT1JJRVMuZmluZCgoYykgPT4gYy5pZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW2NhdGVnb3J5SWRdLFxuICApO1xuXG4gIGNvbnN0IHBhcnQgPSB1c2VNZW1vKFxuICAgICgpID0+IFBBUlRTLmZpbmQoKHApID0+IHAuaWQgPT09IHBhcnRJZCAmJiBwLmNhdGVnb3J5SWQgPT09IGNhdGVnb3J5SWQpLFxuICAgIFtwYXJ0SWQsIGNhdGVnb3J5SWRdLFxuICApO1xuXG4gIC8vIEdldCBwcmljaW5nIGhpc3RvcnkgYW5kIHJldGFpbGVyIG9mZmVyc1xuICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggQVBJIGNhbGxzIHdoZW4gZW5kcG9pbnRzIGFyZSByZWFkeVxuICBjb25zdCBwcmljaW5nSGlzdG9yeSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHBhcnQgPyBnZXRQcmljaW5nSGlzdG9yeShwYXJ0LmlkLCBwYXJ0LnByaWNlKSA6IFtdKSxcbiAgICBbcGFydF0sXG4gICk7XG5cbiAgY29uc3QgcmV0YWlsZXJPZmZlcnMgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBwYXJ0XG4gICAgICAgID8gZ2V0UmV0YWlsZXJPZmZlcnMocGFydC5pZCwgcGFydC5wcmljZSwgcGFydC5hZmZpbGlhdGVVcmwpXG4gICAgICAgIDogW10sXG4gICAgW3BhcnRdLFxuICApO1xuXG4gIGlmICghY2F0ZWdvcnkgfHwgIXBhcnQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gbWF4LXctNnhsIHB4LTQgcHktNiBsZzpweS0xMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtemluYy01MCBtYi00XCI+XG4gICAgICAgICAgICAgIFByb2R1Y3QgTm90IEZvdW5kXG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9ndW5idWlsZGVyXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDAgaG92ZXI6dGV4dC1hbWJlci0yMDAgdW5kZXJsaW5lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmV0dXJuIHRvIEd1bmJ1aWxkZXJcbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21haW4+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIG1heC13LTZ4bCBweC00IHB5LTYgbGc6cHktMTBcIj5cbiAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJtYi02XCI+XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlci8ke2NhdGVnb3J5SWR9YH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMzAwIG1iLTQgaW5saW5lLWJsb2NrXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICDihpAgQmFjayB0byB7Y2F0ZWdvcnkubmFtZX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4yZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgIFNoYWRvdyBTdGFuZGFyZFxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cIm10LTEgdGV4dC0yeGwgbWQ6dGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodFwiPlxuICAgICAgICAgICAgICB7cGFydC5icmFuZH0gPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDBcIj57cGFydC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0yIHRleHQtc20gdGV4dC16aW5jLTQwMCBtYXgtdy14bFwiPlxuICAgICAgICAgICAgICB7Y2F0ZWdvcnkubmFtZX0g4oCiIFByb2R1Y3QgRGV0YWlsc1xuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICB7LyogUHJvZHVjdCBEZXRhaWxzICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ2FwLTQgbGc6Z3JpZC1jb2xzLVsyZnIsMWZyXVwiPlxuICAgICAgICAgIHsvKiBNYWluIENvbnRlbnQgKi99XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgICB7LyogUHJvZHVjdCBJbmZvcm1hdGlvbiAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtNCBtZDpwLTZcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC02IG1kOmdyaWQtY29scy1bMWZyLDFmcl1cIj5cbiAgICAgICAgICAgICAgICB7LyogUHJvZHVjdCBJbmZvICovfVxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4xNmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTQwMCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIFByb2R1Y3QgSW5mb3JtYXRpb25cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBCcmFuZFxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQuYnJhbmR9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2NhdGVnb3J5Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB7cGFydC5ub3RlcyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTMwMCBsZWFkaW5nLXJlbGF4ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgey8qIFByb2R1Y3QgSW1hZ2UgKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBhc3BlY3Qtc3F1YXJlIG1heC13LW1kIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC81MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIHAtOFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMTYgaC0xNiBteC1hdXRvIHRleHQtemluYy02MDAgbWItMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezEuNX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00IDE2bDQuNTg2LTQuNTg2YTIgMiAwIDAxMi44MjggMEwxNiAxNm0tMi0ybDEuNTg2LTEuNTg2YTIgMiAwIDAxMi44MjggMEwyMCAxNG0tNi02aC4wMU02IDIwaDEyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyelwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUHJvZHVjdCBJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIFJldGFpbGVycyBMaXN0ICovfVxuICAgICAgICAgICAge3JldGFpbGVyT2ZmZXJzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTk1MC82MCBwLTQgbWQ6cC02XCI+XG4gICAgICAgICAgICAgICAgPFJldGFpbGVyc0xpc3QgcmV0YWlsZXJzPXtyZXRhaWxlck9mZmVyc30gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgIHsvKiBTaWRlYmFyICovfVxuICAgICAgICAgIDxhc2lkZSBjbGFzc05hbWU9XCJyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItemluYy04MDAgYmctemluYy05NTAvODAgcC00IG1kOnAtNiBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy00MDAgbWItMlwiPlByaWNlPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMFwiPlxuICAgICAgICAgICAgICAgICR7cGFydC5wcmljZS50b0ZpeGVkKDIpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogUHJpY2luZyBIaXN0b3J5ICovfVxuICAgICAgICAgICAge3ByaWNpbmdIaXN0b3J5Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTZcIj5cbiAgICAgICAgICAgICAgICA8UHJpY2luZ0hpc3RvcnlHcmFwaFxuICAgICAgICAgICAgICAgICAgZGF0YT17cHJpY2luZ0hpc3Rvcnl9XG4gICAgICAgICAgICAgICAgICBjdXJyZW50UHJpY2U9e3BhcnQucHJpY2V9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LWF1dG8gc3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyP3NlbGVjdD0ke2NhdGVnb3J5SWR9OiR7cGFydC5pZH1gfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYW1iZXItNDAwLzYwIGJnLWFtYmVyLTQwMC8xMCBweC00IHB5LTMgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWFtYmVyLTIwMCBob3ZlcjpiZy1hbWJlci00MDAvMTUgdGV4dC1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQWRkIHRvIEJ1aWxkXG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBocmVmPXtwYXJ0LmFmZmlsaWF0ZVVybH1cbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05MDAvNTAgcHgtNCBweS0zIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy02MDAgdGV4dC1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBSZXRhaWxlclxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FzaWRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWFpbj5cbiAgKTtcbn1cblxuIl0sIm5hbWVzIjpbInVzZU1lbW8iLCJMaW5rIiwidXNlUGFyYW1zIiwiQ0FURUdPUklFUyIsIlBBUlRTIiwiZ2V0UHJpY2luZ0hpc3RvcnkiLCJnZXRSZXRhaWxlck9mZmVycyIsIlByaWNpbmdIaXN0b3J5R3JhcGgiLCJSZXRhaWxlcnNMaXN0IiwiUGFydERldGFpbFBhZ2UiLCJwYXJhbXMiLCJjYXRlZ29yeUlkIiwicGFydElkIiwiY2F0ZWdvcnkiLCJmaW5kIiwiYyIsImlkIiwicGFydCIsInAiLCJwcmljaW5nSGlzdG9yeSIsInByaWNlIiwicmV0YWlsZXJPZmZlcnMiLCJhZmZpbGlhdGVVcmwiLCJtYWluIiwiY2xhc3NOYW1lIiwiZGl2IiwiaDEiLCJocmVmIiwiaGVhZGVyIiwibmFtZSIsImJyYW5kIiwic3BhbiIsInNlY3Rpb24iLCJub3RlcyIsInN2ZyIsImZpbGwiLCJzdHJva2UiLCJ2aWV3Qm94IiwieG1sbnMiLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwibGVuZ3RoIiwicmV0YWlsZXJzIiwiYXNpZGUiLCJ0b0ZpeGVkIiwiZGF0YSIsImN1cnJlbnRQcmljZSIsImEiLCJ0YXJnZXQiLCJyZWwiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./components/PricingHistoryGraph.tsx": +/*!********************************************!*\ + !*** ./components/PricingHistoryGraph.tsx ***! + \********************************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PricingHistoryGraph: function() { return /* binding */ PricingHistoryGraph; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ PricingHistoryGraph auto */ \nfunction PricingHistoryGraph(param) {\n let { data, currentPrice } = param;\n if (data.length === 0) return null;\n // Calculate chart dimensions\n const width = 100;\n const height = 60;\n const padding = 4;\n // Find min and max prices for scaling\n const prices = data.map((d)=>d.price);\n const minPrice = Math.min(...prices);\n const maxPrice = Math.max(...prices);\n const priceRange = maxPrice - minPrice || 1; // Avoid division by zero\n // Generate path points\n const points = data.map((point, index)=>{\n const x = padding + index / (data.length - 1) * (width - padding * 2);\n const normalizedPrice = (point.price - minPrice) / priceRange;\n const y = padding + (height - padding * 2) * (1 - normalizedPrice);\n return {\n x,\n y,\n price: point.price\n };\n });\n // Create SVG path\n const pathData = points.map((point, index)=>\"\".concat(index === 0 ? \"M\" : \"L\", \" \").concat(point.x, \" \").concat(point.y)).join(\" \");\n // Create area path (for gradient fill)\n const areaPath = \"\".concat(pathData, \" L \").concat(width - padding, \" \").concat(height - padding, \" L \").concat(padding, \" \").concat(height - padding, \" Z\");\n // Format date for display\n const formatDate = (dateStr)=>{\n const date = new Date(dateStr);\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\"\n });\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400\",\n children: \"Price History (30 Days)\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 53,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 text-xs text-zinc-500\",\n children: [\n \"Current: \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300 font-semibold\",\n children: [\n \"$\",\n currentPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 57,\n columnNumber: 22\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 56,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 52,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500\",\n children: [\n formatDate(data[0].date),\n \" - \",\n formatDate(data[data.length - 1].date)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 60,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 51,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-32 rounded-md border border-zinc-800 bg-zinc-900/30 p-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n viewBox: \"0 0 \".concat(width, \" \").concat(height),\n className: \"w-full h-full\",\n preserveAspectRatio: \"none\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"defs\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"linearGradient\", {\n id: \"priceGradient\",\n x1: \"0%\",\n y1: \"0%\",\n x2: \"0%\",\n y2: \"100%\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"stop\", {\n offset: \"0%\",\n stopColor: \"#fbbf24\",\n stopOpacity: \"0.3\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 73,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"stop\", {\n offset: \"100%\",\n stopColor: \"#fbbf24\",\n stopOpacity: \"0.05\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 74,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 72,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 71,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: areaPath,\n fill: \"url(#priceGradient)\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 78,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: pathData,\n fill: \"none\",\n stroke: \"#fbbf24\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 83,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: points[points.length - 1].x,\n cy: points[points.length - 1].y,\n r: \"2\",\n fill: \"#fbbf24\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 92,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 66,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 65,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-2 flex items-center justify-between text-xs text-zinc-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"Low: $\",\n minPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 102,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"High: $\",\n maxPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 103,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 101,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 50,\n columnNumber: 5\n }, this);\n}\n_c = PricingHistoryGraph;\nvar _c;\n$RefreshReg$(_c, \"PricingHistoryGraph\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvUHJpY2luZ0hpc3RvcnlHcmFwaC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBU08sU0FBU0Esb0JBQW9CLEtBR1Q7UUFIUyxFQUNsQ0MsSUFBSSxFQUNKQyxZQUFZLEVBQ2EsR0FIUztJQUlsQyxJQUFJRCxLQUFLRSxNQUFNLEtBQUssR0FBRyxPQUFPO0lBRTlCLDZCQUE2QjtJQUM3QixNQUFNQyxRQUFRO0lBQ2QsTUFBTUMsU0FBUztJQUNmLE1BQU1DLFVBQVU7SUFFaEIsc0NBQXNDO0lBQ3RDLE1BQU1DLFNBQVNOLEtBQUtPLEdBQUcsQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxLQUFLO0lBQ3RDLE1BQU1DLFdBQVdDLEtBQUtDLEdBQUcsSUFBSU47SUFDN0IsTUFBTU8sV0FBV0YsS0FBS0csR0FBRyxJQUFJUjtJQUM3QixNQUFNUyxhQUFhRixXQUFXSCxZQUFZLEdBQUcseUJBQXlCO0lBRXRFLHVCQUF1QjtJQUN2QixNQUFNTSxTQUFTaEIsS0FBS08sR0FBRyxDQUFDLENBQUNVLE9BQU9DO1FBQzlCLE1BQU1DLElBQUlkLFVBQVcsUUFBVUwsQ0FBQUEsS0FBS0UsTUFBTSxHQUFHLEtBQU9DLENBQUFBLFFBQVFFLFVBQVU7UUFDdEUsTUFBTWUsa0JBQWtCLENBQUNILE1BQU1SLEtBQUssR0FBR0MsUUFBTyxJQUFLSztRQUNuRCxNQUFNTSxJQUFJaEIsVUFBVSxDQUFDRCxTQUFTQyxVQUFVLEtBQU0sS0FBSWUsZUFBYztRQUNoRSxPQUFPO1lBQUVEO1lBQUdFO1lBQUdaLE9BQU9RLE1BQU1SLEtBQUs7UUFBQztJQUNwQztJQUVBLGtCQUFrQjtJQUNsQixNQUFNYSxXQUFXTixPQUNkVCxHQUFHLENBQUMsQ0FBQ1UsT0FBT0MsUUFBVSxHQUE4QkQsT0FBM0JDLFVBQVUsSUFBSSxNQUFNLEtBQUksS0FBY0QsT0FBWEEsTUFBTUUsQ0FBQyxFQUFDLEtBQVcsT0FBUkYsTUFBTUksQ0FBQyxHQUN0RUUsSUFBSSxDQUFDO0lBRVIsdUNBQXVDO0lBQ3ZDLE1BQU1DLFdBQVcsR0FBaUJyQixPQUFkbUIsVUFBUyxPQUF3QmxCLE9BQW5CRCxRQUFRRSxTQUFRLEtBQXlCQSxPQUF0QkQsU0FBU0MsU0FBUSxPQUFnQkQsT0FBWEMsU0FBUSxLQUFvQixPQUFqQkQsU0FBU0MsU0FBUTtJQUV2RywwQkFBMEI7SUFDMUIsTUFBTW9CLGFBQWEsQ0FBQ0M7UUFDbEIsTUFBTUMsT0FBTyxJQUFJQyxLQUFLRjtRQUN0QixPQUFPQyxLQUFLRSxrQkFBa0IsQ0FBQyxTQUFTO1lBQUVDLE9BQU87WUFBU0MsS0FBSztRQUFVO0lBQzNFO0lBRUEscUJBQ0UsOERBQUNDO1FBQUlDLFdBQVU7OzBCQUNiLDhEQUFDRDtnQkFBSUMsV0FBVTs7a0NBQ2IsOERBQUNEOzswQ0FDQyw4REFBQ0E7Z0NBQUlDLFdBQVU7MENBQWtFOzs7Ozs7MENBR2pGLDhEQUFDRDtnQ0FBSUMsV0FBVTs7b0NBQTZCO2tEQUNqQyw4REFBQ0M7d0NBQUtELFdBQVU7OzRDQUErQjs0Q0FBRWhDLGFBQWFrQyxPQUFPLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBR25GLDhEQUFDSDt3QkFBSUMsV0FBVTs7NEJBQ1pSLFdBQVd6QixJQUFJLENBQUMsRUFBRSxDQUFDMkIsSUFBSTs0QkFBRTs0QkFBSUYsV0FBV3pCLElBQUksQ0FBQ0EsS0FBS0UsTUFBTSxHQUFHLEVBQUUsQ0FBQ3lCLElBQUk7Ozs7Ozs7Ozs7Ozs7MEJBSXZFLDhEQUFDSztnQkFBSUMsV0FBVTswQkFDYiw0RUFBQ0c7b0JBQ0NDLFNBQVMsT0FBZ0JqQyxPQUFURCxPQUFNLEtBQVUsT0FBUEM7b0JBQ3pCNkIsV0FBVTtvQkFDVksscUJBQW9COztzQ0FFcEIsOERBQUNDO3NDQUNDLDRFQUFDQztnQ0FBZUMsSUFBRztnQ0FBZ0JDLElBQUc7Z0NBQUtDLElBQUc7Z0NBQUtDLElBQUc7Z0NBQUtDLElBQUc7O2tEQUM1RCw4REFBQ0M7d0NBQUtDLFFBQU87d0NBQUtDLFdBQVU7d0NBQVVDLGFBQVk7Ozs7OztrREFDbEQsOERBQUNIO3dDQUFLQyxRQUFPO3dDQUFPQyxXQUFVO3dDQUFVQyxhQUFZOzs7Ozs7Ozs7Ozs7Ozs7OztzQ0FJeEQsOERBQUNDOzRCQUNDMUMsR0FBR2dCOzRCQUNIMkIsTUFBSzs7Ozs7O3NDQUdQLDhEQUFDRDs0QkFDQzFDLEdBQUdjOzRCQUNINkIsTUFBSzs0QkFDTEMsUUFBTzs0QkFDUEMsYUFBWTs0QkFDWkMsZUFBYzs0QkFDZEMsZ0JBQWU7Ozs7OztzQ0FHakIsOERBQUNDOzRCQUNDQyxJQUFJekMsTUFBTSxDQUFDQSxPQUFPZCxNQUFNLEdBQUcsRUFBRSxDQUFDaUIsQ0FBQzs0QkFDL0J1QyxJQUFJMUMsTUFBTSxDQUFDQSxPQUFPZCxNQUFNLEdBQUcsRUFBRSxDQUFDbUIsQ0FBQzs0QkFDL0JzQyxHQUFFOzRCQUNGUixNQUFLOzs7Ozs7Ozs7Ozs7Ozs7OzswQkFLWCw4REFBQ25CO2dCQUFJQyxXQUFVOztrQ0FDYiw4REFBQ0M7OzRCQUFLOzRCQUFPeEIsU0FBU3lCLE9BQU8sQ0FBQzs7Ozs7OztrQ0FDOUIsOERBQUNEOzs0QkFBSzs0QkFBUXJCLFNBQVNzQixPQUFPLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJdkM7S0FqR2dCcEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vY29tcG9uZW50cy9QcmljaW5nSGlzdG9yeUdyYXBoLnRzeD82YzVhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgdHlwZSB7IFByaWNlSGlzdG9yeVBvaW50IH0gZnJvbSBcIkAvYXBwL2d1bmJ1aWxkZXIvW2NhdGVnb3J5SWRdL1twYXJ0SWRdL2RhdGFcIjtcblxuaW50ZXJmYWNlIFByaWNpbmdIaXN0b3J5R3JhcGhQcm9wcyB7XG4gIGRhdGE6IFByaWNlSGlzdG9yeVBvaW50W107XG4gIGN1cnJlbnRQcmljZTogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUHJpY2luZ0hpc3RvcnlHcmFwaCh7XG4gIGRhdGEsXG4gIGN1cnJlbnRQcmljZSxcbn06IFByaWNpbmdIaXN0b3J5R3JhcGhQcm9wcykge1xuICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIC8vIENhbGN1bGF0ZSBjaGFydCBkaW1lbnNpb25zXG4gIGNvbnN0IHdpZHRoID0gMTAwO1xuICBjb25zdCBoZWlnaHQgPSA2MDtcbiAgY29uc3QgcGFkZGluZyA9IDQ7XG5cbiAgLy8gRmluZCBtaW4gYW5kIG1heCBwcmljZXMgZm9yIHNjYWxpbmdcbiAgY29uc3QgcHJpY2VzID0gZGF0YS5tYXAoKGQpID0+IGQucHJpY2UpO1xuICBjb25zdCBtaW5QcmljZSA9IE1hdGgubWluKC4uLnByaWNlcyk7XG4gIGNvbnN0IG1heFByaWNlID0gTWF0aC5tYXgoLi4ucHJpY2VzKTtcbiAgY29uc3QgcHJpY2VSYW5nZSA9IG1heFByaWNlIC0gbWluUHJpY2UgfHwgMTsgLy8gQXZvaWQgZGl2aXNpb24gYnkgemVyb1xuXG4gIC8vIEdlbmVyYXRlIHBhdGggcG9pbnRzXG4gIGNvbnN0IHBvaW50cyA9IGRhdGEubWFwKChwb2ludCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCB4ID0gcGFkZGluZyArICgoaW5kZXggLyAoZGF0YS5sZW5ndGggLSAxKSkgKiAod2lkdGggLSBwYWRkaW5nICogMikpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQcmljZSA9IChwb2ludC5wcmljZSAtIG1pblByaWNlKSAvIHByaWNlUmFuZ2U7XG4gICAgY29uc3QgeSA9IHBhZGRpbmcgKyAoaGVpZ2h0IC0gcGFkZGluZyAqIDIpICogKDEgLSBub3JtYWxpemVkUHJpY2UpO1xuICAgIHJldHVybiB7IHgsIHksIHByaWNlOiBwb2ludC5wcmljZSB9O1xuICB9KTtcblxuICAvLyBDcmVhdGUgU1ZHIHBhdGhcbiAgY29uc3QgcGF0aERhdGEgPSBwb2ludHNcbiAgICAubWFwKChwb2ludCwgaW5kZXgpID0+IGAke2luZGV4ID09PSAwID8gXCJNXCIgOiBcIkxcIn0gJHtwb2ludC54fSAke3BvaW50Lnl9YClcbiAgICAuam9pbihcIiBcIik7XG5cbiAgLy8gQ3JlYXRlIGFyZWEgcGF0aCAoZm9yIGdyYWRpZW50IGZpbGwpXG4gIGNvbnN0IGFyZWFQYXRoID0gYCR7cGF0aERhdGF9IEwgJHt3aWR0aCAtIHBhZGRpbmd9ICR7aGVpZ2h0IC0gcGFkZGluZ30gTCAke3BhZGRpbmd9ICR7aGVpZ2h0IC0gcGFkZGluZ30gWmA7XG5cbiAgLy8gRm9ybWF0IGRhdGUgZm9yIGRpc3BsYXlcbiAgY29uc3QgZm9ybWF0RGF0ZSA9IChkYXRlU3RyOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cik7XG4gICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZW4tVVNcIiwgeyBtb250aDogXCJzaG9ydFwiLCBkYXk6IFwibnVtZXJpY1wiIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGxcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItNCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4xNmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTQwMFwiPlxuICAgICAgICAgICAgUHJpY2UgSGlzdG9yeSAoMzAgRGF5cylcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTEgdGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICBDdXJyZW50OiA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWFtYmVyLTMwMCBmb250LXNlbWlib2xkXCI+JHtjdXJyZW50UHJpY2UudG9GaXhlZCgyKX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgIHtmb3JtYXREYXRlKGRhdGFbMF0uZGF0ZSl9IC0ge2Zvcm1hdERhdGUoZGF0YVtkYXRhLmxlbmd0aCAtIDFdLmRhdGUpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbCBoLTMyIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTkwMC8zMCBwLTNcIj5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIHZpZXdCb3g9e2AwIDAgJHt3aWR0aH0gJHtoZWlnaHR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsXCJcbiAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInByaWNlR3JhZGllbnRcIiB4MT1cIjAlXCIgeTE9XCIwJVwiIHgyPVwiMCVcIiB5Mj1cIjEwMCVcIj5cbiAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMCVcIiBzdG9wQ29sb3I9XCIjZmJiZjI0XCIgc3RvcE9wYWNpdHk9XCIwLjNcIiAvPlxuICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxMDAlXCIgc3RvcENvbG9yPVwiI2ZiYmYyNFwiIHN0b3BPcGFjaXR5PVwiMC4wNVwiIC8+XG4gICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICB7LyogQXJlYSBmaWxsICovfVxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPXthcmVhUGF0aH1cbiAgICAgICAgICAgIGZpbGw9XCJ1cmwoI3ByaWNlR3JhZGllbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIHsvKiBMaW5lICovfVxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPXtwYXRoRGF0YX1cbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIHN0cm9rZT1cIiNmYmJmMjRcIlxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjVcIlxuICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgey8qIEN1cnJlbnQgcHJpY2UgaW5kaWNhdG9yICovfVxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGN4PXtwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLnh9XG4gICAgICAgICAgICBjeT17cG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXS55fVxuICAgICAgICAgICAgcj1cIjJcIlxuICAgICAgICAgICAgZmlsbD1cIiNmYmJmMjRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gdGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgIDxzcGFuPkxvdzogJHttaW5QcmljZS50b0ZpeGVkKDIpfTwvc3Bhbj5cbiAgICAgICAgPHNwYW4+SGlnaDogJHttYXhQcmljZS50b0ZpeGVkKDIpfTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG4iXSwibmFtZXMiOlsiUHJpY2luZ0hpc3RvcnlHcmFwaCIsImRhdGEiLCJjdXJyZW50UHJpY2UiLCJsZW5ndGgiLCJ3aWR0aCIsImhlaWdodCIsInBhZGRpbmciLCJwcmljZXMiLCJtYXAiLCJkIiwicHJpY2UiLCJtaW5QcmljZSIsIk1hdGgiLCJtaW4iLCJtYXhQcmljZSIsIm1heCIsInByaWNlUmFuZ2UiLCJwb2ludHMiLCJwb2ludCIsImluZGV4IiwieCIsIm5vcm1hbGl6ZWRQcmljZSIsInkiLCJwYXRoRGF0YSIsImpvaW4iLCJhcmVhUGF0aCIsImZvcm1hdERhdGUiLCJkYXRlU3RyIiwiZGF0ZSIsIkRhdGUiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJtb250aCIsImRheSIsImRpdiIsImNsYXNzTmFtZSIsInNwYW4iLCJ0b0ZpeGVkIiwic3ZnIiwidmlld0JveCIsInByZXNlcnZlQXNwZWN0UmF0aW8iLCJkZWZzIiwibGluZWFyR3JhZGllbnQiLCJpZCIsIngxIiwieTEiLCJ4MiIsInkyIiwic3RvcCIsIm9mZnNldCIsInN0b3BDb2xvciIsInN0b3BPcGFjaXR5IiwicGF0aCIsImZpbGwiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsImNpcmNsZSIsImN4IiwiY3kiLCJyIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/PricingHistoryGraph.tsx\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./components/RetailersList.tsx": +/*!**************************************!*\ + !*** ./components/RetailersList.tsx ***! + \**************************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RetailersList: function() { return /* binding */ RetailersList; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ RetailersList auto */ \nfunction RetailersList(param) {\n let { retailers } = param;\n if (retailers.length === 0) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-500 text-center py-4\",\n children: \"No retailer offers available.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, this);\n }\n const lowestPrice = Math.min(...retailers.map((r)=>r.price));\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400\",\n children: \"Available Retailers\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 23,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 text-xs text-zinc-500\",\n children: [\n retailers.length,\n \" retailer\",\n retailers.length !== 1 ? \"s\" : \"\",\n \" found\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 26,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 22,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: retailers.map((retailer)=>{\n const isLowestPrice = retailer.price === lowestPrice;\n const isOnSale = retailer.originalPrice !== undefined;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-md p-3 transition-colors \".concat(retailer.inStock ? \"border-zinc-700 bg-zinc-900/30 hover:border-zinc-600\" : \"border-zinc-800 bg-zinc-900/20 opacity-60\"),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 min-w-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 mb-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-semibold text-zinc-50\",\n children: retailer.retailerName\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 48,\n columnNumber: 21\n }, this),\n isLowestPrice && retailer.inStock && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[0.65rem] font-semibold uppercase tracking-wide px-1.5 py-0.5 rounded bg-amber-400/20 text-amber-300 border border-amber-400/30\",\n children: \"Best Price\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 52,\n columnNumber: 23\n }, this),\n !retailer.inStock && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[0.65rem] font-semibold uppercase tracking-wide px-1.5 py-0.5 rounded bg-red-500/20 text-red-400 border border-red-500/30\",\n children: \"Out of Stock\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 57,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 47,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg font-semibold \".concat(isLowestPrice && retailer.inStock ? \"text-amber-300\" : \"text-zinc-300\"),\n children: [\n \"$\",\n retailer.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 63,\n columnNumber: 21\n }, this),\n isOnSale && retailer.originalPrice && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-zinc-500 line-through\",\n children: [\n \"$\",\n retailer.originalPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 73,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 62,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 46,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: retailer.affiliateUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"rounded-md border px-3 py-1.5 text-xs font-medium transition-colors whitespace-nowrap \".concat(retailer.inStock ? \"border-amber-400/60 bg-amber-400/10 text-amber-200 hover:bg-amber-400/15\" : \"border-zinc-700 bg-zinc-800/50 text-zinc-500 cursor-not-allowed pointer-events-none\"),\n children: retailer.inStock ? \"Buy Now\" : \"Unavailable\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 80,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 79,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 45,\n columnNumber: 15\n }, this)\n }, retailer.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 37,\n columnNumber: 13\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 31,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 21,\n columnNumber: 5\n }, this);\n}\n_c = RetailersList;\nvar _c;\n$RefreshReg$(_c, \"RetailersList\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvUmV0YWlsZXJzTGlzdC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBUU8sU0FBU0EsY0FBYyxLQUFpQztRQUFqQyxFQUFFQyxTQUFTLEVBQXNCLEdBQWpDO0lBQzVCLElBQUlBLFVBQVVDLE1BQU0sS0FBSyxHQUFHO1FBQzFCLHFCQUNFLDhEQUFDQztZQUFJQyxXQUFVO3NCQUF5Qzs7Ozs7O0lBSTVEO0lBRUEsTUFBTUMsY0FBY0MsS0FBS0MsR0FBRyxJQUFJTixVQUFVTyxHQUFHLENBQUMsQ0FBQ0MsSUFBTUEsRUFBRUMsS0FBSztJQUU1RCxxQkFDRSw4REFBQ1A7UUFBSUMsV0FBVTs7MEJBQ2IsOERBQUNEO2dCQUFJQyxXQUFVOztrQ0FDYiw4REFBQ0Q7d0JBQUlDLFdBQVU7a0NBQWtFOzs7Ozs7a0NBR2pGLDhEQUFDRDt3QkFBSUMsV0FBVTs7NEJBQ1pILFVBQVVDLE1BQU07NEJBQUM7NEJBQVVELFVBQVVDLE1BQU0sS0FBSyxJQUFJLE1BQU07NEJBQUc7Ozs7Ozs7Ozs7Ozs7MEJBSWxFLDhEQUFDQztnQkFBSUMsV0FBVTswQkFDWkgsVUFBVU8sR0FBRyxDQUFDLENBQUNHO29CQUNkLE1BQU1DLGdCQUFnQkQsU0FBU0QsS0FBSyxLQUFLTDtvQkFDekMsTUFBTVEsV0FBV0YsU0FBU0csYUFBYSxLQUFLQztvQkFFNUMscUJBQ0UsOERBQUNaO3dCQUVDQyxXQUFXLDJDQUlWLE9BSENPLFNBQVNLLE9BQU8sR0FDWix5REFDQTtrQ0FHTiw0RUFBQ2I7NEJBQUlDLFdBQVU7OzhDQUNiLDhEQUFDRDtvQ0FBSUMsV0FBVTs7c0RBQ2IsOERBQUNEOzRDQUFJQyxXQUFVOzs4REFDYiw4REFBQ2E7b0RBQUtiLFdBQVU7OERBQ2JPLFNBQVNPLFlBQVk7Ozs7OztnREFFdkJOLGlCQUFpQkQsU0FBU0ssT0FBTyxrQkFDaEMsOERBQUNDO29EQUFLYixXQUFVOzhEQUF1STs7Ozs7O2dEQUl4SixDQUFDTyxTQUFTSyxPQUFPLGtCQUNoQiw4REFBQ0M7b0RBQUtiLFdBQVU7OERBQWlJOzs7Ozs7Ozs7Ozs7c0RBS3JKLDhEQUFDRDs0Q0FBSUMsV0FBVTs7OERBQ2IsOERBQUNhO29EQUNDYixXQUFXLHlCQUlWLE9BSENRLGlCQUFpQkQsU0FBU0ssT0FBTyxHQUM3QixtQkFDQTs7d0RBRVA7d0RBQ0dMLFNBQVNELEtBQUssQ0FBQ1MsT0FBTyxDQUFDOzs7Ozs7O2dEQUUxQk4sWUFBWUYsU0FBU0csYUFBYSxrQkFDakMsOERBQUNHO29EQUFLYixXQUFVOzt3REFBcUM7d0RBQ2pETyxTQUFTRyxhQUFhLENBQUNLLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4Q0FLekMsOERBQUNoQjtvQ0FBSUMsV0FBVTs4Q0FDYiw0RUFBQ2dCO3dDQUNDQyxNQUFNVixTQUFTVyxZQUFZO3dDQUMzQkMsUUFBTzt3Q0FDUEMsS0FBSTt3Q0FDSnBCLFdBQVcseUZBSVYsT0FIQ08sU0FBU0ssT0FBTyxHQUNaLDZFQUNBO2tEQUdMTCxTQUFTSyxPQUFPLEdBQUcsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7dUJBcERqQ0wsU0FBU2MsRUFBRTs7Ozs7Z0JBMER0Qjs7Ozs7Ozs7Ozs7O0FBSVI7S0EzRmdCekIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vY29tcG9uZW50cy9SZXRhaWxlcnNMaXN0LnRzeD8yYmViIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgdHlwZSB7IFJldGFpbGVyT2ZmZXIgfSBmcm9tIFwiQC9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vW3BhcnRJZF0vZGF0YVwiO1xuXG5pbnRlcmZhY2UgUmV0YWlsZXJzTGlzdFByb3BzIHtcbiAgcmV0YWlsZXJzOiBSZXRhaWxlck9mZmVyW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXRhaWxlcnNMaXN0KHsgcmV0YWlsZXJzIH06IFJldGFpbGVyc0xpc3RQcm9wcykge1xuICBpZiAocmV0YWlsZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTUwMCB0ZXh0LWNlbnRlciBweS00XCI+XG4gICAgICAgIE5vIHJldGFpbGVyIG9mZmVycyBhdmFpbGFibGUuXG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgY29uc3QgbG93ZXN0UHJpY2UgPSBNYXRoLm1pbiguLi5yZXRhaWxlcnMubWFwKChyKSA9PiByLnByaWNlKSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi00XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjE2ZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNDAwXCI+XG4gICAgICAgICAgQXZhaWxhYmxlIFJldGFpbGVyc1xuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0xIHRleHQteHMgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgIHtyZXRhaWxlcnMubGVuZ3RofSByZXRhaWxlcntyZXRhaWxlcnMubGVuZ3RoICE9PSAxID8gXCJzXCIgOiBcIlwifSBmb3VuZFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICB7cmV0YWlsZXJzLm1hcCgocmV0YWlsZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBpc0xvd2VzdFByaWNlID0gcmV0YWlsZXIucHJpY2UgPT09IGxvd2VzdFByaWNlO1xuICAgICAgICAgIGNvbnN0IGlzT25TYWxlID0gcmV0YWlsZXIub3JpZ2luYWxQcmljZSAhPT0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAga2V5PXtyZXRhaWxlci5pZH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgYm9yZGVyIHJvdW5kZWQtbWQgcC0zIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgcmV0YWlsZXIuaW5TdG9ja1xuICAgICAgICAgICAgICAgICAgPyBcImJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC8zMCBob3Zlcjpib3JkZXItemluYy02MDBcIlxuICAgICAgICAgICAgICAgICAgOiBcImJvcmRlci16aW5jLTgwMCBiZy16aW5jLTkwMC8yMCBvcGFjaXR5LTYwXCJcbiAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgbWluLXctMFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7cmV0YWlsZXIucmV0YWlsZXJOYW1lfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIHtpc0xvd2VzdFByaWNlICYmIHJldGFpbGVyLmluU3RvY2sgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzAuNjVyZW1dIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUgcHgtMS41IHB5LTAuNSByb3VuZGVkIGJnLWFtYmVyLTQwMC8yMCB0ZXh0LWFtYmVyLTMwMCBib3JkZXIgYm9yZGVyLWFtYmVyLTQwMC8zMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQmVzdCBQcmljZVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgeyFyZXRhaWxlci5pblN0b2NrICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVswLjY1cmVtXSBmb250LXNlbWlib2xkIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIHB4LTEuNSBweS0wLjUgcm91bmRlZCBiZy1yZWQtNTAwLzIwIHRleHQtcmVkLTQwMCBib3JkZXIgYm9yZGVyLXJlZC01MDAvMzBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE91dCBvZiBTdG9ja1xuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHRleHQtbGcgZm9udC1zZW1pYm9sZCAke1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb3dlc3RQcmljZSAmJiByZXRhaWxlci5pblN0b2NrXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJ0ZXh0LWFtYmVyLTMwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJ0ZXh0LXppbmMtMzAwXCJcbiAgICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICR7cmV0YWlsZXIucHJpY2UudG9GaXhlZCgyKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB7aXNPblNhbGUgJiYgcmV0YWlsZXIub3JpZ2luYWxQcmljZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIGxpbmUtdGhyb3VnaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgJHtyZXRhaWxlci5vcmlnaW5hbFByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgaHJlZj17cmV0YWlsZXIuYWZmaWxpYXRlVXJsfVxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcm91bmRlZC1tZCBib3JkZXIgcHgtMyBweS0xLjUgdGV4dC14cyBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9ycyB3aGl0ZXNwYWNlLW5vd3JhcCAke1xuICAgICAgICAgICAgICAgICAgICAgIHJldGFpbGVyLmluU3RvY2tcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJib3JkZXItYW1iZXItNDAwLzYwIGJnLWFtYmVyLTQwMC8xMCB0ZXh0LWFtYmVyLTIwMCBob3ZlcjpiZy1hbWJlci00MDAvMTVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcImJvcmRlci16aW5jLTcwMCBiZy16aW5jLTgwMC81MCB0ZXh0LXppbmMtNTAwIGN1cnNvci1ub3QtYWxsb3dlZCBwb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtyZXRhaWxlci5pblN0b2NrID8gXCJCdXkgTm93XCIgOiBcIlVuYXZhaWxhYmxlXCJ9XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuIl0sIm5hbWVzIjpbIlJldGFpbGVyc0xpc3QiLCJyZXRhaWxlcnMiLCJsZW5ndGgiLCJkaXYiLCJjbGFzc05hbWUiLCJsb3dlc3RQcmljZSIsIk1hdGgiLCJtaW4iLCJtYXAiLCJyIiwicHJpY2UiLCJyZXRhaWxlciIsImlzTG93ZXN0UHJpY2UiLCJpc09uU2FsZSIsIm9yaWdpbmFsUHJpY2UiLCJ1bmRlZmluZWQiLCJpblN0b2NrIiwic3BhbiIsInJldGFpbGVyTmFtZSIsInRvRml4ZWQiLCJhIiwiaHJlZiIsImFmZmlsaWF0ZVVybCIsInRhcmdldCIsInJlbCIsImlkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/RetailersList.tsx\n")); /***/ }), diff --git a/.next/static/chunks/app/layout.js b/.next/static/chunks/app/layout.js index 4a3f013..b1447b1 100644 --- a/.next/static/chunks/app/layout.js +++ b/.next/static/chunks/app/layout.js @@ -25,7 +25,7 @@ eval(__webpack_require__.ts("Promise.resolve(/*! import() eager */).then(__webpa /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"eebfcdab4246\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJlZWJmY2RhYjQyNDZcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"0211aad8a3a7\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCIwMjExYWFkOGEzYTdcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); /***/ }) diff --git a/.next/static/chunks/webpack.js b/.next/static/chunks/webpack.js index 0f805fb..d653c0e 100644 --- a/.next/static/chunks/webpack.js +++ b/.next/static/chunks/webpack.js @@ -192,7 +192,7 @@ /******/ /******/ /* webpack/runtime/getFullHash */ /******/ !function() { -/******/ __webpack_require__.h = function() { return "b9562c6bb83d9ef0"; } +/******/ __webpack_require__.h = function() { return "86af3bcc66ce70ea"; } /******/ }(); /******/ /******/ /* webpack/runtime/global */ diff --git a/.next/static/css/app/layout.css b/.next/static/css/app/layout.css index d3858c7..8f3d1f8 100644 --- a/.next/static/css/app/layout.css +++ b/.next/static/css/app/layout.css @@ -592,6 +592,9 @@ video { .h-4 { height: 1rem; } +.h-32 { + height: 8rem; +} .min-h-screen { min-height: 100vh; } @@ -713,6 +716,12 @@ video { --tw-border-opacity: 1; border-color: rgb(34 197 94 / var(--tw-border-opacity)); } +.border-amber-400\/30 { + border-color: rgb(251 191 36 / 0.3); +} +.border-red-500\/30 { + border-color: rgb(239 68 68 / 0.3); +} .bg-amber-400\/10 { background-color: rgb(251 191 36 / 0.1); } @@ -746,6 +755,15 @@ video { .bg-green-500\/10 { background-color: rgb(34 197 94 / 0.1); } +.bg-amber-400\/20 { + background-color: rgb(251 191 36 / 0.2); +} +.bg-red-500\/20 { + background-color: rgb(239 68 68 / 0.2); +} +.bg-zinc-900\/20 { + background-color: rgb(24 24 27 / 0.2); +} .p-1 { padding: 0.25rem; } @@ -797,6 +815,26 @@ video { padding-left: 1.5rem; padding-right: 1.5rem; } +.px-1 { + padding-left: 0.25rem; + padding-right: 0.25rem; +} +.px-1\.5 { + padding-left: 0.375rem; + padding-right: 0.375rem; +} +.py-0 { + padding-top: 0px; + padding-bottom: 0px; +} +.py-0\.5 { + padding-top: 0.125rem; + padding-bottom: 0.125rem; +} +.py-4 { + padding-top: 1rem; + padding-bottom: 1rem; +} .pr-1 { padding-right: 0.25rem; } @@ -838,6 +876,9 @@ video { font-size: 0.75rem; line-height: 1rem; } +.text-\[0\.65rem\] { + font-size: 0.65rem; +} .font-medium { font-weight: 500; } @@ -900,15 +941,25 @@ video { --tw-text-opacity: 1; color: rgb(74 222 128 / var(--tw-text-opacity)); } +.text-red-400 { + --tw-text-opacity: 1; + color: rgb(248 113 113 / var(--tw-text-opacity)); +} .underline { text-decoration-line: underline; } +.line-through { + text-decoration-line: line-through; +} .opacity-40 { opacity: 0.4; } .opacity-0 { opacity: 0; } +.opacity-60 { + opacity: 0.6; +} .filter { filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } diff --git a/.next/static/webpack/44b2c6af73f059b8.webpack.hot-update.json b/.next/static/webpack/44b2c6af73f059b8.webpack.hot-update.json new file mode 100644 index 0000000..5e3f6af --- /dev/null +++ b/.next/static/webpack/44b2c6af73f059b8.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","app/gunbuilder/[categoryId]/[partId]/page","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/469afc16cd5c06dc.webpack.hot-update.json b/.next/static/webpack/469afc16cd5c06dc.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/.next/static/webpack/469afc16cd5c06dc.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/52bc31ac991d7066.webpack.hot-update.json b/.next/static/webpack/52bc31ac991d7066.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/.next/static/webpack/52bc31ac991d7066.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/601796416dea5810.webpack.hot-update.json b/.next/static/webpack/601796416dea5810.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/.next/static/webpack/601796416dea5810.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/7bcd31a758e98304.webpack.hot-update.json b/.next/static/webpack/7bcd31a758e98304.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/.next/static/webpack/7bcd31a758e98304.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/7fb14897109b9564.webpack.hot-update.json b/.next/static/webpack/7fb14897109b9564.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/.next/static/webpack/7fb14897109b9564.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/87786bf095dfd3fe.webpack.hot-update.json b/.next/static/webpack/87786bf095dfd3fe.webpack.hot-update.json new file mode 100644 index 0000000..5e3f6af --- /dev/null +++ b/.next/static/webpack/87786bf095dfd3fe.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","app/gunbuilder/[categoryId]/[partId]/page","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/app/gunbuilder/[categoryId]/[partId]/page.44b2c6af73f059b8.hot-update.js b/.next/static/webpack/app/gunbuilder/[categoryId]/[partId]/page.44b2c6af73f059b8.hot-update.js new file mode 100644 index 0000000..e83566e --- /dev/null +++ b/.next/static/webpack/app/gunbuilder/[categoryId]/[partId]/page.44b2c6af73f059b8.hot-update.js @@ -0,0 +1,42 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/gunbuilder/[categoryId]/[partId]/page",{ + +/***/ "(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx": +/*!*******************************************************!*\ + !*** ./app/gunbuilder/[categoryId]/[partId]/page.tsx ***! + \*******************************************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ PartDetailPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./data */ \"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/data.ts\");\n/* harmony import */ var _components_PricingHistoryGraph__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/PricingHistoryGraph */ \"(app-pages-browser)/./components/PricingHistoryGraph.tsx\");\n/* harmony import */ var _components_RetailersList__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/components/RetailersList */ \"(app-pages-browser)/./components/RetailersList.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\n\nfunction PartDetailPage() {\n _s();\n const params = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams)();\n const categoryId = params.categoryId;\n const partId = params.partId;\n const category = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.find((c)=>c.id === categoryId), [\n categoryId\n ]);\n const part = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId), [\n partId,\n categoryId\n ]);\n // Get pricing history and retailer offers\n // TODO: Replace with API calls when endpoints are ready\n const pricingHistory = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>part ? (0,_data__WEBPACK_IMPORTED_MODULE_5__.getPricingHistory)(part.id, part.price) : [], [\n part\n ]);\n const retailerOffers = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>part ? (0,_data__WEBPACK_IMPORTED_MODULE_5__.getRetailerOffers)(part.id, part.price, part.affiliateUrl) : [], [\n part\n ]);\n if (!category || !part) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"Product Not Found\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 47,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-amber-300 hover:text-amber-200 underline\",\n children: \"Return to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 50,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 46,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 45,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 44,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/\".concat(categoryId),\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: [\n \"← Back to \",\n category.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 67,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 74,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 78,\n columnNumber: 28\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 77,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: [\n category.name,\n \" • Product Details\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 80,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 73,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 66,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 lg:grid-cols-[2fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-6 md:grid-cols-[1fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-2\",\n children: \"Product Information\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 95,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Brand\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 100,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.brand\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 103,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 99,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Model\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 108,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 111,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 107,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Category\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 116,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 119,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 115,\n columnNumber: 21\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 125,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-300 leading-relaxed\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 128,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 124,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 98,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 94,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full aspect-square max-w-md rounded-md border border-zinc-700 bg-zinc-900/50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center p-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-16 h-16 mx-auto text-zinc-600 mb-2\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5,\n d: \"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 147,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 140,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide\",\n children: \"Product Image\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 154,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 139,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 138,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 137,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 92,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 91,\n columnNumber: 13\n }, this),\n pricingHistory.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_PricingHistoryGraph__WEBPACK_IMPORTED_MODULE_6__.PricingHistoryGraph, {\n data: pricingHistory,\n currentPrice: part.price\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 166,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 165,\n columnNumber: 15\n }, this),\n retailerOffers.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_RetailersList__WEBPACK_IMPORTED_MODULE_7__.RetailersList, {\n retailers: retailerOffers\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 176,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 175,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 89,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/80 p-4 md:p-6 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400 mb-2\",\n children: \"Price\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 184,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-semibold text-amber-300\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 185,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 183,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-auto space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder?select=\".concat(categoryId, \":\").concat(part.id),\n className: \"block w-full rounded-md border border-amber-400/60 bg-amber-400/10 px-4 py-3 text-sm font-medium text-amber-200 hover:bg-amber-400/15 text-center transition-colors\",\n children: \"Add to Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 191,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: part.affiliateUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"block w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-4 py-3 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 text-center transition-colors\",\n children: \"View Retailer\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 197,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 190,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 182,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 87,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 64,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 63,\n columnNumber: 5\n }, this);\n}\n_s(PartDetailPage, \"ZpwVUtr8mmMYWPNCCmGSoaSl2YI=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams\n ];\n});\n_c = PartDetailPage;\nvar _c;\n$RefreshReg$(_c, \"PartDetailPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL1tjYXRlZ29yeUlkXS9bcGFydElkXS9wYWdlLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFFZ0M7QUFDSDtBQUNlO0FBQ2U7QUFFRztBQUNTO0FBQ1o7QUFFNUMsU0FBU1M7O0lBQ3RCLE1BQU1DLFNBQVNSLDBEQUFTQTtJQUN4QixNQUFNUyxhQUFhRCxPQUFPQyxVQUFVO0lBQ3BDLE1BQU1DLFNBQVNGLE9BQU9FLE1BQU07SUFFNUIsTUFBTUMsV0FBV2IsOENBQU9BLENBQ3RCLElBQU1HLDZEQUFVQSxDQUFDVyxJQUFJLENBQUMsQ0FBQ0MsSUFBTUEsRUFBRUMsRUFBRSxLQUFLTCxhQUN0QztRQUFDQTtLQUFXO0lBR2QsTUFBTU0sT0FBT2pCLDhDQUFPQSxDQUNsQixJQUFNSSx3REFBS0EsQ0FBQ1UsSUFBSSxDQUFDLENBQUNJLElBQU1BLEVBQUVGLEVBQUUsS0FBS0osVUFBVU0sRUFBRVAsVUFBVSxLQUFLQSxhQUM1RDtRQUFDQztRQUFRRDtLQUFXO0lBR3RCLDBDQUEwQztJQUMxQyx3REFBd0Q7SUFDeEQsTUFBTVEsaUJBQWlCbkIsOENBQU9BLENBQzVCLElBQU9pQixPQUFPWix3REFBaUJBLENBQUNZLEtBQUtELEVBQUUsRUFBRUMsS0FBS0csS0FBSyxJQUFJLEVBQUUsRUFDekQ7UUFBQ0g7S0FBSztJQUdSLE1BQU1JLGlCQUFpQnJCLDhDQUFPQSxDQUM1QixJQUNFaUIsT0FDSVgsd0RBQWlCQSxDQUFDVyxLQUFLRCxFQUFFLEVBQUVDLEtBQUtHLEtBQUssRUFBRUgsS0FBS0ssWUFBWSxJQUN4RCxFQUFFLEVBQ1I7UUFBQ0w7S0FBSztJQUdSLElBQUksQ0FBQ0osWUFBWSxDQUFDSSxNQUFNO1FBQ3RCLHFCQUNFLDhEQUFDTTtZQUFLQyxXQUFVO3NCQUNkLDRFQUFDQztnQkFBSUQsV0FBVTswQkFDYiw0RUFBQ0M7b0JBQUlELFdBQVU7O3NDQUNiLDhEQUFDRTs0QkFBR0YsV0FBVTtzQ0FBMkM7Ozs7OztzQ0FHekQsOERBQUN2QixpREFBSUE7NEJBQ0gwQixNQUFLOzRCQUNMSCxXQUFVO3NDQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBT1g7SUFFQSxxQkFDRSw4REFBQ0Q7UUFBS0MsV0FBVTtrQkFDZCw0RUFBQ0M7WUFBSUQsV0FBVTs7OEJBRWIsOERBQUNJO29CQUFPSixXQUFVOztzQ0FDaEIsOERBQUN2QixpREFBSUE7NEJBQ0gwQixNQUFNLGVBQTBCLE9BQVhoQjs0QkFDckJhLFdBQVU7O2dDQUNYO2dDQUNZWCxTQUFTZ0IsSUFBSTs7Ozs7OztzQ0FFMUIsOERBQUNKOzs4Q0FDQyw4REFBQ1A7b0NBQUVNLFdBQVU7OENBQWlFOzs7Ozs7OENBRzlFLDhEQUFDRTtvQ0FBR0YsV0FBVTs7d0NBQ1hQLEtBQUthLEtBQUs7d0NBQUM7c0RBQUMsOERBQUNDOzRDQUFLUCxXQUFVO3NEQUFrQlAsS0FBS1ksSUFBSTs7Ozs7Ozs7Ozs7OzhDQUUxRCw4REFBQ1g7b0NBQUVNLFdBQVU7O3dDQUNWWCxTQUFTZ0IsSUFBSTt3Q0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4QkFNckIsOERBQUNKO29CQUFJRCxXQUFVOztzQ0FFYiw4REFBQ1E7NEJBQVFSLFdBQVU7OzhDQUVqQiw4REFBQ0M7b0NBQUlELFdBQVU7OENBQ2IsNEVBQUNDO3dDQUFJRCxXQUFVOzswREFFYiw4REFBQ0M7O2tFQUNDLDhEQUFDQTt3REFBSUQsV0FBVTtrRUFBdUU7Ozs7OztrRUFHdEYsOERBQUNDO3dEQUFJRCxXQUFVOzswRUFDYiw4REFBQ0M7O2tGQUNDLDhEQUFDQTt3RUFBSUQsV0FBVTtrRkFBcUQ7Ozs7OztrRkFHcEUsOERBQUNDO3dFQUFJRCxXQUFVO2tGQUNaUCxLQUFLYSxLQUFLOzs7Ozs7Ozs7Ozs7MEVBR2YsOERBQUNMOztrRkFDQyw4REFBQ0E7d0VBQUlELFdBQVU7a0ZBQXFEOzs7Ozs7a0ZBR3BFLDhEQUFDQzt3RUFBSUQsV0FBVTtrRkFDWlAsS0FBS1ksSUFBSTs7Ozs7Ozs7Ozs7OzBFQUdkLDhEQUFDSjs7a0ZBQ0MsOERBQUNBO3dFQUFJRCxXQUFVO2tGQUFxRDs7Ozs7O2tGQUdwRSw4REFBQ0M7d0VBQUlELFdBQVU7a0ZBQ1pYLFNBQVNnQixJQUFJOzs7Ozs7Ozs7Ozs7NERBR2pCWixLQUFLZ0IsS0FBSyxrQkFDVCw4REFBQ1I7O2tGQUNDLDhEQUFDQTt3RUFBSUQsV0FBVTtrRkFBcUQ7Ozs7OztrRkFHcEUsOERBQUNDO3dFQUFJRCxXQUFVO2tGQUNaUCxLQUFLZ0IsS0FBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBEQVFyQiw4REFBQ1I7Z0RBQUlELFdBQVU7MERBQ2IsNEVBQUNDO29EQUFJRCxXQUFVOzhEQUNiLDRFQUFDQzt3REFBSUQsV0FBVTs7MEVBQ2IsOERBQUNVO2dFQUNDVixXQUFVO2dFQUNWVyxNQUFLO2dFQUNMQyxRQUFPO2dFQUNQQyxTQUFRO2dFQUNSQyxPQUFNOzBFQUVOLDRFQUFDQztvRUFDQ0MsZUFBYztvRUFDZEMsZ0JBQWU7b0VBQ2ZDLGFBQWE7b0VBQ2JDLEdBQUU7Ozs7Ozs7Ozs7OzBFQUdOLDhEQUFDekI7Z0VBQUVNLFdBQVU7MEVBQWdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0NBVXRFTCxlQUFleUIsTUFBTSxHQUFHLG1CQUN2Qiw4REFBQ25CO29DQUFJRCxXQUFVOzhDQUNiLDRFQUFDakIsZ0ZBQW1CQTt3Q0FDbEJzQyxNQUFNMUI7d0NBQ04yQixjQUFjN0IsS0FBS0csS0FBSzs7Ozs7Ozs7Ozs7Z0NBTTdCQyxlQUFldUIsTUFBTSxHQUFHLG1CQUN2Qiw4REFBQ25CO29DQUFJRCxXQUFVOzhDQUNiLDRFQUFDaEIsb0VBQWFBO3dDQUFDdUMsV0FBVzFCOzs7Ozs7Ozs7Ozs7Ozs7OztzQ0FNaEMsOERBQUMyQjs0QkFBTXhCLFdBQVU7OzhDQUNmLDhEQUFDQztvQ0FBSUQsV0FBVTs7c0RBQ2IsOERBQUNDOzRDQUFJRCxXQUFVO3NEQUE2Qjs7Ozs7O3NEQUM1Qyw4REFBQ0M7NENBQUlELFdBQVU7O2dEQUF3QztnREFDbkRQLEtBQUtHLEtBQUssQ0FBQzZCLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs4Q0FJekIsOERBQUN4QjtvQ0FBSUQsV0FBVTs7c0RBQ2IsOERBQUN2QixpREFBSUE7NENBQ0gwQixNQUFNLHNCQUFvQ1YsT0FBZE4sWUFBVyxLQUFXLE9BQVJNLEtBQUtELEVBQUU7NENBQ2pEUSxXQUFVO3NEQUNYOzs7Ozs7c0RBR0QsOERBQUMwQjs0Q0FDQ3ZCLE1BQU1WLEtBQUtLLFlBQVk7NENBQ3ZCNkIsUUFBTzs0Q0FDUEMsS0FBSTs0Q0FDSjVCLFdBQVU7c0RBQ1g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU2Y7R0F2TXdCZjs7UUFDUFAsc0RBQVNBOzs7S0FERk8iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2d1bmJ1aWxkZXIvW2NhdGVnb3J5SWRdL1twYXJ0SWRdL3BhZ2UudHN4PzQyYzEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB7IHVzZVBhcmFtcyB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIjtcbmltcG9ydCB7IENBVEVHT1JJRVMsIFBBUlRTIH0gZnJvbSBcIkAvZGF0YS9ndW5idWlsZGVyUGFydHNcIjtcbmltcG9ydCB0eXBlIHsgQ2F0ZWdvcnlJZCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcbmltcG9ydCB7IGdldFByaWNpbmdIaXN0b3J5LCBnZXRSZXRhaWxlck9mZmVycyB9IGZyb20gXCIuL2RhdGFcIjtcbmltcG9ydCB7IFByaWNpbmdIaXN0b3J5R3JhcGggfSBmcm9tIFwiQC9jb21wb25lbnRzL1ByaWNpbmdIaXN0b3J5R3JhcGhcIjtcbmltcG9ydCB7IFJldGFpbGVyc0xpc3QgfSBmcm9tIFwiQC9jb21wb25lbnRzL1JldGFpbGVyc0xpc3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFydERldGFpbFBhZ2UoKSB7XG4gIGNvbnN0IHBhcmFtcyA9IHVzZVBhcmFtcygpO1xuICBjb25zdCBjYXRlZ29yeUlkID0gcGFyYW1zLmNhdGVnb3J5SWQgYXMgQ2F0ZWdvcnlJZDtcbiAgY29uc3QgcGFydElkID0gcGFyYW1zLnBhcnRJZCBhcyBzdHJpbmc7XG5cbiAgY29uc3QgY2F0ZWdvcnkgPSB1c2VNZW1vKFxuICAgICgpID0+IENBVEVHT1JJRVMuZmluZCgoYykgPT4gYy5pZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW2NhdGVnb3J5SWRdLFxuICApO1xuXG4gIGNvbnN0IHBhcnQgPSB1c2VNZW1vKFxuICAgICgpID0+IFBBUlRTLmZpbmQoKHApID0+IHAuaWQgPT09IHBhcnRJZCAmJiBwLmNhdGVnb3J5SWQgPT09IGNhdGVnb3J5SWQpLFxuICAgIFtwYXJ0SWQsIGNhdGVnb3J5SWRdLFxuICApO1xuXG4gIC8vIEdldCBwcmljaW5nIGhpc3RvcnkgYW5kIHJldGFpbGVyIG9mZmVyc1xuICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggQVBJIGNhbGxzIHdoZW4gZW5kcG9pbnRzIGFyZSByZWFkeVxuICBjb25zdCBwcmljaW5nSGlzdG9yeSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHBhcnQgPyBnZXRQcmljaW5nSGlzdG9yeShwYXJ0LmlkLCBwYXJ0LnByaWNlKSA6IFtdKSxcbiAgICBbcGFydF0sXG4gICk7XG5cbiAgY29uc3QgcmV0YWlsZXJPZmZlcnMgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBwYXJ0XG4gICAgICAgID8gZ2V0UmV0YWlsZXJPZmZlcnMocGFydC5pZCwgcGFydC5wcmljZSwgcGFydC5hZmZpbGlhdGVVcmwpXG4gICAgICAgIDogW10sXG4gICAgW3BhcnRdLFxuICApO1xuXG4gIGlmICghY2F0ZWdvcnkgfHwgIXBhcnQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gbWF4LXctNnhsIHB4LTQgcHktNiBsZzpweS0xMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtemluYy01MCBtYi00XCI+XG4gICAgICAgICAgICAgIFByb2R1Y3QgTm90IEZvdW5kXG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9ndW5idWlsZGVyXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDAgaG92ZXI6dGV4dC1hbWJlci0yMDAgdW5kZXJsaW5lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmV0dXJuIHRvIEd1bmJ1aWxkZXJcbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21haW4+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIG1heC13LTZ4bCBweC00IHB5LTYgbGc6cHktMTBcIj5cbiAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJtYi02XCI+XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlci8ke2NhdGVnb3J5SWR9YH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMzAwIG1iLTQgaW5saW5lLWJsb2NrXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICDihpAgQmFjayB0byB7Y2F0ZWdvcnkubmFtZX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4yZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgIFNoYWRvdyBTdGFuZGFyZFxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cIm10LTEgdGV4dC0yeGwgbWQ6dGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodFwiPlxuICAgICAgICAgICAgICB7cGFydC5icmFuZH0gPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDBcIj57cGFydC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0yIHRleHQtc20gdGV4dC16aW5jLTQwMCBtYXgtdy14bFwiPlxuICAgICAgICAgICAgICB7Y2F0ZWdvcnkubmFtZX0g4oCiIFByb2R1Y3QgRGV0YWlsc1xuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICB7LyogUHJvZHVjdCBEZXRhaWxzICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ2FwLTQgbGc6Z3JpZC1jb2xzLVsyZnIsMWZyXVwiPlxuICAgICAgICAgIHsvKiBNYWluIENvbnRlbnQgKi99XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgICB7LyogUHJvZHVjdCBJbmZvcm1hdGlvbiAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtNCBtZDpwLTZcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC02IG1kOmdyaWQtY29scy1bMWZyLDFmcl1cIj5cbiAgICAgICAgICAgICAgICB7LyogUHJvZHVjdCBJbmZvICovfVxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4xNmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTQwMCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIFByb2R1Y3QgSW5mb3JtYXRpb25cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBCcmFuZFxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQuYnJhbmR9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2NhdGVnb3J5Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB7cGFydC5ub3RlcyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTMwMCBsZWFkaW5nLXJlbGF4ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgey8qIFByb2R1Y3QgSW1hZ2UgKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBhc3BlY3Qtc3F1YXJlIG1heC13LW1kIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC81MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIHAtOFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMTYgaC0xNiBteC1hdXRvIHRleHQtemluYy02MDAgbWItMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezEuNX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00IDE2bDQuNTg2LTQuNTg2YTIgMiAwIDAxMi44MjggMEwxNiAxNm0tMi0ybDEuNTg2LTEuNTg2YTIgMiAwIDAxMi44MjggMEwyMCAxNG0tNi02aC4wMU02IDIwaDEyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyelwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUHJvZHVjdCBJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIFByaWNpbmcgSGlzdG9yeSAqL31cbiAgICAgICAgICAgIHtwcmljaW5nSGlzdG9yeS5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItemluYy04MDAgYmctemluYy05NTAvNjAgcC00IG1kOnAtNlwiPlxuICAgICAgICAgICAgICAgIDxQcmljaW5nSGlzdG9yeUdyYXBoXG4gICAgICAgICAgICAgICAgICBkYXRhPXtwcmljaW5nSGlzdG9yeX1cbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRQcmljZT17cGFydC5wcmljZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIHsvKiBSZXRhaWxlcnMgTGlzdCAqL31cbiAgICAgICAgICAgIHtyZXRhaWxlck9mZmVycy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItemluYy04MDAgYmctemluYy05NTAvNjAgcC00IG1kOnAtNlwiPlxuICAgICAgICAgICAgICAgIDxSZXRhaWxlcnNMaXN0IHJldGFpbGVycz17cmV0YWlsZXJPZmZlcnN9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgICB7LyogU2lkZWJhciAqL31cbiAgICAgICAgICA8YXNpZGUgY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzgwIHAtNCBtZDpwLTYgZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi00XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNDAwIG1iLTJcIj5QcmljZTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0zMDBcIj5cbiAgICAgICAgICAgICAgICAke3BhcnQucHJpY2UudG9GaXhlZCgyKX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC1hdXRvIHNwYWNlLXktM1wiPlxuICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlcj9zZWxlY3Q9JHtjYXRlZ29yeUlkfToke3BhcnQuaWR9YH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9jayB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWFtYmVyLTQwMC82MCBiZy1hbWJlci00MDAvMTAgcHgtNCBweS0zIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1hbWJlci0yMDAgaG92ZXI6YmctYW1iZXItNDAwLzE1IHRleHQtY2VudGVyIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEFkZCB0byBCdWlsZFxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgaHJlZj17cGFydC5hZmZpbGlhdGVVcmx9XG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJibG9jayB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzUwIHB4LTQgcHktMyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtemluYy0zMDAgaG92ZXI6YmctemluYy04MDAgaG92ZXI6Ym9yZGVyLXppbmMtNjAwIHRleHQtY2VudGVyIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFZpZXcgUmV0YWlsZXJcbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hc2lkZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21haW4+XG4gICk7XG59XG5cbiJdLCJuYW1lcyI6WyJ1c2VNZW1vIiwiTGluayIsInVzZVBhcmFtcyIsIkNBVEVHT1JJRVMiLCJQQVJUUyIsImdldFByaWNpbmdIaXN0b3J5IiwiZ2V0UmV0YWlsZXJPZmZlcnMiLCJQcmljaW5nSGlzdG9yeUdyYXBoIiwiUmV0YWlsZXJzTGlzdCIsIlBhcnREZXRhaWxQYWdlIiwicGFyYW1zIiwiY2F0ZWdvcnlJZCIsInBhcnRJZCIsImNhdGVnb3J5IiwiZmluZCIsImMiLCJpZCIsInBhcnQiLCJwIiwicHJpY2luZ0hpc3RvcnkiLCJwcmljZSIsInJldGFpbGVyT2ZmZXJzIiwiYWZmaWxpYXRlVXJsIiwibWFpbiIsImNsYXNzTmFtZSIsImRpdiIsImgxIiwiaHJlZiIsImhlYWRlciIsIm5hbWUiLCJicmFuZCIsInNwYW4iLCJzZWN0aW9uIiwibm90ZXMiLCJzdmciLCJmaWxsIiwic3Ryb2tlIiwidmlld0JveCIsInhtbG5zIiwicGF0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsInN0cm9rZVdpZHRoIiwiZCIsImxlbmd0aCIsImRhdGEiLCJjdXJyZW50UHJpY2UiLCJyZXRhaWxlcnMiLCJhc2lkZSIsInRvRml4ZWQiLCJhIiwidGFyZ2V0IiwicmVsIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./components/PricingHistoryGraph.tsx": +/*!********************************************!*\ + !*** ./components/PricingHistoryGraph.tsx ***! + \********************************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PricingHistoryGraph: function() { return /* binding */ PricingHistoryGraph; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ PricingHistoryGraph auto */ \nfunction PricingHistoryGraph(param) {\n let { data, currentPrice } = param;\n if (data.length === 0) return null;\n // Calculate chart dimensions\n const width = 100;\n const height = 60;\n const padding = 4;\n // Find min and max prices for scaling\n const prices = data.map((d)=>d.price);\n const minPrice = Math.min(...prices);\n const maxPrice = Math.max(...prices);\n const priceRange = maxPrice - minPrice || 1; // Avoid division by zero\n // Generate path points\n const points = data.map((point, index)=>{\n const x = padding + index / (data.length - 1) * (width - padding * 2);\n const normalizedPrice = (point.price - minPrice) / priceRange;\n const y = padding + (height - padding * 2) * (1 - normalizedPrice);\n return {\n x,\n y,\n price: point.price\n };\n });\n // Create SVG path\n const pathData = points.map((point, index)=>\"\".concat(index === 0 ? \"M\" : \"L\", \" \").concat(point.x, \" \").concat(point.y)).join(\" \");\n // Create area path (for gradient fill)\n const areaPath = \"\".concat(pathData, \" L \").concat(width - padding, \" \").concat(height - padding, \" L \").concat(padding, \" \").concat(height - padding, \" Z\");\n // Format date for display\n const formatDate = (dateStr)=>{\n const date = new Date(dateStr);\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\"\n });\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400\",\n children: \"Price History (30 Days)\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 53,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 text-xs text-zinc-500\",\n children: [\n \"Current: \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300 font-semibold\",\n children: [\n \"$\",\n currentPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 57,\n columnNumber: 22\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 56,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 52,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500\",\n children: [\n formatDate(data[0].date),\n \" - \",\n formatDate(data[data.length - 1].date)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 60,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 51,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-32 rounded-md border border-zinc-800 bg-zinc-900/30 p-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n viewBox: \"0 0 \".concat(width, \" \").concat(height),\n className: \"w-full h-full\",\n preserveAspectRatio: \"none\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"defs\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"linearGradient\", {\n id: \"priceGradient\",\n x1: \"0%\",\n y1: \"0%\",\n x2: \"0%\",\n y2: \"100%\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"stop\", {\n offset: \"0%\",\n stopColor: \"#fbbf24\",\n stopOpacity: \"0.3\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 73,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"stop\", {\n offset: \"100%\",\n stopColor: \"#fbbf24\",\n stopOpacity: \"0.05\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 74,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 72,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 71,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: areaPath,\n fill: \"url(#priceGradient)\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 78,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: pathData,\n fill: \"none\",\n stroke: \"#fbbf24\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 83,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: points[points.length - 1].x,\n cy: points[points.length - 1].y,\n r: \"2\",\n fill: \"#fbbf24\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 92,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 66,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 65,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-2 flex items-center justify-between text-xs text-zinc-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"Low: $\",\n minPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 102,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"High: $\",\n maxPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 103,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 101,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 50,\n columnNumber: 5\n }, this);\n}\n_c = PricingHistoryGraph;\nvar _c;\n$RefreshReg$(_c, \"PricingHistoryGraph\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvUHJpY2luZ0hpc3RvcnlHcmFwaC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBU08sU0FBU0Esb0JBQW9CLEtBR1Q7UUFIUyxFQUNsQ0MsSUFBSSxFQUNKQyxZQUFZLEVBQ2EsR0FIUztJQUlsQyxJQUFJRCxLQUFLRSxNQUFNLEtBQUssR0FBRyxPQUFPO0lBRTlCLDZCQUE2QjtJQUM3QixNQUFNQyxRQUFRO0lBQ2QsTUFBTUMsU0FBUztJQUNmLE1BQU1DLFVBQVU7SUFFaEIsc0NBQXNDO0lBQ3RDLE1BQU1DLFNBQVNOLEtBQUtPLEdBQUcsQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxLQUFLO0lBQ3RDLE1BQU1DLFdBQVdDLEtBQUtDLEdBQUcsSUFBSU47SUFDN0IsTUFBTU8sV0FBV0YsS0FBS0csR0FBRyxJQUFJUjtJQUM3QixNQUFNUyxhQUFhRixXQUFXSCxZQUFZLEdBQUcseUJBQXlCO0lBRXRFLHVCQUF1QjtJQUN2QixNQUFNTSxTQUFTaEIsS0FBS08sR0FBRyxDQUFDLENBQUNVLE9BQU9DO1FBQzlCLE1BQU1DLElBQUlkLFVBQVcsUUFBVUwsQ0FBQUEsS0FBS0UsTUFBTSxHQUFHLEtBQU9DLENBQUFBLFFBQVFFLFVBQVU7UUFDdEUsTUFBTWUsa0JBQWtCLENBQUNILE1BQU1SLEtBQUssR0FBR0MsUUFBTyxJQUFLSztRQUNuRCxNQUFNTSxJQUFJaEIsVUFBVSxDQUFDRCxTQUFTQyxVQUFVLEtBQU0sS0FBSWUsZUFBYztRQUNoRSxPQUFPO1lBQUVEO1lBQUdFO1lBQUdaLE9BQU9RLE1BQU1SLEtBQUs7UUFBQztJQUNwQztJQUVBLGtCQUFrQjtJQUNsQixNQUFNYSxXQUFXTixPQUNkVCxHQUFHLENBQUMsQ0FBQ1UsT0FBT0MsUUFBVSxHQUE4QkQsT0FBM0JDLFVBQVUsSUFBSSxNQUFNLEtBQUksS0FBY0QsT0FBWEEsTUFBTUUsQ0FBQyxFQUFDLEtBQVcsT0FBUkYsTUFBTUksQ0FBQyxHQUN0RUUsSUFBSSxDQUFDO0lBRVIsdUNBQXVDO0lBQ3ZDLE1BQU1DLFdBQVcsR0FBaUJyQixPQUFkbUIsVUFBUyxPQUF3QmxCLE9BQW5CRCxRQUFRRSxTQUFRLEtBQXlCQSxPQUF0QkQsU0FBU0MsU0FBUSxPQUFnQkQsT0FBWEMsU0FBUSxLQUFvQixPQUFqQkQsU0FBU0MsU0FBUTtJQUV2RywwQkFBMEI7SUFDMUIsTUFBTW9CLGFBQWEsQ0FBQ0M7UUFDbEIsTUFBTUMsT0FBTyxJQUFJQyxLQUFLRjtRQUN0QixPQUFPQyxLQUFLRSxrQkFBa0IsQ0FBQyxTQUFTO1lBQUVDLE9BQU87WUFBU0MsS0FBSztRQUFVO0lBQzNFO0lBRUEscUJBQ0UsOERBQUNDO1FBQUlDLFdBQVU7OzBCQUNiLDhEQUFDRDtnQkFBSUMsV0FBVTs7a0NBQ2IsOERBQUNEOzswQ0FDQyw4REFBQ0E7Z0NBQUlDLFdBQVU7MENBQWtFOzs7Ozs7MENBR2pGLDhEQUFDRDtnQ0FBSUMsV0FBVTs7b0NBQTZCO2tEQUNqQyw4REFBQ0M7d0NBQUtELFdBQVU7OzRDQUErQjs0Q0FBRWhDLGFBQWFrQyxPQUFPLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBR25GLDhEQUFDSDt3QkFBSUMsV0FBVTs7NEJBQ1pSLFdBQVd6QixJQUFJLENBQUMsRUFBRSxDQUFDMkIsSUFBSTs0QkFBRTs0QkFBSUYsV0FBV3pCLElBQUksQ0FBQ0EsS0FBS0UsTUFBTSxHQUFHLEVBQUUsQ0FBQ3lCLElBQUk7Ozs7Ozs7Ozs7Ozs7MEJBSXZFLDhEQUFDSztnQkFBSUMsV0FBVTswQkFDYiw0RUFBQ0c7b0JBQ0NDLFNBQVMsT0FBZ0JqQyxPQUFURCxPQUFNLEtBQVUsT0FBUEM7b0JBQ3pCNkIsV0FBVTtvQkFDVksscUJBQW9COztzQ0FFcEIsOERBQUNDO3NDQUNDLDRFQUFDQztnQ0FBZUMsSUFBRztnQ0FBZ0JDLElBQUc7Z0NBQUtDLElBQUc7Z0NBQUtDLElBQUc7Z0NBQUtDLElBQUc7O2tEQUM1RCw4REFBQ0M7d0NBQUtDLFFBQU87d0NBQUtDLFdBQVU7d0NBQVVDLGFBQVk7Ozs7OztrREFDbEQsOERBQUNIO3dDQUFLQyxRQUFPO3dDQUFPQyxXQUFVO3dDQUFVQyxhQUFZOzs7Ozs7Ozs7Ozs7Ozs7OztzQ0FJeEQsOERBQUNDOzRCQUNDMUMsR0FBR2dCOzRCQUNIMkIsTUFBSzs7Ozs7O3NDQUdQLDhEQUFDRDs0QkFDQzFDLEdBQUdjOzRCQUNINkIsTUFBSzs0QkFDTEMsUUFBTzs0QkFDUEMsYUFBWTs0QkFDWkMsZUFBYzs0QkFDZEMsZ0JBQWU7Ozs7OztzQ0FHakIsOERBQUNDOzRCQUNDQyxJQUFJekMsTUFBTSxDQUFDQSxPQUFPZCxNQUFNLEdBQUcsRUFBRSxDQUFDaUIsQ0FBQzs0QkFDL0J1QyxJQUFJMUMsTUFBTSxDQUFDQSxPQUFPZCxNQUFNLEdBQUcsRUFBRSxDQUFDbUIsQ0FBQzs0QkFDL0JzQyxHQUFFOzRCQUNGUixNQUFLOzs7Ozs7Ozs7Ozs7Ozs7OzswQkFLWCw4REFBQ25CO2dCQUFJQyxXQUFVOztrQ0FDYiw4REFBQ0M7OzRCQUFLOzRCQUFPeEIsU0FBU3lCLE9BQU8sQ0FBQzs7Ozs7OztrQ0FDOUIsOERBQUNEOzs0QkFBSzs0QkFBUXJCLFNBQVNzQixPQUFPLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJdkM7S0FqR2dCcEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vY29tcG9uZW50cy9QcmljaW5nSGlzdG9yeUdyYXBoLnRzeD82YzVhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgdHlwZSB7IFByaWNlSGlzdG9yeVBvaW50IH0gZnJvbSBcIkAvYXBwL2d1bmJ1aWxkZXIvW2NhdGVnb3J5SWRdL1twYXJ0SWRdL2RhdGFcIjtcblxuaW50ZXJmYWNlIFByaWNpbmdIaXN0b3J5R3JhcGhQcm9wcyB7XG4gIGRhdGE6IFByaWNlSGlzdG9yeVBvaW50W107XG4gIGN1cnJlbnRQcmljZTogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUHJpY2luZ0hpc3RvcnlHcmFwaCh7XG4gIGRhdGEsXG4gIGN1cnJlbnRQcmljZSxcbn06IFByaWNpbmdIaXN0b3J5R3JhcGhQcm9wcykge1xuICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIC8vIENhbGN1bGF0ZSBjaGFydCBkaW1lbnNpb25zXG4gIGNvbnN0IHdpZHRoID0gMTAwO1xuICBjb25zdCBoZWlnaHQgPSA2MDtcbiAgY29uc3QgcGFkZGluZyA9IDQ7XG5cbiAgLy8gRmluZCBtaW4gYW5kIG1heCBwcmljZXMgZm9yIHNjYWxpbmdcbiAgY29uc3QgcHJpY2VzID0gZGF0YS5tYXAoKGQpID0+IGQucHJpY2UpO1xuICBjb25zdCBtaW5QcmljZSA9IE1hdGgubWluKC4uLnByaWNlcyk7XG4gIGNvbnN0IG1heFByaWNlID0gTWF0aC5tYXgoLi4ucHJpY2VzKTtcbiAgY29uc3QgcHJpY2VSYW5nZSA9IG1heFByaWNlIC0gbWluUHJpY2UgfHwgMTsgLy8gQXZvaWQgZGl2aXNpb24gYnkgemVyb1xuXG4gIC8vIEdlbmVyYXRlIHBhdGggcG9pbnRzXG4gIGNvbnN0IHBvaW50cyA9IGRhdGEubWFwKChwb2ludCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCB4ID0gcGFkZGluZyArICgoaW5kZXggLyAoZGF0YS5sZW5ndGggLSAxKSkgKiAod2lkdGggLSBwYWRkaW5nICogMikpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQcmljZSA9IChwb2ludC5wcmljZSAtIG1pblByaWNlKSAvIHByaWNlUmFuZ2U7XG4gICAgY29uc3QgeSA9IHBhZGRpbmcgKyAoaGVpZ2h0IC0gcGFkZGluZyAqIDIpICogKDEgLSBub3JtYWxpemVkUHJpY2UpO1xuICAgIHJldHVybiB7IHgsIHksIHByaWNlOiBwb2ludC5wcmljZSB9O1xuICB9KTtcblxuICAvLyBDcmVhdGUgU1ZHIHBhdGhcbiAgY29uc3QgcGF0aERhdGEgPSBwb2ludHNcbiAgICAubWFwKChwb2ludCwgaW5kZXgpID0+IGAke2luZGV4ID09PSAwID8gXCJNXCIgOiBcIkxcIn0gJHtwb2ludC54fSAke3BvaW50Lnl9YClcbiAgICAuam9pbihcIiBcIik7XG5cbiAgLy8gQ3JlYXRlIGFyZWEgcGF0aCAoZm9yIGdyYWRpZW50IGZpbGwpXG4gIGNvbnN0IGFyZWFQYXRoID0gYCR7cGF0aERhdGF9IEwgJHt3aWR0aCAtIHBhZGRpbmd9ICR7aGVpZ2h0IC0gcGFkZGluZ30gTCAke3BhZGRpbmd9ICR7aGVpZ2h0IC0gcGFkZGluZ30gWmA7XG5cbiAgLy8gRm9ybWF0IGRhdGUgZm9yIGRpc3BsYXlcbiAgY29uc3QgZm9ybWF0RGF0ZSA9IChkYXRlU3RyOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cik7XG4gICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZW4tVVNcIiwgeyBtb250aDogXCJzaG9ydFwiLCBkYXk6IFwibnVtZXJpY1wiIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGxcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItNCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4xNmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTQwMFwiPlxuICAgICAgICAgICAgUHJpY2UgSGlzdG9yeSAoMzAgRGF5cylcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTEgdGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICBDdXJyZW50OiA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWFtYmVyLTMwMCBmb250LXNlbWlib2xkXCI+JHtjdXJyZW50UHJpY2UudG9GaXhlZCgyKX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgIHtmb3JtYXREYXRlKGRhdGFbMF0uZGF0ZSl9IC0ge2Zvcm1hdERhdGUoZGF0YVtkYXRhLmxlbmd0aCAtIDFdLmRhdGUpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbCBoLTMyIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTkwMC8zMCBwLTNcIj5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIHZpZXdCb3g9e2AwIDAgJHt3aWR0aH0gJHtoZWlnaHR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsXCJcbiAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInByaWNlR3JhZGllbnRcIiB4MT1cIjAlXCIgeTE9XCIwJVwiIHgyPVwiMCVcIiB5Mj1cIjEwMCVcIj5cbiAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMCVcIiBzdG9wQ29sb3I9XCIjZmJiZjI0XCIgc3RvcE9wYWNpdHk9XCIwLjNcIiAvPlxuICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxMDAlXCIgc3RvcENvbG9yPVwiI2ZiYmYyNFwiIHN0b3BPcGFjaXR5PVwiMC4wNVwiIC8+XG4gICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICB7LyogQXJlYSBmaWxsICovfVxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPXthcmVhUGF0aH1cbiAgICAgICAgICAgIGZpbGw9XCJ1cmwoI3ByaWNlR3JhZGllbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIHsvKiBMaW5lICovfVxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPXtwYXRoRGF0YX1cbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIHN0cm9rZT1cIiNmYmJmMjRcIlxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjVcIlxuICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgey8qIEN1cnJlbnQgcHJpY2UgaW5kaWNhdG9yICovfVxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGN4PXtwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLnh9XG4gICAgICAgICAgICBjeT17cG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXS55fVxuICAgICAgICAgICAgcj1cIjJcIlxuICAgICAgICAgICAgZmlsbD1cIiNmYmJmMjRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gdGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgIDxzcGFuPkxvdzogJHttaW5QcmljZS50b0ZpeGVkKDIpfTwvc3Bhbj5cbiAgICAgICAgPHNwYW4+SGlnaDogJHttYXhQcmljZS50b0ZpeGVkKDIpfTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG4iXSwibmFtZXMiOlsiUHJpY2luZ0hpc3RvcnlHcmFwaCIsImRhdGEiLCJjdXJyZW50UHJpY2UiLCJsZW5ndGgiLCJ3aWR0aCIsImhlaWdodCIsInBhZGRpbmciLCJwcmljZXMiLCJtYXAiLCJkIiwicHJpY2UiLCJtaW5QcmljZSIsIk1hdGgiLCJtaW4iLCJtYXhQcmljZSIsIm1heCIsInByaWNlUmFuZ2UiLCJwb2ludHMiLCJwb2ludCIsImluZGV4IiwieCIsIm5vcm1hbGl6ZWRQcmljZSIsInkiLCJwYXRoRGF0YSIsImpvaW4iLCJhcmVhUGF0aCIsImZvcm1hdERhdGUiLCJkYXRlU3RyIiwiZGF0ZSIsIkRhdGUiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJtb250aCIsImRheSIsImRpdiIsImNsYXNzTmFtZSIsInNwYW4iLCJ0b0ZpeGVkIiwic3ZnIiwidmlld0JveCIsInByZXNlcnZlQXNwZWN0UmF0aW8iLCJkZWZzIiwibGluZWFyR3JhZGllbnQiLCJpZCIsIngxIiwieTEiLCJ4MiIsInkyIiwic3RvcCIsIm9mZnNldCIsInN0b3BDb2xvciIsInN0b3BPcGFjaXR5IiwicGF0aCIsImZpbGwiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsImNpcmNsZSIsImN4IiwiY3kiLCJyIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/PricingHistoryGraph.tsx\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./components/RetailersList.tsx": +/*!**************************************!*\ + !*** ./components/RetailersList.tsx ***! + \**************************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RetailersList: function() { return /* binding */ RetailersList; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ RetailersList auto */ \nfunction RetailersList(param) {\n let { retailers } = param;\n if (retailers.length === 0) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-500 text-center py-4\",\n children: \"No retailer offers available.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, this);\n }\n const lowestPrice = Math.min(...retailers.map((r)=>r.price));\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400\",\n children: \"Available Retailers\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 23,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 text-xs text-zinc-500\",\n children: [\n retailers.length,\n \" retailer\",\n retailers.length !== 1 ? \"s\" : \"\",\n \" found\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 26,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 22,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2\",\n children: retailers.map((retailer)=>{\n const isLowestPrice = retailer.price === lowestPrice;\n const isOnSale = retailer.originalPrice !== undefined;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border rounded-md p-3 transition-colors \".concat(retailer.inStock ? \"border-zinc-700 bg-zinc-900/30 hover:border-zinc-600\" : \"border-zinc-800 bg-zinc-900/20 opacity-60\"),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 min-w-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 mb-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-semibold text-zinc-50\",\n children: retailer.retailerName\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 48,\n columnNumber: 21\n }, this),\n isLowestPrice && retailer.inStock && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[0.65rem] font-semibold uppercase tracking-wide px-1.5 py-0.5 rounded bg-amber-400/20 text-amber-300 border border-amber-400/30\",\n children: \"Best Price\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 52,\n columnNumber: 23\n }, this),\n !retailer.inStock && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[0.65rem] font-semibold uppercase tracking-wide px-1.5 py-0.5 rounded bg-red-500/20 text-red-400 border border-red-500/30\",\n children: \"Out of Stock\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 57,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 47,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg font-semibold \".concat(isLowestPrice && retailer.inStock ? \"text-amber-300\" : \"text-zinc-300\"),\n children: [\n \"$\",\n retailer.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 63,\n columnNumber: 21\n }, this),\n isOnSale && retailer.originalPrice && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-zinc-500 line-through\",\n children: [\n \"$\",\n retailer.originalPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 73,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 62,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 46,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: retailer.affiliateUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"rounded-md border px-3 py-1.5 text-xs font-medium transition-colors whitespace-nowrap \".concat(retailer.inStock ? \"border-amber-400/60 bg-amber-400/10 text-amber-200 hover:bg-amber-400/15\" : \"border-zinc-700 bg-zinc-800/50 text-zinc-500 cursor-not-allowed pointer-events-none\"),\n children: retailer.inStock ? \"Buy Now\" : \"Unavailable\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 80,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 79,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 45,\n columnNumber: 15\n }, this)\n }, retailer.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 37,\n columnNumber: 13\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 31,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx\",\n lineNumber: 21,\n columnNumber: 5\n }, this);\n}\n_c = RetailersList;\nvar _c;\n$RefreshReg$(_c, \"RetailersList\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvUmV0YWlsZXJzTGlzdC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBUU8sU0FBU0EsY0FBYyxLQUFpQztRQUFqQyxFQUFFQyxTQUFTLEVBQXNCLEdBQWpDO0lBQzVCLElBQUlBLFVBQVVDLE1BQU0sS0FBSyxHQUFHO1FBQzFCLHFCQUNFLDhEQUFDQztZQUFJQyxXQUFVO3NCQUF5Qzs7Ozs7O0lBSTVEO0lBRUEsTUFBTUMsY0FBY0MsS0FBS0MsR0FBRyxJQUFJTixVQUFVTyxHQUFHLENBQUMsQ0FBQ0MsSUFBTUEsRUFBRUMsS0FBSztJQUU1RCxxQkFDRSw4REFBQ1A7UUFBSUMsV0FBVTs7MEJBQ2IsOERBQUNEO2dCQUFJQyxXQUFVOztrQ0FDYiw4REFBQ0Q7d0JBQUlDLFdBQVU7a0NBQWtFOzs7Ozs7a0NBR2pGLDhEQUFDRDt3QkFBSUMsV0FBVTs7NEJBQ1pILFVBQVVDLE1BQU07NEJBQUM7NEJBQVVELFVBQVVDLE1BQU0sS0FBSyxJQUFJLE1BQU07NEJBQUc7Ozs7Ozs7Ozs7Ozs7MEJBSWxFLDhEQUFDQztnQkFBSUMsV0FBVTswQkFDWkgsVUFBVU8sR0FBRyxDQUFDLENBQUNHO29CQUNkLE1BQU1DLGdCQUFnQkQsU0FBU0QsS0FBSyxLQUFLTDtvQkFDekMsTUFBTVEsV0FBV0YsU0FBU0csYUFBYSxLQUFLQztvQkFFNUMscUJBQ0UsOERBQUNaO3dCQUVDQyxXQUFXLDJDQUlWLE9BSENPLFNBQVNLLE9BQU8sR0FDWix5REFDQTtrQ0FHTiw0RUFBQ2I7NEJBQUlDLFdBQVU7OzhDQUNiLDhEQUFDRDtvQ0FBSUMsV0FBVTs7c0RBQ2IsOERBQUNEOzRDQUFJQyxXQUFVOzs4REFDYiw4REFBQ2E7b0RBQUtiLFdBQVU7OERBQ2JPLFNBQVNPLFlBQVk7Ozs7OztnREFFdkJOLGlCQUFpQkQsU0FBU0ssT0FBTyxrQkFDaEMsOERBQUNDO29EQUFLYixXQUFVOzhEQUF1STs7Ozs7O2dEQUl4SixDQUFDTyxTQUFTSyxPQUFPLGtCQUNoQiw4REFBQ0M7b0RBQUtiLFdBQVU7OERBQWlJOzs7Ozs7Ozs7Ozs7c0RBS3JKLDhEQUFDRDs0Q0FBSUMsV0FBVTs7OERBQ2IsOERBQUNhO29EQUNDYixXQUFXLHlCQUlWLE9BSENRLGlCQUFpQkQsU0FBU0ssT0FBTyxHQUM3QixtQkFDQTs7d0RBRVA7d0RBQ0dMLFNBQVNELEtBQUssQ0FBQ1MsT0FBTyxDQUFDOzs7Ozs7O2dEQUUxQk4sWUFBWUYsU0FBU0csYUFBYSxrQkFDakMsOERBQUNHO29EQUFLYixXQUFVOzt3REFBcUM7d0RBQ2pETyxTQUFTRyxhQUFhLENBQUNLLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4Q0FLekMsOERBQUNoQjtvQ0FBSUMsV0FBVTs4Q0FDYiw0RUFBQ2dCO3dDQUNDQyxNQUFNVixTQUFTVyxZQUFZO3dDQUMzQkMsUUFBTzt3Q0FDUEMsS0FBSTt3Q0FDSnBCLFdBQVcseUZBSVYsT0FIQ08sU0FBU0ssT0FBTyxHQUNaLDZFQUNBO2tEQUdMTCxTQUFTSyxPQUFPLEdBQUcsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7dUJBcERqQ0wsU0FBU2MsRUFBRTs7Ozs7Z0JBMER0Qjs7Ozs7Ozs7Ozs7O0FBSVI7S0EzRmdCekIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vY29tcG9uZW50cy9SZXRhaWxlcnNMaXN0LnRzeD8yYmViIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgdHlwZSB7IFJldGFpbGVyT2ZmZXIgfSBmcm9tIFwiQC9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vW3BhcnRJZF0vZGF0YVwiO1xuXG5pbnRlcmZhY2UgUmV0YWlsZXJzTGlzdFByb3BzIHtcbiAgcmV0YWlsZXJzOiBSZXRhaWxlck9mZmVyW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXRhaWxlcnNMaXN0KHsgcmV0YWlsZXJzIH06IFJldGFpbGVyc0xpc3RQcm9wcykge1xuICBpZiAocmV0YWlsZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTUwMCB0ZXh0LWNlbnRlciBweS00XCI+XG4gICAgICAgIE5vIHJldGFpbGVyIG9mZmVycyBhdmFpbGFibGUuXG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbiAgY29uc3QgbG93ZXN0UHJpY2UgPSBNYXRoLm1pbiguLi5yZXRhaWxlcnMubWFwKChyKSA9PiByLnByaWNlKSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi00XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjE2ZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNDAwXCI+XG4gICAgICAgICAgQXZhaWxhYmxlIFJldGFpbGVyc1xuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0xIHRleHQteHMgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgIHtyZXRhaWxlcnMubGVuZ3RofSByZXRhaWxlcntyZXRhaWxlcnMubGVuZ3RoICE9PSAxID8gXCJzXCIgOiBcIlwifSBmb3VuZFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktMlwiPlxuICAgICAgICB7cmV0YWlsZXJzLm1hcCgocmV0YWlsZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBpc0xvd2VzdFByaWNlID0gcmV0YWlsZXIucHJpY2UgPT09IGxvd2VzdFByaWNlO1xuICAgICAgICAgIGNvbnN0IGlzT25TYWxlID0gcmV0YWlsZXIub3JpZ2luYWxQcmljZSAhPT0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAga2V5PXtyZXRhaWxlci5pZH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgYm9yZGVyIHJvdW5kZWQtbWQgcC0zIHRyYW5zaXRpb24tY29sb3JzICR7XG4gICAgICAgICAgICAgICAgcmV0YWlsZXIuaW5TdG9ja1xuICAgICAgICAgICAgICAgICAgPyBcImJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC8zMCBob3Zlcjpib3JkZXItemluYy02MDBcIlxuICAgICAgICAgICAgICAgICAgOiBcImJvcmRlci16aW5jLTgwMCBiZy16aW5jLTkwMC8yMCBvcGFjaXR5LTYwXCJcbiAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4LTEgbWluLXctMFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7cmV0YWlsZXIucmV0YWlsZXJOYW1lfVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIHtpc0xvd2VzdFByaWNlICYmIHJldGFpbGVyLmluU3RvY2sgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzAuNjVyZW1dIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUgcHgtMS41IHB5LTAuNSByb3VuZGVkIGJnLWFtYmVyLTQwMC8yMCB0ZXh0LWFtYmVyLTMwMCBib3JkZXIgYm9yZGVyLWFtYmVyLTQwMC8zMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQmVzdCBQcmljZVxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgeyFyZXRhaWxlci5pblN0b2NrICYmIChcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVswLjY1cmVtXSBmb250LXNlbWlib2xkIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIHB4LTEuNSBweS0wLjUgcm91bmRlZCBiZy1yZWQtNTAwLzIwIHRleHQtcmVkLTQwMCBib3JkZXIgYm9yZGVyLXJlZC01MDAvMzBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE91dCBvZiBTdG9ja1xuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YHRleHQtbGcgZm9udC1zZW1pYm9sZCAke1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb3dlc3RQcmljZSAmJiByZXRhaWxlci5pblN0b2NrXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJ0ZXh0LWFtYmVyLTMwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogXCJ0ZXh0LXppbmMtMzAwXCJcbiAgICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICR7cmV0YWlsZXIucHJpY2UudG9GaXhlZCgyKX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB7aXNPblNhbGUgJiYgcmV0YWlsZXIub3JpZ2luYWxQcmljZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIGxpbmUtdGhyb3VnaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgJHtyZXRhaWxlci5vcmlnaW5hbFByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgaHJlZj17cmV0YWlsZXIuYWZmaWxpYXRlVXJsfVxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcm91bmRlZC1tZCBib3JkZXIgcHgtMyBweS0xLjUgdGV4dC14cyBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWNvbG9ycyB3aGl0ZXNwYWNlLW5vd3JhcCAke1xuICAgICAgICAgICAgICAgICAgICAgIHJldGFpbGVyLmluU3RvY2tcbiAgICAgICAgICAgICAgICAgICAgICAgID8gXCJib3JkZXItYW1iZXItNDAwLzYwIGJnLWFtYmVyLTQwMC8xMCB0ZXh0LWFtYmVyLTIwMCBob3ZlcjpiZy1hbWJlci00MDAvMTVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcImJvcmRlci16aW5jLTcwMCBiZy16aW5jLTgwMC81MCB0ZXh0LXppbmMtNTAwIGN1cnNvci1ub3QtYWxsb3dlZCBwb2ludGVyLWV2ZW50cy1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgfWB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtyZXRhaWxlci5pblN0b2NrID8gXCJCdXkgTm93XCIgOiBcIlVuYXZhaWxhYmxlXCJ9XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuIl0sIm5hbWVzIjpbIlJldGFpbGVyc0xpc3QiLCJyZXRhaWxlcnMiLCJsZW5ndGgiLCJkaXYiLCJjbGFzc05hbWUiLCJsb3dlc3RQcmljZSIsIk1hdGgiLCJtaW4iLCJtYXAiLCJyIiwicHJpY2UiLCJyZXRhaWxlciIsImlzTG93ZXN0UHJpY2UiLCJpc09uU2FsZSIsIm9yaWdpbmFsUHJpY2UiLCJ1bmRlZmluZWQiLCJpblN0b2NrIiwic3BhbiIsInJldGFpbGVyTmFtZSIsInRvRml4ZWQiLCJhIiwiaHJlZiIsImFmZmlsaWF0ZVVybCIsInRhcmdldCIsInJlbCIsImlkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/RetailersList.tsx\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/gunbuilder/[categoryId]/[partId]/page.87786bf095dfd3fe.hot-update.js b/.next/static/webpack/app/gunbuilder/[categoryId]/[partId]/page.87786bf095dfd3fe.hot-update.js new file mode 100644 index 0000000..0a21c4e --- /dev/null +++ b/.next/static/webpack/app/gunbuilder/[categoryId]/[partId]/page.87786bf095dfd3fe.hot-update.js @@ -0,0 +1,32 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/gunbuilder/[categoryId]/[partId]/page",{ + +/***/ "(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx": +/*!*******************************************************!*\ + !*** ./app/gunbuilder/[categoryId]/[partId]/page.tsx ***! + \*******************************************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ PartDetailPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./data */ \"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/data.ts\");\n/* harmony import */ var _components_PricingHistoryGraph__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/PricingHistoryGraph */ \"(app-pages-browser)/./components/PricingHistoryGraph.tsx\");\n/* harmony import */ var _components_RetailersList__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @/components/RetailersList */ \"(app-pages-browser)/./components/RetailersList.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\n\nfunction PartDetailPage() {\n _s();\n const params = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams)();\n const categoryId = params.categoryId;\n const partId = params.partId;\n const category = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.find((c)=>c.id === categoryId), [\n categoryId\n ]);\n const part = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId), [\n partId,\n categoryId\n ]);\n // Get pricing history and retailer offers\n // TODO: Replace with API calls when endpoints are ready\n const pricingHistory = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>part ? (0,_data__WEBPACK_IMPORTED_MODULE_5__.getPricingHistory)(part.id, part.price) : [], [\n part\n ]);\n const retailerOffers = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>part ? (0,_data__WEBPACK_IMPORTED_MODULE_5__.getRetailerOffers)(part.id, part.price, part.affiliateUrl) : [], [\n part\n ]);\n if (!category || !part) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"Product Not Found\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 47,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-amber-300 hover:text-amber-200 underline\",\n children: \"Return to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 50,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 46,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 45,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 44,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/\".concat(categoryId),\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: [\n \"← Back to \",\n category.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 67,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 74,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 78,\n columnNumber: 28\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 77,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: [\n category.name,\n \" • Product Details\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 80,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 73,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 66,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 lg:grid-cols-[2fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-6 md:grid-cols-[1fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-2\",\n children: \"Product Information\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 95,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Brand\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 100,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.brand\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 103,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 99,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Model\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 108,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 111,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 107,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Category\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 116,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 119,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 115,\n columnNumber: 21\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 125,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-300 leading-relaxed\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 128,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 124,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 98,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 94,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full aspect-square max-w-md rounded-md border border-zinc-700 bg-zinc-900/50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center p-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-16 h-16 mx-auto text-zinc-600 mb-2\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5,\n d: \"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 147,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 140,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide\",\n children: \"Product Image\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 154,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 139,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 138,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 137,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 92,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 91,\n columnNumber: 13\n }, this),\n retailerOffers.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_RetailersList__WEBPACK_IMPORTED_MODULE_7__.RetailersList, {\n retailers: retailerOffers\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 166,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 165,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 89,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/80 p-4 md:p-6 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400 mb-2\",\n children: \"Price\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 174,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-semibold text-amber-300\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 175,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 173,\n columnNumber: 13\n }, this),\n pricingHistory.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_PricingHistoryGraph__WEBPACK_IMPORTED_MODULE_6__.PricingHistoryGraph, {\n data: pricingHistory,\n currentPrice: part.price\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 183,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 182,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-auto space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder?select=\".concat(categoryId, \":\").concat(part.id),\n className: \"block w-full rounded-md border border-amber-400/60 bg-amber-400/10 px-4 py-3 text-sm font-medium text-amber-200 hover:bg-amber-400/15 text-center transition-colors\",\n children: \"Add to Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 191,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: part.affiliateUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"block w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-4 py-3 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 text-center transition-colors\",\n children: \"View Retailer\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 197,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 190,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 172,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 87,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 64,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 63,\n columnNumber: 5\n }, this);\n}\n_s(PartDetailPage, \"ZpwVUtr8mmMYWPNCCmGSoaSl2YI=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams\n ];\n});\n_c = PartDetailPage;\nvar _c;\n$RefreshReg$(_c, \"PartDetailPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL1tjYXRlZ29yeUlkXS9bcGFydElkXS9wYWdlLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFFZ0M7QUFDSDtBQUNlO0FBQ2U7QUFFRztBQUNTO0FBQ1o7QUFFNUMsU0FBU1M7O0lBQ3RCLE1BQU1DLFNBQVNSLDBEQUFTQTtJQUN4QixNQUFNUyxhQUFhRCxPQUFPQyxVQUFVO0lBQ3BDLE1BQU1DLFNBQVNGLE9BQU9FLE1BQU07SUFFNUIsTUFBTUMsV0FBV2IsOENBQU9BLENBQ3RCLElBQU1HLDZEQUFVQSxDQUFDVyxJQUFJLENBQUMsQ0FBQ0MsSUFBTUEsRUFBRUMsRUFBRSxLQUFLTCxhQUN0QztRQUFDQTtLQUFXO0lBR2QsTUFBTU0sT0FBT2pCLDhDQUFPQSxDQUNsQixJQUFNSSx3REFBS0EsQ0FBQ1UsSUFBSSxDQUFDLENBQUNJLElBQU1BLEVBQUVGLEVBQUUsS0FBS0osVUFBVU0sRUFBRVAsVUFBVSxLQUFLQSxhQUM1RDtRQUFDQztRQUFRRDtLQUFXO0lBR3RCLDBDQUEwQztJQUMxQyx3REFBd0Q7SUFDeEQsTUFBTVEsaUJBQWlCbkIsOENBQU9BLENBQzVCLElBQU9pQixPQUFPWix3REFBaUJBLENBQUNZLEtBQUtELEVBQUUsRUFBRUMsS0FBS0csS0FBSyxJQUFJLEVBQUUsRUFDekQ7UUFBQ0g7S0FBSztJQUdSLE1BQU1JLGlCQUFpQnJCLDhDQUFPQSxDQUM1QixJQUNFaUIsT0FDSVgsd0RBQWlCQSxDQUFDVyxLQUFLRCxFQUFFLEVBQUVDLEtBQUtHLEtBQUssRUFBRUgsS0FBS0ssWUFBWSxJQUN4RCxFQUFFLEVBQ1I7UUFBQ0w7S0FBSztJQUdSLElBQUksQ0FBQ0osWUFBWSxDQUFDSSxNQUFNO1FBQ3RCLHFCQUNFLDhEQUFDTTtZQUFLQyxXQUFVO3NCQUNkLDRFQUFDQztnQkFBSUQsV0FBVTswQkFDYiw0RUFBQ0M7b0JBQUlELFdBQVU7O3NDQUNiLDhEQUFDRTs0QkFBR0YsV0FBVTtzQ0FBMkM7Ozs7OztzQ0FHekQsOERBQUN2QixpREFBSUE7NEJBQ0gwQixNQUFLOzRCQUNMSCxXQUFVO3NDQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBT1g7SUFFQSxxQkFDRSw4REFBQ0Q7UUFBS0MsV0FBVTtrQkFDZCw0RUFBQ0M7WUFBSUQsV0FBVTs7OEJBRWIsOERBQUNJO29CQUFPSixXQUFVOztzQ0FDaEIsOERBQUN2QixpREFBSUE7NEJBQ0gwQixNQUFNLGVBQTBCLE9BQVhoQjs0QkFDckJhLFdBQVU7O2dDQUNYO2dDQUNZWCxTQUFTZ0IsSUFBSTs7Ozs7OztzQ0FFMUIsOERBQUNKOzs4Q0FDQyw4REFBQ1A7b0NBQUVNLFdBQVU7OENBQWlFOzs7Ozs7OENBRzlFLDhEQUFDRTtvQ0FBR0YsV0FBVTs7d0NBQ1hQLEtBQUthLEtBQUs7d0NBQUM7c0RBQUMsOERBQUNDOzRDQUFLUCxXQUFVO3NEQUFrQlAsS0FBS1ksSUFBSTs7Ozs7Ozs7Ozs7OzhDQUUxRCw4REFBQ1g7b0NBQUVNLFdBQVU7O3dDQUNWWCxTQUFTZ0IsSUFBSTt3Q0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4QkFNckIsOERBQUNKO29CQUFJRCxXQUFVOztzQ0FFYiw4REFBQ1E7NEJBQVFSLFdBQVU7OzhDQUVqQiw4REFBQ0M7b0NBQUlELFdBQVU7OENBQ2IsNEVBQUNDO3dDQUFJRCxXQUFVOzswREFFYiw4REFBQ0M7O2tFQUNDLDhEQUFDQTt3REFBSUQsV0FBVTtrRUFBdUU7Ozs7OztrRUFHdEYsOERBQUNDO3dEQUFJRCxXQUFVOzswRUFDYiw4REFBQ0M7O2tGQUNDLDhEQUFDQTt3RUFBSUQsV0FBVTtrRkFBcUQ7Ozs7OztrRkFHcEUsOERBQUNDO3dFQUFJRCxXQUFVO2tGQUNaUCxLQUFLYSxLQUFLOzs7Ozs7Ozs7Ozs7MEVBR2YsOERBQUNMOztrRkFDQyw4REFBQ0E7d0VBQUlELFdBQVU7a0ZBQXFEOzs7Ozs7a0ZBR3BFLDhEQUFDQzt3RUFBSUQsV0FBVTtrRkFDWlAsS0FBS1ksSUFBSTs7Ozs7Ozs7Ozs7OzBFQUdkLDhEQUFDSjs7a0ZBQ0MsOERBQUNBO3dFQUFJRCxXQUFVO2tGQUFxRDs7Ozs7O2tGQUdwRSw4REFBQ0M7d0VBQUlELFdBQVU7a0ZBQ1pYLFNBQVNnQixJQUFJOzs7Ozs7Ozs7Ozs7NERBR2pCWixLQUFLZ0IsS0FBSyxrQkFDVCw4REFBQ1I7O2tGQUNDLDhEQUFDQTt3RUFBSUQsV0FBVTtrRkFBcUQ7Ozs7OztrRkFHcEUsOERBQUNDO3dFQUFJRCxXQUFVO2tGQUNaUCxLQUFLZ0IsS0FBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBEQVFyQiw4REFBQ1I7Z0RBQUlELFdBQVU7MERBQ2IsNEVBQUNDO29EQUFJRCxXQUFVOzhEQUNiLDRFQUFDQzt3REFBSUQsV0FBVTs7MEVBQ2IsOERBQUNVO2dFQUNDVixXQUFVO2dFQUNWVyxNQUFLO2dFQUNMQyxRQUFPO2dFQUNQQyxTQUFRO2dFQUNSQyxPQUFNOzBFQUVOLDRFQUFDQztvRUFDQ0MsZUFBYztvRUFDZEMsZ0JBQWU7b0VBQ2ZDLGFBQWE7b0VBQ2JDLEdBQUU7Ozs7Ozs7Ozs7OzBFQUdOLDhEQUFDekI7Z0VBQUVNLFdBQVU7MEVBQWdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0NBVXRFSCxlQUFldUIsTUFBTSxHQUFHLG1CQUN2Qiw4REFBQ25CO29DQUFJRCxXQUFVOzhDQUNiLDRFQUFDaEIsb0VBQWFBO3dDQUFDcUMsV0FBV3hCOzs7Ozs7Ozs7Ozs7Ozs7OztzQ0FNaEMsOERBQUN5Qjs0QkFBTXRCLFdBQVU7OzhDQUNmLDhEQUFDQztvQ0FBSUQsV0FBVTs7c0RBQ2IsOERBQUNDOzRDQUFJRCxXQUFVO3NEQUE2Qjs7Ozs7O3NEQUM1Qyw4REFBQ0M7NENBQUlELFdBQVU7O2dEQUF3QztnREFDbkRQLEtBQUtHLEtBQUssQ0FBQzJCLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7OztnQ0FLeEI1QixlQUFleUIsTUFBTSxHQUFHLG1CQUN2Qiw4REFBQ25CO29DQUFJRCxXQUFVOzhDQUNiLDRFQUFDakIsZ0ZBQW1CQTt3Q0FDbEJ5QyxNQUFNN0I7d0NBQ044QixjQUFjaEMsS0FBS0csS0FBSzs7Ozs7Ozs7Ozs7OENBSzlCLDhEQUFDSztvQ0FBSUQsV0FBVTs7c0RBQ2IsOERBQUN2QixpREFBSUE7NENBQ0gwQixNQUFNLHNCQUFvQ1YsT0FBZE4sWUFBVyxLQUFXLE9BQVJNLEtBQUtELEVBQUU7NENBQ2pEUSxXQUFVO3NEQUNYOzs7Ozs7c0RBR0QsOERBQUMwQjs0Q0FDQ3ZCLE1BQU1WLEtBQUtLLFlBQVk7NENBQ3ZCNkIsUUFBTzs0Q0FDUEMsS0FBSTs0Q0FDSjVCLFdBQVU7c0RBQ1g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU2Y7R0F2TXdCZjs7UUFDUFAsc0RBQVNBOzs7S0FERk8iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2d1bmJ1aWxkZXIvW2NhdGVnb3J5SWRdL1twYXJ0SWRdL3BhZ2UudHN4PzQyYzEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB7IHVzZVBhcmFtcyB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIjtcbmltcG9ydCB7IENBVEVHT1JJRVMsIFBBUlRTIH0gZnJvbSBcIkAvZGF0YS9ndW5idWlsZGVyUGFydHNcIjtcbmltcG9ydCB0eXBlIHsgQ2F0ZWdvcnlJZCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcbmltcG9ydCB7IGdldFByaWNpbmdIaXN0b3J5LCBnZXRSZXRhaWxlck9mZmVycyB9IGZyb20gXCIuL2RhdGFcIjtcbmltcG9ydCB7IFByaWNpbmdIaXN0b3J5R3JhcGggfSBmcm9tIFwiQC9jb21wb25lbnRzL1ByaWNpbmdIaXN0b3J5R3JhcGhcIjtcbmltcG9ydCB7IFJldGFpbGVyc0xpc3QgfSBmcm9tIFwiQC9jb21wb25lbnRzL1JldGFpbGVyc0xpc3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFydERldGFpbFBhZ2UoKSB7XG4gIGNvbnN0IHBhcmFtcyA9IHVzZVBhcmFtcygpO1xuICBjb25zdCBjYXRlZ29yeUlkID0gcGFyYW1zLmNhdGVnb3J5SWQgYXMgQ2F0ZWdvcnlJZDtcbiAgY29uc3QgcGFydElkID0gcGFyYW1zLnBhcnRJZCBhcyBzdHJpbmc7XG5cbiAgY29uc3QgY2F0ZWdvcnkgPSB1c2VNZW1vKFxuICAgICgpID0+IENBVEVHT1JJRVMuZmluZCgoYykgPT4gYy5pZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW2NhdGVnb3J5SWRdLFxuICApO1xuXG4gIGNvbnN0IHBhcnQgPSB1c2VNZW1vKFxuICAgICgpID0+IFBBUlRTLmZpbmQoKHApID0+IHAuaWQgPT09IHBhcnRJZCAmJiBwLmNhdGVnb3J5SWQgPT09IGNhdGVnb3J5SWQpLFxuICAgIFtwYXJ0SWQsIGNhdGVnb3J5SWRdLFxuICApO1xuXG4gIC8vIEdldCBwcmljaW5nIGhpc3RvcnkgYW5kIHJldGFpbGVyIG9mZmVyc1xuICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggQVBJIGNhbGxzIHdoZW4gZW5kcG9pbnRzIGFyZSByZWFkeVxuICBjb25zdCBwcmljaW5nSGlzdG9yeSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHBhcnQgPyBnZXRQcmljaW5nSGlzdG9yeShwYXJ0LmlkLCBwYXJ0LnByaWNlKSA6IFtdKSxcbiAgICBbcGFydF0sXG4gICk7XG5cbiAgY29uc3QgcmV0YWlsZXJPZmZlcnMgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBwYXJ0XG4gICAgICAgID8gZ2V0UmV0YWlsZXJPZmZlcnMocGFydC5pZCwgcGFydC5wcmljZSwgcGFydC5hZmZpbGlhdGVVcmwpXG4gICAgICAgIDogW10sXG4gICAgW3BhcnRdLFxuICApO1xuXG4gIGlmICghY2F0ZWdvcnkgfHwgIXBhcnQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gbWF4LXctNnhsIHB4LTQgcHktNiBsZzpweS0xMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtemluYy01MCBtYi00XCI+XG4gICAgICAgICAgICAgIFByb2R1Y3QgTm90IEZvdW5kXG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9ndW5idWlsZGVyXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDAgaG92ZXI6dGV4dC1hbWJlci0yMDAgdW5kZXJsaW5lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmV0dXJuIHRvIEd1bmJ1aWxkZXJcbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21haW4+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIG1heC13LTZ4bCBweC00IHB5LTYgbGc6cHktMTBcIj5cbiAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJtYi02XCI+XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlci8ke2NhdGVnb3J5SWR9YH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMzAwIG1iLTQgaW5saW5lLWJsb2NrXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICDihpAgQmFjayB0byB7Y2F0ZWdvcnkubmFtZX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4yZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgIFNoYWRvdyBTdGFuZGFyZFxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cIm10LTEgdGV4dC0yeGwgbWQ6dGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodFwiPlxuICAgICAgICAgICAgICB7cGFydC5icmFuZH0gPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDBcIj57cGFydC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0yIHRleHQtc20gdGV4dC16aW5jLTQwMCBtYXgtdy14bFwiPlxuICAgICAgICAgICAgICB7Y2F0ZWdvcnkubmFtZX0g4oCiIFByb2R1Y3QgRGV0YWlsc1xuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICB7LyogUHJvZHVjdCBEZXRhaWxzICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ2FwLTQgbGc6Z3JpZC1jb2xzLVsyZnIsMWZyXVwiPlxuICAgICAgICAgIHsvKiBNYWluIENvbnRlbnQgKi99XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgICB7LyogUHJvZHVjdCBJbmZvcm1hdGlvbiAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtNCBtZDpwLTZcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC02IG1kOmdyaWQtY29scy1bMWZyLDFmcl1cIj5cbiAgICAgICAgICAgICAgICB7LyogUHJvZHVjdCBJbmZvICovfVxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4xNmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTQwMCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIFByb2R1Y3QgSW5mb3JtYXRpb25cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBCcmFuZFxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQuYnJhbmR9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2NhdGVnb3J5Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB7cGFydC5ub3RlcyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTMwMCBsZWFkaW5nLXJlbGF4ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgey8qIFByb2R1Y3QgSW1hZ2UgKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBhc3BlY3Qtc3F1YXJlIG1heC13LW1kIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC81MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIHAtOFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMTYgaC0xNiBteC1hdXRvIHRleHQtemluYy02MDAgbWItMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezEuNX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00IDE2bDQuNTg2LTQuNTg2YTIgMiAwIDAxMi44MjggMEwxNiAxNm0tMi0ybDEuNTg2LTEuNTg2YTIgMiAwIDAxMi44MjggMEwyMCAxNG0tNi02aC4wMU02IDIwaDEyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyelwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUHJvZHVjdCBJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIFJldGFpbGVycyBMaXN0ICovfVxuICAgICAgICAgICAge3JldGFpbGVyT2ZmZXJzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTk1MC82MCBwLTQgbWQ6cC02XCI+XG4gICAgICAgICAgICAgICAgPFJldGFpbGVyc0xpc3QgcmV0YWlsZXJzPXtyZXRhaWxlck9mZmVyc30gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgIHsvKiBTaWRlYmFyICovfVxuICAgICAgICAgIDxhc2lkZSBjbGFzc05hbWU9XCJyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItemluYy04MDAgYmctemluYy05NTAvODAgcC00IG1kOnAtNiBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy00MDAgbWItMlwiPlByaWNlPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMFwiPlxuICAgICAgICAgICAgICAgICR7cGFydC5wcmljZS50b0ZpeGVkKDIpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogUHJpY2luZyBIaXN0b3J5ICovfVxuICAgICAgICAgICAge3ByaWNpbmdIaXN0b3J5Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTZcIj5cbiAgICAgICAgICAgICAgICA8UHJpY2luZ0hpc3RvcnlHcmFwaFxuICAgICAgICAgICAgICAgICAgZGF0YT17cHJpY2luZ0hpc3Rvcnl9XG4gICAgICAgICAgICAgICAgICBjdXJyZW50UHJpY2U9e3BhcnQucHJpY2V9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LWF1dG8gc3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyP3NlbGVjdD0ke2NhdGVnb3J5SWR9OiR7cGFydC5pZH1gfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYW1iZXItNDAwLzYwIGJnLWFtYmVyLTQwMC8xMCBweC00IHB5LTMgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWFtYmVyLTIwMCBob3ZlcjpiZy1hbWJlci00MDAvMTUgdGV4dC1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQWRkIHRvIEJ1aWxkXG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBocmVmPXtwYXJ0LmFmZmlsaWF0ZVVybH1cbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05MDAvNTAgcHgtNCBweS0zIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy02MDAgdGV4dC1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBSZXRhaWxlclxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FzaWRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWFpbj5cbiAgKTtcbn1cblxuIl0sIm5hbWVzIjpbInVzZU1lbW8iLCJMaW5rIiwidXNlUGFyYW1zIiwiQ0FURUdPUklFUyIsIlBBUlRTIiwiZ2V0UHJpY2luZ0hpc3RvcnkiLCJnZXRSZXRhaWxlck9mZmVycyIsIlByaWNpbmdIaXN0b3J5R3JhcGgiLCJSZXRhaWxlcnNMaXN0IiwiUGFydERldGFpbFBhZ2UiLCJwYXJhbXMiLCJjYXRlZ29yeUlkIiwicGFydElkIiwiY2F0ZWdvcnkiLCJmaW5kIiwiYyIsImlkIiwicGFydCIsInAiLCJwcmljaW5nSGlzdG9yeSIsInByaWNlIiwicmV0YWlsZXJPZmZlcnMiLCJhZmZpbGlhdGVVcmwiLCJtYWluIiwiY2xhc3NOYW1lIiwiZGl2IiwiaDEiLCJocmVmIiwiaGVhZGVyIiwibmFtZSIsImJyYW5kIiwic3BhbiIsInNlY3Rpb24iLCJub3RlcyIsInN2ZyIsImZpbGwiLCJzdHJva2UiLCJ2aWV3Qm94IiwieG1sbnMiLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwibGVuZ3RoIiwicmV0YWlsZXJzIiwiYXNpZGUiLCJ0b0ZpeGVkIiwiZGF0YSIsImN1cnJlbnRQcmljZSIsImEiLCJ0YXJnZXQiLCJyZWwiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./components/PricingHistoryGraph.tsx": +/*!********************************************!*\ + !*** ./components/PricingHistoryGraph.tsx ***! + \********************************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PricingHistoryGraph: function() { return /* binding */ PricingHistoryGraph; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* __next_internal_client_entry_do_not_use__ PricingHistoryGraph auto */ \nfunction PricingHistoryGraph(param) {\n let { data, currentPrice } = param;\n if (data.length === 0) return null;\n // Calculate chart dimensions\n const width = 100;\n const height = 60;\n const padding = 4;\n // Find min and max prices for scaling\n const prices = data.map((d)=>d.price);\n const minPrice = Math.min(...prices);\n const maxPrice = Math.max(...prices);\n const priceRange = maxPrice - minPrice || 1; // Avoid division by zero\n // Generate path points\n const points = data.map((point, index)=>{\n const x = padding + index / (data.length - 1) * (width - padding * 2);\n const normalizedPrice = (point.price - minPrice) / priceRange;\n const y = padding + (height - padding * 2) * (1 - normalizedPrice);\n return {\n x,\n y,\n price: point.price\n };\n });\n // Create SVG path\n const pathData = points.map((point, index)=>\"\".concat(index === 0 ? \"M\" : \"L\", \" \").concat(point.x, \" \").concat(point.y)).join(\" \");\n // Create area path (for gradient fill)\n const areaPath = \"\".concat(pathData, \" L \").concat(width - padding, \" \").concat(height - padding, \" L \").concat(padding, \" \").concat(height - padding, \" Z\");\n // Format date for display\n const formatDate = (dateStr)=>{\n const date = new Date(dateStr);\n return date.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\"\n });\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400\",\n children: \"Price History (30 Days)\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 53,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-1 text-xs text-zinc-500\",\n children: [\n \"Current: \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300 font-semibold\",\n children: [\n \"$\",\n currentPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 57,\n columnNumber: 22\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 56,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 52,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500\",\n children: [\n formatDate(data[0].date),\n \" - \",\n formatDate(data[data.length - 1].date)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 60,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 51,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-full h-32 rounded-md border border-zinc-800 bg-zinc-900/30 p-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n viewBox: \"0 0 \".concat(width, \" \").concat(height),\n className: \"w-full h-full\",\n preserveAspectRatio: \"none\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"defs\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"linearGradient\", {\n id: \"priceGradient\",\n x1: \"0%\",\n y1: \"0%\",\n x2: \"0%\",\n y2: \"100%\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"stop\", {\n offset: \"0%\",\n stopColor: \"#fbbf24\",\n stopOpacity: \"0.3\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 73,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"stop\", {\n offset: \"100%\",\n stopColor: \"#fbbf24\",\n stopOpacity: \"0.05\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 74,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 72,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 71,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: areaPath,\n fill: \"url(#priceGradient)\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 78,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: pathData,\n fill: \"none\",\n stroke: \"#fbbf24\",\n strokeWidth: \"1.5\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 83,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: points[points.length - 1].x,\n cy: points[points.length - 1].y,\n r: \"2\",\n fill: \"#fbbf24\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 92,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 66,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 65,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-2 flex items-center justify-between text-xs text-zinc-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"Low: $\",\n minPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 102,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: [\n \"High: $\",\n maxPrice.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 103,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 101,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx\",\n lineNumber: 50,\n columnNumber: 5\n }, this);\n}\n_c = PricingHistoryGraph;\nvar _c;\n$RefreshReg$(_c, \"PricingHistoryGraph\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvUHJpY2luZ0hpc3RvcnlHcmFwaC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBU08sU0FBU0Esb0JBQW9CLEtBR1Q7UUFIUyxFQUNsQ0MsSUFBSSxFQUNKQyxZQUFZLEVBQ2EsR0FIUztJQUlsQyxJQUFJRCxLQUFLRSxNQUFNLEtBQUssR0FBRyxPQUFPO0lBRTlCLDZCQUE2QjtJQUM3QixNQUFNQyxRQUFRO0lBQ2QsTUFBTUMsU0FBUztJQUNmLE1BQU1DLFVBQVU7SUFFaEIsc0NBQXNDO0lBQ3RDLE1BQU1DLFNBQVNOLEtBQUtPLEdBQUcsQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxLQUFLO0lBQ3RDLE1BQU1DLFdBQVdDLEtBQUtDLEdBQUcsSUFBSU47SUFDN0IsTUFBTU8sV0FBV0YsS0FBS0csR0FBRyxJQUFJUjtJQUM3QixNQUFNUyxhQUFhRixXQUFXSCxZQUFZLEdBQUcseUJBQXlCO0lBRXRFLHVCQUF1QjtJQUN2QixNQUFNTSxTQUFTaEIsS0FBS08sR0FBRyxDQUFDLENBQUNVLE9BQU9DO1FBQzlCLE1BQU1DLElBQUlkLFVBQVcsUUFBVUwsQ0FBQUEsS0FBS0UsTUFBTSxHQUFHLEtBQU9DLENBQUFBLFFBQVFFLFVBQVU7UUFDdEUsTUFBTWUsa0JBQWtCLENBQUNILE1BQU1SLEtBQUssR0FBR0MsUUFBTyxJQUFLSztRQUNuRCxNQUFNTSxJQUFJaEIsVUFBVSxDQUFDRCxTQUFTQyxVQUFVLEtBQU0sS0FBSWUsZUFBYztRQUNoRSxPQUFPO1lBQUVEO1lBQUdFO1lBQUdaLE9BQU9RLE1BQU1SLEtBQUs7UUFBQztJQUNwQztJQUVBLGtCQUFrQjtJQUNsQixNQUFNYSxXQUFXTixPQUNkVCxHQUFHLENBQUMsQ0FBQ1UsT0FBT0MsUUFBVSxHQUE4QkQsT0FBM0JDLFVBQVUsSUFBSSxNQUFNLEtBQUksS0FBY0QsT0FBWEEsTUFBTUUsQ0FBQyxFQUFDLEtBQVcsT0FBUkYsTUFBTUksQ0FBQyxHQUN0RUUsSUFBSSxDQUFDO0lBRVIsdUNBQXVDO0lBQ3ZDLE1BQU1DLFdBQVcsR0FBaUJyQixPQUFkbUIsVUFBUyxPQUF3QmxCLE9BQW5CRCxRQUFRRSxTQUFRLEtBQXlCQSxPQUF0QkQsU0FBU0MsU0FBUSxPQUFnQkQsT0FBWEMsU0FBUSxLQUFvQixPQUFqQkQsU0FBU0MsU0FBUTtJQUV2RywwQkFBMEI7SUFDMUIsTUFBTW9CLGFBQWEsQ0FBQ0M7UUFDbEIsTUFBTUMsT0FBTyxJQUFJQyxLQUFLRjtRQUN0QixPQUFPQyxLQUFLRSxrQkFBa0IsQ0FBQyxTQUFTO1lBQUVDLE9BQU87WUFBU0MsS0FBSztRQUFVO0lBQzNFO0lBRUEscUJBQ0UsOERBQUNDO1FBQUlDLFdBQVU7OzBCQUNiLDhEQUFDRDtnQkFBSUMsV0FBVTs7a0NBQ2IsOERBQUNEOzswQ0FDQyw4REFBQ0E7Z0NBQUlDLFdBQVU7MENBQWtFOzs7Ozs7MENBR2pGLDhEQUFDRDtnQ0FBSUMsV0FBVTs7b0NBQTZCO2tEQUNqQyw4REFBQ0M7d0NBQUtELFdBQVU7OzRDQUErQjs0Q0FBRWhDLGFBQWFrQyxPQUFPLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBR25GLDhEQUFDSDt3QkFBSUMsV0FBVTs7NEJBQ1pSLFdBQVd6QixJQUFJLENBQUMsRUFBRSxDQUFDMkIsSUFBSTs0QkFBRTs0QkFBSUYsV0FBV3pCLElBQUksQ0FBQ0EsS0FBS0UsTUFBTSxHQUFHLEVBQUUsQ0FBQ3lCLElBQUk7Ozs7Ozs7Ozs7Ozs7MEJBSXZFLDhEQUFDSztnQkFBSUMsV0FBVTswQkFDYiw0RUFBQ0c7b0JBQ0NDLFNBQVMsT0FBZ0JqQyxPQUFURCxPQUFNLEtBQVUsT0FBUEM7b0JBQ3pCNkIsV0FBVTtvQkFDVksscUJBQW9COztzQ0FFcEIsOERBQUNDO3NDQUNDLDRFQUFDQztnQ0FBZUMsSUFBRztnQ0FBZ0JDLElBQUc7Z0NBQUtDLElBQUc7Z0NBQUtDLElBQUc7Z0NBQUtDLElBQUc7O2tEQUM1RCw4REFBQ0M7d0NBQUtDLFFBQU87d0NBQUtDLFdBQVU7d0NBQVVDLGFBQVk7Ozs7OztrREFDbEQsOERBQUNIO3dDQUFLQyxRQUFPO3dDQUFPQyxXQUFVO3dDQUFVQyxhQUFZOzs7Ozs7Ozs7Ozs7Ozs7OztzQ0FJeEQsOERBQUNDOzRCQUNDMUMsR0FBR2dCOzRCQUNIMkIsTUFBSzs7Ozs7O3NDQUdQLDhEQUFDRDs0QkFDQzFDLEdBQUdjOzRCQUNINkIsTUFBSzs0QkFDTEMsUUFBTzs0QkFDUEMsYUFBWTs0QkFDWkMsZUFBYzs0QkFDZEMsZ0JBQWU7Ozs7OztzQ0FHakIsOERBQUNDOzRCQUNDQyxJQUFJekMsTUFBTSxDQUFDQSxPQUFPZCxNQUFNLEdBQUcsRUFBRSxDQUFDaUIsQ0FBQzs0QkFDL0J1QyxJQUFJMUMsTUFBTSxDQUFDQSxPQUFPZCxNQUFNLEdBQUcsRUFBRSxDQUFDbUIsQ0FBQzs0QkFDL0JzQyxHQUFFOzRCQUNGUixNQUFLOzs7Ozs7Ozs7Ozs7Ozs7OzswQkFLWCw4REFBQ25CO2dCQUFJQyxXQUFVOztrQ0FDYiw4REFBQ0M7OzRCQUFLOzRCQUFPeEIsU0FBU3lCLE9BQU8sQ0FBQzs7Ozs7OztrQ0FDOUIsOERBQUNEOzs0QkFBSzs0QkFBUXJCLFNBQVNzQixPQUFPLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJdkM7S0FqR2dCcEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vY29tcG9uZW50cy9QcmljaW5nSGlzdG9yeUdyYXBoLnRzeD82YzVhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgdHlwZSB7IFByaWNlSGlzdG9yeVBvaW50IH0gZnJvbSBcIkAvYXBwL2d1bmJ1aWxkZXIvW2NhdGVnb3J5SWRdL1twYXJ0SWRdL2RhdGFcIjtcblxuaW50ZXJmYWNlIFByaWNpbmdIaXN0b3J5R3JhcGhQcm9wcyB7XG4gIGRhdGE6IFByaWNlSGlzdG9yeVBvaW50W107XG4gIGN1cnJlbnRQcmljZTogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUHJpY2luZ0hpc3RvcnlHcmFwaCh7XG4gIGRhdGEsXG4gIGN1cnJlbnRQcmljZSxcbn06IFByaWNpbmdIaXN0b3J5R3JhcGhQcm9wcykge1xuICBpZiAoZGF0YS5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIC8vIENhbGN1bGF0ZSBjaGFydCBkaW1lbnNpb25zXG4gIGNvbnN0IHdpZHRoID0gMTAwO1xuICBjb25zdCBoZWlnaHQgPSA2MDtcbiAgY29uc3QgcGFkZGluZyA9IDQ7XG5cbiAgLy8gRmluZCBtaW4gYW5kIG1heCBwcmljZXMgZm9yIHNjYWxpbmdcbiAgY29uc3QgcHJpY2VzID0gZGF0YS5tYXAoKGQpID0+IGQucHJpY2UpO1xuICBjb25zdCBtaW5QcmljZSA9IE1hdGgubWluKC4uLnByaWNlcyk7XG4gIGNvbnN0IG1heFByaWNlID0gTWF0aC5tYXgoLi4ucHJpY2VzKTtcbiAgY29uc3QgcHJpY2VSYW5nZSA9IG1heFByaWNlIC0gbWluUHJpY2UgfHwgMTsgLy8gQXZvaWQgZGl2aXNpb24gYnkgemVyb1xuXG4gIC8vIEdlbmVyYXRlIHBhdGggcG9pbnRzXG4gIGNvbnN0IHBvaW50cyA9IGRhdGEubWFwKChwb2ludCwgaW5kZXgpID0+IHtcbiAgICBjb25zdCB4ID0gcGFkZGluZyArICgoaW5kZXggLyAoZGF0YS5sZW5ndGggLSAxKSkgKiAod2lkdGggLSBwYWRkaW5nICogMikpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQcmljZSA9IChwb2ludC5wcmljZSAtIG1pblByaWNlKSAvIHByaWNlUmFuZ2U7XG4gICAgY29uc3QgeSA9IHBhZGRpbmcgKyAoaGVpZ2h0IC0gcGFkZGluZyAqIDIpICogKDEgLSBub3JtYWxpemVkUHJpY2UpO1xuICAgIHJldHVybiB7IHgsIHksIHByaWNlOiBwb2ludC5wcmljZSB9O1xuICB9KTtcblxuICAvLyBDcmVhdGUgU1ZHIHBhdGhcbiAgY29uc3QgcGF0aERhdGEgPSBwb2ludHNcbiAgICAubWFwKChwb2ludCwgaW5kZXgpID0+IGAke2luZGV4ID09PSAwID8gXCJNXCIgOiBcIkxcIn0gJHtwb2ludC54fSAke3BvaW50Lnl9YClcbiAgICAuam9pbihcIiBcIik7XG5cbiAgLy8gQ3JlYXRlIGFyZWEgcGF0aCAoZm9yIGdyYWRpZW50IGZpbGwpXG4gIGNvbnN0IGFyZWFQYXRoID0gYCR7cGF0aERhdGF9IEwgJHt3aWR0aCAtIHBhZGRpbmd9ICR7aGVpZ2h0IC0gcGFkZGluZ30gTCAke3BhZGRpbmd9ICR7aGVpZ2h0IC0gcGFkZGluZ30gWmA7XG5cbiAgLy8gRm9ybWF0IGRhdGUgZm9yIGRpc3BsYXlcbiAgY29uc3QgZm9ybWF0RGF0ZSA9IChkYXRlU3RyOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoZGF0ZVN0cik7XG4gICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZW4tVVNcIiwgeyBtb250aDogXCJzaG9ydFwiLCBkYXk6IFwibnVtZXJpY1wiIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJ3LWZ1bGxcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItNCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4xNmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTQwMFwiPlxuICAgICAgICAgICAgUHJpY2UgSGlzdG9yeSAoMzAgRGF5cylcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTEgdGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICBDdXJyZW50OiA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWFtYmVyLTMwMCBmb250LXNlbWlib2xkXCI+JHtjdXJyZW50UHJpY2UudG9GaXhlZCgyKX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgIHtmb3JtYXREYXRlKGRhdGFbMF0uZGF0ZSl9IC0ge2Zvcm1hdERhdGUoZGF0YVtkYXRhLmxlbmd0aCAtIDFdLmRhdGUpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIHctZnVsbCBoLTMyIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTkwMC8zMCBwLTNcIj5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIHZpZXdCb3g9e2AwIDAgJHt3aWR0aH0gJHtoZWlnaHR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgaC1mdWxsXCJcbiAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGVmcz5cbiAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInByaWNlR3JhZGllbnRcIiB4MT1cIjAlXCIgeTE9XCIwJVwiIHgyPVwiMCVcIiB5Mj1cIjEwMCVcIj5cbiAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMCVcIiBzdG9wQ29sb3I9XCIjZmJiZjI0XCIgc3RvcE9wYWNpdHk9XCIwLjNcIiAvPlxuICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxMDAlXCIgc3RvcENvbG9yPVwiI2ZiYmYyNFwiIHN0b3BPcGFjaXR5PVwiMC4wNVwiIC8+XG4gICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICAgIDwvZGVmcz5cbiAgICAgICAgICB7LyogQXJlYSBmaWxsICovfVxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPXthcmVhUGF0aH1cbiAgICAgICAgICAgIGZpbGw9XCJ1cmwoI3ByaWNlR3JhZGllbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIHsvKiBMaW5lICovfVxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPXtwYXRoRGF0YX1cbiAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgIHN0cm9rZT1cIiNmYmJmMjRcIlxuICAgICAgICAgICAgc3Ryb2tlV2lkdGg9XCIxLjVcIlxuICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgey8qIEN1cnJlbnQgcHJpY2UgaW5kaWNhdG9yICovfVxuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIGN4PXtwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdLnh9XG4gICAgICAgICAgICBjeT17cG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXS55fVxuICAgICAgICAgICAgcj1cIjJcIlxuICAgICAgICAgICAgZmlsbD1cIiNmYmJmMjRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gdGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgIDxzcGFuPkxvdzogJHttaW5QcmljZS50b0ZpeGVkKDIpfTwvc3Bhbj5cbiAgICAgICAgPHNwYW4+SGlnaDogJHttYXhQcmljZS50b0ZpeGVkKDIpfTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuXG4iXSwibmFtZXMiOlsiUHJpY2luZ0hpc3RvcnlHcmFwaCIsImRhdGEiLCJjdXJyZW50UHJpY2UiLCJsZW5ndGgiLCJ3aWR0aCIsImhlaWdodCIsInBhZGRpbmciLCJwcmljZXMiLCJtYXAiLCJkIiwicHJpY2UiLCJtaW5QcmljZSIsIk1hdGgiLCJtaW4iLCJtYXhQcmljZSIsIm1heCIsInByaWNlUmFuZ2UiLCJwb2ludHMiLCJwb2ludCIsImluZGV4IiwieCIsIm5vcm1hbGl6ZWRQcmljZSIsInkiLCJwYXRoRGF0YSIsImpvaW4iLCJhcmVhUGF0aCIsImZvcm1hdERhdGUiLCJkYXRlU3RyIiwiZGF0ZSIsIkRhdGUiLCJ0b0xvY2FsZURhdGVTdHJpbmciLCJtb250aCIsImRheSIsImRpdiIsImNsYXNzTmFtZSIsInNwYW4iLCJ0b0ZpeGVkIiwic3ZnIiwidmlld0JveCIsInByZXNlcnZlQXNwZWN0UmF0aW8iLCJkZWZzIiwibGluZWFyR3JhZGllbnQiLCJpZCIsIngxIiwieTEiLCJ4MiIsInkyIiwic3RvcCIsIm9mZnNldCIsInN0b3BDb2xvciIsInN0b3BPcGFjaXR5IiwicGF0aCIsImZpbGwiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsImNpcmNsZSIsImN4IiwiY3kiLCJyIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/PricingHistoryGraph.tsx\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/gunbuilder/[categoryId]/[partId]/page.c5fccd017612ecaa.hot-update.js b/.next/static/webpack/app/gunbuilder/[categoryId]/[partId]/page.c5fccd017612ecaa.hot-update.js new file mode 100644 index 0000000..6e9971c --- /dev/null +++ b/.next/static/webpack/app/gunbuilder/[categoryId]/[partId]/page.c5fccd017612ecaa.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/gunbuilder/[categoryId]/[partId]/page",{ + +/***/ "(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx": +/*!*******************************************************!*\ + !*** ./app/gunbuilder/[categoryId]/[partId]/page.tsx ***! + \*******************************************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ PartDetailPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\nfunction PartDetailPage() {\n _s();\n const params = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams)();\n const categoryId = params.categoryId;\n const partId = params.partId;\n const category = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.find((c)=>c.id === categoryId), [\n categoryId\n ]);\n const part = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId), [\n partId,\n categoryId\n ]);\n if (!category || !part) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"Product Not Found\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 32,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-amber-300 hover:text-amber-200 underline\",\n children: \"Return to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 35,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 31,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 30,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 29,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/\".concat(categoryId),\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: [\n \"← Back to \",\n category.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 52,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 59,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 63,\n columnNumber: 28\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 62,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: [\n category.name,\n \" • Product Details\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 65,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 58,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 51,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 lg:grid-cols-[2fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-6 md:grid-cols-[1fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-2\",\n children: \"Product Information\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 78,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Brand\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 83,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.brand\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 86,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 82,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Model\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 91,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 94,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 90,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Category\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 99,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 102,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 98,\n columnNumber: 19\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 108,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-300 leading-relaxed\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 111,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 107,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 81,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 77,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full aspect-square max-w-md rounded-md border border-zinc-700 bg-zinc-900/50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center p-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-16 h-16 mx-auto text-zinc-600 mb-2\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5,\n d: \"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 130,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 123,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide\",\n children: \"Product Image\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 137,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 122,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 121,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 120,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 75,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 74,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/80 p-4 md:p-6 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400 mb-2\",\n children: \"Price\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 149,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-semibold text-amber-300\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 150,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 148,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-auto space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder?select=\".concat(categoryId, \":\").concat(part.id),\n className: \"block w-full rounded-md border border-amber-400/60 bg-amber-400/10 px-4 py-3 text-sm font-medium text-amber-200 hover:bg-amber-400/15 text-center transition-colors\",\n children: \"Add to Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 156,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: part.affiliateUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"block w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-4 py-3 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 text-center transition-colors\",\n children: \"View Retailer\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 162,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 155,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 147,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 72,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 49,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 48,\n columnNumber: 5\n }, this);\n}\n_s(PartDetailPage, \"x98W2lsgkrj67cp5WacZHnLLPfg=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams\n ];\n});\n_c = PartDetailPage;\nvar _c;\n$RefreshReg$(_c, \"PartDetailPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL1tjYXRlZ29yeUlkXS9bcGFydElkXS9wYWdlLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFFZ0M7QUFDSDtBQUNlO0FBQ2U7QUFNNUMsU0FBU0s7O0lBQ3RCLE1BQU1DLFNBQVNKLDBEQUFTQTtJQUN4QixNQUFNSyxhQUFhRCxPQUFPQyxVQUFVO0lBQ3BDLE1BQU1DLFNBQVNGLE9BQU9FLE1BQU07SUFFNUIsTUFBTUMsV0FBV1QsOENBQU9BLENBQ3RCLElBQU1HLDZEQUFVQSxDQUFDTyxJQUFJLENBQUMsQ0FBQ0MsSUFBTUEsRUFBRUMsRUFBRSxLQUFLTCxhQUN0QztRQUFDQTtLQUFXO0lBR2QsTUFBTU0sT0FBT2IsOENBQU9BLENBQ2xCLElBQU1JLHdEQUFLQSxDQUFDTSxJQUFJLENBQUMsQ0FBQ0ksSUFBTUEsRUFBRUYsRUFBRSxLQUFLSixVQUFVTSxFQUFFUCxVQUFVLEtBQUtBLGFBQzVEO1FBQUNDO1FBQVFEO0tBQVc7SUFHdEIsSUFBSSxDQUFDRSxZQUFZLENBQUNJLE1BQU07UUFDdEIscUJBQ0UsOERBQUNFO1lBQUtDLFdBQVU7c0JBQ2QsNEVBQUNDO2dCQUFJRCxXQUFVOzBCQUNiLDRFQUFDQztvQkFBSUQsV0FBVTs7c0NBQ2IsOERBQUNFOzRCQUFHRixXQUFVO3NDQUEyQzs7Ozs7O3NDQUd6RCw4REFBQ2YsaURBQUlBOzRCQUNIa0IsTUFBSzs0QkFDTEgsV0FBVTtzQ0FDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU9YO0lBRUEscUJBQ0UsOERBQUNEO1FBQUtDLFdBQVU7a0JBQ2QsNEVBQUNDO1lBQUlELFdBQVU7OzhCQUViLDhEQUFDSTtvQkFBT0osV0FBVTs7c0NBQ2hCLDhEQUFDZixpREFBSUE7NEJBQ0hrQixNQUFNLGVBQTBCLE9BQVhaOzRCQUNyQlMsV0FBVTs7Z0NBQ1g7Z0NBQ1lQLFNBQVNZLElBQUk7Ozs7Ozs7c0NBRTFCLDhEQUFDSjs7OENBQ0MsOERBQUNIO29DQUFFRSxXQUFVOzhDQUFpRTs7Ozs7OzhDQUc5RSw4REFBQ0U7b0NBQUdGLFdBQVU7O3dDQUNYSCxLQUFLUyxLQUFLO3dDQUFDO3NEQUFDLDhEQUFDQzs0Q0FBS1AsV0FBVTtzREFBa0JILEtBQUtRLElBQUk7Ozs7Ozs7Ozs7Ozs4Q0FFMUQsOERBQUNQO29DQUFFRSxXQUFVOzt3Q0FDVlAsU0FBU1ksSUFBSTt3Q0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4QkFNckIsOERBQUNKO29CQUFJRCxXQUFVOztzQ0FFYiw4REFBQ1E7NEJBQVFSLFdBQVU7c0NBQ2pCLDRFQUFDQztnQ0FBSUQsV0FBVTs7a0RBRWIsOERBQUNDOzswREFDQyw4REFBQ0E7Z0RBQUlELFdBQVU7MERBQXVFOzs7Ozs7MERBR3RGLDhEQUFDQztnREFBSUQsV0FBVTs7a0VBQ2IsOERBQUNDOzswRUFDQyw4REFBQ0E7Z0VBQUlELFdBQVU7MEVBQXFEOzs7Ozs7MEVBR3BFLDhEQUFDQztnRUFBSUQsV0FBVTswRUFDWkgsS0FBS1MsS0FBSzs7Ozs7Ozs7Ozs7O2tFQUdmLDhEQUFDTDs7MEVBQ0MsOERBQUNBO2dFQUFJRCxXQUFVOzBFQUFxRDs7Ozs7OzBFQUdwRSw4REFBQ0M7Z0VBQUlELFdBQVU7MEVBQ1pILEtBQUtRLElBQUk7Ozs7Ozs7Ozs7OztrRUFHZCw4REFBQ0o7OzBFQUNDLDhEQUFDQTtnRUFBSUQsV0FBVTswRUFBcUQ7Ozs7OzswRUFHcEUsOERBQUNDO2dFQUFJRCxXQUFVOzBFQUNaUCxTQUFTWSxJQUFJOzs7Ozs7Ozs7Ozs7b0RBR2pCUixLQUFLWSxLQUFLLGtCQUNULDhEQUFDUjs7MEVBQ0MsOERBQUNBO2dFQUFJRCxXQUFVOzBFQUFxRDs7Ozs7OzBFQUdwRSw4REFBQ0M7Z0VBQUlELFdBQVU7MEVBQ1pILEtBQUtZLEtBQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrREFRckIsOERBQUNSO3dDQUFJRCxXQUFVO2tEQUNiLDRFQUFDQzs0Q0FBSUQsV0FBVTtzREFDYiw0RUFBQ0M7Z0RBQUlELFdBQVU7O2tFQUNiLDhEQUFDVTt3REFDQ1YsV0FBVTt3REFDVlcsTUFBSzt3REFDTEMsUUFBTzt3REFDUEMsU0FBUTt3REFDUkMsT0FBTTtrRUFFTiw0RUFBQ0M7NERBQ0NDLGVBQWM7NERBQ2RDLGdCQUFlOzREQUNmQyxhQUFhOzREQUNiQyxHQUFFOzs7Ozs7Ozs7OztrRUFHTiw4REFBQ3JCO3dEQUFFRSxXQUFVO2tFQUFnRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NDQVV2RSw4REFBQ29COzRCQUFNcEIsV0FBVTs7OENBQ2YsOERBQUNDO29DQUFJRCxXQUFVOztzREFDYiw4REFBQ0M7NENBQUlELFdBQVU7c0RBQTZCOzs7Ozs7c0RBQzVDLDhEQUFDQzs0Q0FBSUQsV0FBVTs7Z0RBQXdDO2dEQUNuREgsS0FBS3dCLEtBQUssQ0FBQ0MsT0FBTyxDQUFDOzs7Ozs7Ozs7Ozs7OzhDQUl6Qiw4REFBQ3JCO29DQUFJRCxXQUFVOztzREFDYiw4REFBQ2YsaURBQUlBOzRDQUNIa0IsTUFBTSxzQkFBb0NOLE9BQWROLFlBQVcsS0FBVyxPQUFSTSxLQUFLRCxFQUFFOzRDQUNqREksV0FBVTtzREFDWDs7Ozs7O3NEQUdELDhEQUFDdUI7NENBQ0NwQixNQUFNTixLQUFLMkIsWUFBWTs0Q0FDdkJDLFFBQU87NENBQ1BDLEtBQUk7NENBQ0oxQixXQUFVO3NEQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNmO0dBcEt3Qlg7O1FBQ1BILHNEQUFTQTs7O0tBREZHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2FwcC9ndW5idWlsZGVyL1tjYXRlZ29yeUlkXS9bcGFydElkXS9wYWdlLnRzeD80MmMxIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgTGluayBmcm9tIFwibmV4dC9saW5rXCI7XG5pbXBvcnQgeyB1c2VQYXJhbXMgfSBmcm9tIFwibmV4dC9uYXZpZ2F0aW9uXCI7XG5pbXBvcnQgeyBDQVRFR09SSUVTLCBQQVJUUyB9IGZyb20gXCJAL2RhdGEvZ3VuYnVpbGRlclBhcnRzXCI7XG5pbXBvcnQgdHlwZSB7IENhdGVnb3J5SWQgfSBmcm9tIFwiQC90eXBlcy9ndW5idWlsZGVyXCI7XG5pbXBvcnQgeyBnZXRQcmljaW5nSGlzdG9yeSwgZ2V0UmV0YWlsZXJPZmZlcnMgfSBmcm9tIFwiLi9kYXRhXCI7XG5pbXBvcnQgeyBQcmljaW5nSGlzdG9yeUdyYXBoIH0gZnJvbSBcIkAvY29tcG9uZW50cy9QcmljaW5nSGlzdG9yeUdyYXBoXCI7XG5pbXBvcnQgeyBSZXRhaWxlcnNMaXN0IH0gZnJvbSBcIkAvY29tcG9uZW50cy9SZXRhaWxlcnNMaXN0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBhcnREZXRhaWxQYWdlKCkge1xuICBjb25zdCBwYXJhbXMgPSB1c2VQYXJhbXMoKTtcbiAgY29uc3QgY2F0ZWdvcnlJZCA9IHBhcmFtcy5jYXRlZ29yeUlkIGFzIENhdGVnb3J5SWQ7XG4gIGNvbnN0IHBhcnRJZCA9IHBhcmFtcy5wYXJ0SWQgYXMgc3RyaW5nO1xuXG4gIGNvbnN0IGNhdGVnb3J5ID0gdXNlTWVtbyhcbiAgICAoKSA9PiBDQVRFR09SSUVTLmZpbmQoKGMpID0+IGMuaWQgPT09IGNhdGVnb3J5SWQpLFxuICAgIFtjYXRlZ29yeUlkXSxcbiAgKTtcblxuICBjb25zdCBwYXJ0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiBQQVJUUy5maW5kKChwKSA9PiBwLmlkID09PSBwYXJ0SWQgJiYgcC5jYXRlZ29yeUlkID09PSBjYXRlZ29yeUlkKSxcbiAgICBbcGFydElkLCBjYXRlZ29yeUlkXSxcbiAgKTtcblxuICBpZiAoIWNhdGVnb3J5IHx8ICFwYXJ0KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxtYWluIGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ibGFjayB0ZXh0LXppbmMtNTBcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIG1heC13LTZ4bCBweC00IHB5LTYgbGc6cHktMTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtNTAgbWItNFwiPlxuICAgICAgICAgICAgICBQcm9kdWN0IE5vdCBGb3VuZFxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgIGhyZWY9XCIvZ3VuYnVpbGRlclwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwIGhvdmVyOnRleHQtYW1iZXItMjAwIHVuZGVybGluZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJldHVybiB0byBHdW5idWlsZGVyXG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYWluPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxtYWluIGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ibGFjayB0ZXh0LXppbmMtNTBcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtYXgtdy02eGwgcHgtNCBweS02IGxnOnB5LTEwXCI+XG4gICAgICAgIHsvKiBIZWFkZXIgKi99XG4gICAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwibWItNlwiPlxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBocmVmPXtgL2d1bmJ1aWxkZXIvJHtjYXRlZ29yeUlkfWB9XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy00MDAgaG92ZXI6dGV4dC16aW5jLTMwMCBtYi00IGlubGluZS1ibG9ja1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAg4oaQIEJhY2sgdG8ge2NhdGVnb3J5Lm5hbWV9XG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWzAuMmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTUwMFwiPlxuICAgICAgICAgICAgICBTaGFkb3cgU3RhbmRhcmRcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJtdC0xIHRleHQtMnhsIG1kOnRleHQtM3hsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRcIj5cbiAgICAgICAgICAgICAge3BhcnQuYnJhbmR9IDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMzAwXCI+e3BhcnQubmFtZX08L3NwYW4+XG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwibXQtMiB0ZXh0LXNtIHRleHQtemluYy00MDAgbWF4LXcteGxcIj5cbiAgICAgICAgICAgICAge2NhdGVnb3J5Lm5hbWV9IOKAoiBQcm9kdWN0IERldGFpbHNcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9oZWFkZXI+XG5cbiAgICAgICAgey8qIFByb2R1Y3QgRGV0YWlscyAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC00IGxnOmdyaWQtY29scy1bMmZyLDFmcl1cIj5cbiAgICAgICAgICB7LyogTWFpbiBDb250ZW50ICovfVxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTk1MC82MCBwLTQgbWQ6cC02XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ2FwLTYgbWQ6Z3JpZC1jb2xzLVsxZnIsMWZyXVwiPlxuICAgICAgICAgICAgICB7LyogUHJvZHVjdCBJbmZvICovfVxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjE2ZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNDAwIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgIFByb2R1Y3QgSW5mb3JtYXRpb25cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNwYWNlLXktM1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy01MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUgbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIEJyYW5kXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZCB0ZXh0LXppbmMtNTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7cGFydC5icmFuZH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICBNb2RlbFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3BhcnQubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAge2NhdGVnb3J5Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB7cGFydC5ub3RlcyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy01MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGUgbWItMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LXppbmMtMzAwIGxlYWRpbmctcmVsYXhlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgey8qIFByb2R1Y3QgSW1hZ2UgKi99XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGFzcGVjdC1zcXVhcmUgbWF4LXctbWQgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzUwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIHAtOFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0xNiBoLTE2IG14LWF1dG8gdGV4dC16aW5jLTYwMCBtYi0yXCJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aD17MS41fVxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00IDE2bDQuNTg2LTQuNTg2YTIgMiAwIDAxMi44MjggMEwxNiAxNm0tMi0ybDEuNTg2LTEuNTg2YTIgMiAwIDAxMi44MjggMEwyMCAxNG0tNi02aC4wMU02IDIwaDEyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyelwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIFByb2R1Y3QgSW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgICAgey8qIFNpZGViYXIgKi99XG4gICAgICAgICAgPGFzaWRlIGNsYXNzTmFtZT1cInJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTk1MC84MCBwLTQgbWQ6cC02IGZsZXggZmxleC1jb2xcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItNFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTQwMCBtYi0yXCI+UHJpY2U8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMzAwXCI+XG4gICAgICAgICAgICAgICAgJHtwYXJ0LnByaWNlLnRvRml4ZWQoMil9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtYXV0byBzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICBocmVmPXtgL2d1bmJ1aWxkZXI/c2VsZWN0PSR7Y2F0ZWdvcnlJZH06JHtwYXJ0LmlkfWB9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2sgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1hbWJlci00MDAvNjAgYmctYW1iZXItNDAwLzEwIHB4LTQgcHktMyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtYW1iZXItMjAwIGhvdmVyOmJnLWFtYmVyLTQwMC8xNSB0ZXh0LWNlbnRlciB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBBZGQgdG8gQnVpbGRcbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGhyZWY9e3BhcnQuYWZmaWxpYXRlVXJsfVxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvY2sgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC81MCBweC00IHB5LTMgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LXppbmMtMzAwIGhvdmVyOmJnLXppbmMtODAwIGhvdmVyOmJvcmRlci16aW5jLTYwMCB0ZXh0LWNlbnRlciB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBWaWV3IFJldGFpbGVyXG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXNpZGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tYWluPlxuICApO1xufVxuXG4iXSwibmFtZXMiOlsidXNlTWVtbyIsIkxpbmsiLCJ1c2VQYXJhbXMiLCJDQVRFR09SSUVTIiwiUEFSVFMiLCJQYXJ0RGV0YWlsUGFnZSIsInBhcmFtcyIsImNhdGVnb3J5SWQiLCJwYXJ0SWQiLCJjYXRlZ29yeSIsImZpbmQiLCJjIiwiaWQiLCJwYXJ0IiwicCIsIm1haW4iLCJjbGFzc05hbWUiLCJkaXYiLCJoMSIsImhyZWYiLCJoZWFkZXIiLCJuYW1lIiwiYnJhbmQiLCJzcGFuIiwic2VjdGlvbiIsIm5vdGVzIiwic3ZnIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJ4bWxucyIsInBhdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImQiLCJhc2lkZSIsInByaWNlIiwidG9GaXhlZCIsImEiLCJhZmZpbGlhdGVVcmwiLCJ0YXJnZXQiLCJyZWwiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/gunbuilder/[categoryId]/[partId]/page.cbda6c3666c270dc.hot-update.js b/.next/static/webpack/app/gunbuilder/[categoryId]/[partId]/page.cbda6c3666c270dc.hot-update.js new file mode 100644 index 0000000..211fccb --- /dev/null +++ b/.next/static/webpack/app/gunbuilder/[categoryId]/[partId]/page.cbda6c3666c270dc.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/gunbuilder/[categoryId]/[partId]/page",{ + +/***/ "(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx": +/*!*******************************************************!*\ + !*** ./app/gunbuilder/[categoryId]/[partId]/page.tsx ***! + \*******************************************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ PartDetailPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./data */ \"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/data.ts\");\n/* harmony import */ var _components_RetailersList__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/components/RetailersList */ \"(app-pages-browser)/./components/RetailersList.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\n\nfunction PartDetailPage() {\n _s();\n const params = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams)();\n const categoryId = params.categoryId;\n const partId = params.partId;\n const category = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.find((c)=>c.id === categoryId), [\n categoryId\n ]);\n const part = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId), [\n partId,\n categoryId\n ]);\n // Get pricing history and retailer offers\n // TODO: Replace with API calls when endpoints are ready\n const pricingHistory = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>part ? (0,_data__WEBPACK_IMPORTED_MODULE_5__.getPricingHistory)(part.id, part.price) : [], [\n part\n ]);\n const retailerOffers = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>part ? (0,_data__WEBPACK_IMPORTED_MODULE_5__.getRetailerOffers)(part.id, part.price, part.affiliateUrl) : [], [\n part\n ]);\n if (!category || !part) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"Product Not Found\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 47,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-amber-300 hover:text-amber-200 underline\",\n children: \"Return to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 50,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 46,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 45,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 44,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/\".concat(categoryId),\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: [\n \"← Back to \",\n category.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 67,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 74,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 78,\n columnNumber: 28\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 77,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: [\n category.name,\n \" • Product Details\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 80,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 73,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 66,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 lg:grid-cols-[2fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"space-y-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-6 md:grid-cols-[1fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-2\",\n children: \"Product Information\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 95,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Brand\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 100,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.brand\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 103,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 99,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Model\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 108,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 111,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 107,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Category\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 116,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 119,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 115,\n columnNumber: 21\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 125,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-300 leading-relaxed\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 128,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 124,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 98,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 94,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full aspect-square max-w-md rounded-md border border-zinc-700 bg-zinc-900/50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center p-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-16 h-16 mx-auto text-zinc-600 mb-2\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5,\n d: \"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 147,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 140,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide\",\n children: \"Product Image\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 154,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 139,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 138,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 137,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 92,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 91,\n columnNumber: 13\n }, this),\n retailerOffers.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_RetailersList__WEBPACK_IMPORTED_MODULE_6__.RetailersList, {\n retailers: retailerOffers\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 166,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 165,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 89,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/80 p-4 md:p-6 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400 mb-2\",\n children: \"Price\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 174,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-semibold text-amber-300\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 175,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 173,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-auto space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder?select=\".concat(categoryId, \":\").concat(part.id),\n className: \"block w-full rounded-md border border-amber-400/60 bg-amber-400/10 px-4 py-3 text-sm font-medium text-amber-200 hover:bg-amber-400/15 text-center transition-colors\",\n children: \"Add to Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 181,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: part.affiliateUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"block w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-4 py-3 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 text-center transition-colors\",\n children: \"View Retailer\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 187,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 180,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 172,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 87,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 64,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 63,\n columnNumber: 5\n }, this);\n}\n_s(PartDetailPage, \"ZpwVUtr8mmMYWPNCCmGSoaSl2YI=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams\n ];\n});\n_c = PartDetailPage;\nvar _c;\n$RefreshReg$(_c, \"PartDetailPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL1tjYXRlZ29yeUlkXS9bcGFydElkXS9wYWdlLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUVnQztBQUNIO0FBQ2U7QUFDZTtBQUVHO0FBRUg7QUFFNUMsU0FBU1E7O0lBQ3RCLE1BQU1DLFNBQVNQLDBEQUFTQTtJQUN4QixNQUFNUSxhQUFhRCxPQUFPQyxVQUFVO0lBQ3BDLE1BQU1DLFNBQVNGLE9BQU9FLE1BQU07SUFFNUIsTUFBTUMsV0FBV1osOENBQU9BLENBQ3RCLElBQU1HLDZEQUFVQSxDQUFDVSxJQUFJLENBQUMsQ0FBQ0MsSUFBTUEsRUFBRUMsRUFBRSxLQUFLTCxhQUN0QztRQUFDQTtLQUFXO0lBR2QsTUFBTU0sT0FBT2hCLDhDQUFPQSxDQUNsQixJQUFNSSx3REFBS0EsQ0FBQ1MsSUFBSSxDQUFDLENBQUNJLElBQU1BLEVBQUVGLEVBQUUsS0FBS0osVUFBVU0sRUFBRVAsVUFBVSxLQUFLQSxhQUM1RDtRQUFDQztRQUFRRDtLQUFXO0lBR3RCLDBDQUEwQztJQUMxQyx3REFBd0Q7SUFDeEQsTUFBTVEsaUJBQWlCbEIsOENBQU9BLENBQzVCLElBQU9nQixPQUFPWCx3REFBaUJBLENBQUNXLEtBQUtELEVBQUUsRUFBRUMsS0FBS0csS0FBSyxJQUFJLEVBQUUsRUFDekQ7UUFBQ0g7S0FBSztJQUdSLE1BQU1JLGlCQUFpQnBCLDhDQUFPQSxDQUM1QixJQUNFZ0IsT0FDSVYsd0RBQWlCQSxDQUFDVSxLQUFLRCxFQUFFLEVBQUVDLEtBQUtHLEtBQUssRUFBRUgsS0FBS0ssWUFBWSxJQUN4RCxFQUFFLEVBQ1I7UUFBQ0w7S0FBSztJQUdSLElBQUksQ0FBQ0osWUFBWSxDQUFDSSxNQUFNO1FBQ3RCLHFCQUNFLDhEQUFDTTtZQUFLQyxXQUFVO3NCQUNkLDRFQUFDQztnQkFBSUQsV0FBVTswQkFDYiw0RUFBQ0M7b0JBQUlELFdBQVU7O3NDQUNiLDhEQUFDRTs0QkFBR0YsV0FBVTtzQ0FBMkM7Ozs7OztzQ0FHekQsOERBQUN0QixpREFBSUE7NEJBQ0h5QixNQUFLOzRCQUNMSCxXQUFVO3NDQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBT1g7SUFFQSxxQkFDRSw4REFBQ0Q7UUFBS0MsV0FBVTtrQkFDZCw0RUFBQ0M7WUFBSUQsV0FBVTs7OEJBRWIsOERBQUNJO29CQUFPSixXQUFVOztzQ0FDaEIsOERBQUN0QixpREFBSUE7NEJBQ0h5QixNQUFNLGVBQTBCLE9BQVhoQjs0QkFDckJhLFdBQVU7O2dDQUNYO2dDQUNZWCxTQUFTZ0IsSUFBSTs7Ozs7OztzQ0FFMUIsOERBQUNKOzs4Q0FDQyw4REFBQ1A7b0NBQUVNLFdBQVU7OENBQWlFOzs7Ozs7OENBRzlFLDhEQUFDRTtvQ0FBR0YsV0FBVTs7d0NBQ1hQLEtBQUthLEtBQUs7d0NBQUM7c0RBQUMsOERBQUNDOzRDQUFLUCxXQUFVO3NEQUFrQlAsS0FBS1ksSUFBSTs7Ozs7Ozs7Ozs7OzhDQUUxRCw4REFBQ1g7b0NBQUVNLFdBQVU7O3dDQUNWWCxTQUFTZ0IsSUFBSTt3Q0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4QkFNckIsOERBQUNKO29CQUFJRCxXQUFVOztzQ0FFYiw4REFBQ1E7NEJBQVFSLFdBQVU7OzhDQUVqQiw4REFBQ0M7b0NBQUlELFdBQVU7OENBQ2IsNEVBQUNDO3dDQUFJRCxXQUFVOzswREFFYiw4REFBQ0M7O2tFQUNDLDhEQUFDQTt3REFBSUQsV0FBVTtrRUFBdUU7Ozs7OztrRUFHdEYsOERBQUNDO3dEQUFJRCxXQUFVOzswRUFDYiw4REFBQ0M7O2tGQUNDLDhEQUFDQTt3RUFBSUQsV0FBVTtrRkFBcUQ7Ozs7OztrRkFHcEUsOERBQUNDO3dFQUFJRCxXQUFVO2tGQUNaUCxLQUFLYSxLQUFLOzs7Ozs7Ozs7Ozs7MEVBR2YsOERBQUNMOztrRkFDQyw4REFBQ0E7d0VBQUlELFdBQVU7a0ZBQXFEOzs7Ozs7a0ZBR3BFLDhEQUFDQzt3RUFBSUQsV0FBVTtrRkFDWlAsS0FBS1ksSUFBSTs7Ozs7Ozs7Ozs7OzBFQUdkLDhEQUFDSjs7a0ZBQ0MsOERBQUNBO3dFQUFJRCxXQUFVO2tGQUFxRDs7Ozs7O2tGQUdwRSw4REFBQ0M7d0VBQUlELFdBQVU7a0ZBQ1pYLFNBQVNnQixJQUFJOzs7Ozs7Ozs7Ozs7NERBR2pCWixLQUFLZ0IsS0FBSyxrQkFDVCw4REFBQ1I7O2tGQUNDLDhEQUFDQTt3RUFBSUQsV0FBVTtrRkFBcUQ7Ozs7OztrRkFHcEUsOERBQUNDO3dFQUFJRCxXQUFVO2tGQUNaUCxLQUFLZ0IsS0FBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBEQVFyQiw4REFBQ1I7Z0RBQUlELFdBQVU7MERBQ2IsNEVBQUNDO29EQUFJRCxXQUFVOzhEQUNiLDRFQUFDQzt3REFBSUQsV0FBVTs7MEVBQ2IsOERBQUNVO2dFQUNDVixXQUFVO2dFQUNWVyxNQUFLO2dFQUNMQyxRQUFPO2dFQUNQQyxTQUFRO2dFQUNSQyxPQUFNOzBFQUVOLDRFQUFDQztvRUFDQ0MsZUFBYztvRUFDZEMsZ0JBQWU7b0VBQ2ZDLGFBQWE7b0VBQ2JDLEdBQUU7Ozs7Ozs7Ozs7OzBFQUdOLDhEQUFDekI7Z0VBQUVNLFdBQVU7MEVBQWdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0NBVXRFSCxlQUFldUIsTUFBTSxHQUFHLG1CQUN2Qiw4REFBQ25CO29DQUFJRCxXQUFVOzhDQUNiLDRFQUFDaEIsb0VBQWFBO3dDQUFDcUMsV0FBV3hCOzs7Ozs7Ozs7Ozs7Ozs7OztzQ0FNaEMsOERBQUN5Qjs0QkFBTXRCLFdBQVU7OzhDQUNmLDhEQUFDQztvQ0FBSUQsV0FBVTs7c0RBQ2IsOERBQUNDOzRDQUFJRCxXQUFVO3NEQUE2Qjs7Ozs7O3NEQUM1Qyw4REFBQ0M7NENBQUlELFdBQVU7O2dEQUF3QztnREFDbkRQLEtBQUtHLEtBQUssQ0FBQzJCLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs4Q0FJekIsOERBQUN0QjtvQ0FBSUQsV0FBVTs7c0RBQ2IsOERBQUN0QixpREFBSUE7NENBQ0h5QixNQUFNLHNCQUFvQ1YsT0FBZE4sWUFBVyxLQUFXLE9BQVJNLEtBQUtELEVBQUU7NENBQ2pEUSxXQUFVO3NEQUNYOzs7Ozs7c0RBR0QsOERBQUN3Qjs0Q0FDQ3JCLE1BQU1WLEtBQUtLLFlBQVk7NENBQ3ZCMkIsUUFBTzs0Q0FDUEMsS0FBSTs0Q0FDSjFCLFdBQVU7c0RBQ1g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU2Y7R0E3THdCZjs7UUFDUE4sc0RBQVNBOzs7S0FERk0iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2d1bmJ1aWxkZXIvW2NhdGVnb3J5SWRdL1twYXJ0SWRdL3BhZ2UudHN4PzQyYzEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaW5rIGZyb20gXCJuZXh0L2xpbmtcIjtcbmltcG9ydCB7IHVzZVBhcmFtcyB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIjtcbmltcG9ydCB7IENBVEVHT1JJRVMsIFBBUlRTIH0gZnJvbSBcIkAvZGF0YS9ndW5idWlsZGVyUGFydHNcIjtcbmltcG9ydCB0eXBlIHsgQ2F0ZWdvcnlJZCB9IGZyb20gXCJAL3R5cGVzL2d1bmJ1aWxkZXJcIjtcbmltcG9ydCB7IGdldFByaWNpbmdIaXN0b3J5LCBnZXRSZXRhaWxlck9mZmVycyB9IGZyb20gXCIuL2RhdGFcIjtcbmltcG9ydCB7IFByaWNpbmdIaXN0b3J5R3JhcGggfSBmcm9tIFwiQC9jb21wb25lbnRzL1ByaWNpbmdIaXN0b3J5R3JhcGhcIjtcbmltcG9ydCB7IFJldGFpbGVyc0xpc3QgfSBmcm9tIFwiQC9jb21wb25lbnRzL1JldGFpbGVyc0xpc3RcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFydERldGFpbFBhZ2UoKSB7XG4gIGNvbnN0IHBhcmFtcyA9IHVzZVBhcmFtcygpO1xuICBjb25zdCBjYXRlZ29yeUlkID0gcGFyYW1zLmNhdGVnb3J5SWQgYXMgQ2F0ZWdvcnlJZDtcbiAgY29uc3QgcGFydElkID0gcGFyYW1zLnBhcnRJZCBhcyBzdHJpbmc7XG5cbiAgY29uc3QgY2F0ZWdvcnkgPSB1c2VNZW1vKFxuICAgICgpID0+IENBVEVHT1JJRVMuZmluZCgoYykgPT4gYy5pZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW2NhdGVnb3J5SWRdLFxuICApO1xuXG4gIGNvbnN0IHBhcnQgPSB1c2VNZW1vKFxuICAgICgpID0+IFBBUlRTLmZpbmQoKHApID0+IHAuaWQgPT09IHBhcnRJZCAmJiBwLmNhdGVnb3J5SWQgPT09IGNhdGVnb3J5SWQpLFxuICAgIFtwYXJ0SWQsIGNhdGVnb3J5SWRdLFxuICApO1xuXG4gIC8vIEdldCBwcmljaW5nIGhpc3RvcnkgYW5kIHJldGFpbGVyIG9mZmVyc1xuICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggQVBJIGNhbGxzIHdoZW4gZW5kcG9pbnRzIGFyZSByZWFkeVxuICBjb25zdCBwcmljaW5nSGlzdG9yeSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHBhcnQgPyBnZXRQcmljaW5nSGlzdG9yeShwYXJ0LmlkLCBwYXJ0LnByaWNlKSA6IFtdKSxcbiAgICBbcGFydF0sXG4gICk7XG5cbiAgY29uc3QgcmV0YWlsZXJPZmZlcnMgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICBwYXJ0XG4gICAgICAgID8gZ2V0UmV0YWlsZXJPZmZlcnMocGFydC5pZCwgcGFydC5wcmljZSwgcGFydC5hZmZpbGlhdGVVcmwpXG4gICAgICAgIDogW10sXG4gICAgW3BhcnRdLFxuICApO1xuXG4gIGlmICghY2F0ZWdvcnkgfHwgIXBhcnQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gbWF4LXctNnhsIHB4LTQgcHktNiBsZzpweS0xMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LXNlbWlib2xkIHRleHQtemluYy01MCBtYi00XCI+XG4gICAgICAgICAgICAgIFByb2R1Y3QgTm90IEZvdW5kXG4gICAgICAgICAgICA8L2gxPlxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9ndW5idWlsZGVyXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDAgaG92ZXI6dGV4dC1hbWJlci0yMDAgdW5kZXJsaW5lXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmV0dXJuIHRvIEd1bmJ1aWxkZXJcbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21haW4+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuIGJnLWJsYWNrIHRleHQtemluYy01MFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIG1heC13LTZ4bCBweC00IHB5LTYgbGc6cHktMTBcIj5cbiAgICAgICAgey8qIEhlYWRlciAqL31cbiAgICAgICAgPGhlYWRlciBjbGFzc05hbWU9XCJtYi02XCI+XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGhyZWY9e2AvZ3VuYnVpbGRlci8ke2NhdGVnb3J5SWR9YH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMzAwIG1iLTQgaW5saW5lLWJsb2NrXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICDihpAgQmFjayB0byB7Y2F0ZWdvcnkubmFtZX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4yZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNTAwXCI+XG4gICAgICAgICAgICAgIFNoYWRvdyBTdGFuZGFyZFxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cIm10LTEgdGV4dC0yeGwgbWQ6dGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodFwiPlxuICAgICAgICAgICAgICB7cGFydC5icmFuZH0gPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0zMDBcIj57cGFydC5uYW1lfTwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJtdC0yIHRleHQtc20gdGV4dC16aW5jLTQwMCBtYXgtdy14bFwiPlxuICAgICAgICAgICAgICB7Y2F0ZWdvcnkubmFtZX0g4oCiIFByb2R1Y3QgRGV0YWlsc1xuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICB7LyogUHJvZHVjdCBEZXRhaWxzICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ2FwLTQgbGc6Z3JpZC1jb2xzLVsyZnIsMWZyXVwiPlxuICAgICAgICAgIHsvKiBNYWluIENvbnRlbnQgKi99XG4gICAgICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwic3BhY2UteS00XCI+XG4gICAgICAgICAgICB7LyogUHJvZHVjdCBJbmZvcm1hdGlvbiAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLXppbmMtODAwIGJnLXppbmMtOTUwLzYwIHAtNCBtZDpwLTZcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC02IG1kOmdyaWQtY29scy1bMWZyLDFmcl1cIj5cbiAgICAgICAgICAgICAgICB7LyogUHJvZHVjdCBJbmZvICovfVxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4xNmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTQwMCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgIFByb2R1Y3QgSW5mb3JtYXRpb25cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBCcmFuZFxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQuYnJhbmR9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVsXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7cGFydC5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2NhdGVnb3J5Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB7cGFydC5ub3RlcyAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTMwMCBsZWFkaW5nLXJlbGF4ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXN9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgey8qIFByb2R1Y3QgSW1hZ2UgKi99XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBhc3BlY3Qtc3F1YXJlIG1heC13LW1kIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC81MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIHAtOFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMTYgaC0xNiBteC1hdXRvIHRleHQtemluYy02MDAgbWItMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezEuNX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk00IDE2bDQuNTg2LTQuNTg2YTIgMiAwIDAxMi44MjggMEwxNiAxNm0tMi0ybDEuNTg2LTEuNTg2YTIgMiAwIDAxMi44MjggMEwyMCAxNG0tNi02aC4wMU02IDIwaDEyYTIgMiAwIDAwMi0yVjZhMiAyIDAgMDAtMi0ySDZhMiAyIDAgMDAtMiAydjEyYTIgMiAwIDAwMiAyelwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUHJvZHVjdCBJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIFJldGFpbGVycyBMaXN0ICovfVxuICAgICAgICAgICAge3JldGFpbGVyT2ZmZXJzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci16aW5jLTgwMCBiZy16aW5jLTk1MC82MCBwLTQgbWQ6cC02XCI+XG4gICAgICAgICAgICAgICAgPFJldGFpbGVyc0xpc3QgcmV0YWlsZXJzPXtyZXRhaWxlck9mZmVyc30gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgIHsvKiBTaWRlYmFyICovfVxuICAgICAgICAgIDxhc2lkZSBjbGFzc05hbWU9XCJyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItemluYy04MDAgYmctemluYy05NTAvODAgcC00IG1kOnAtNiBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy00MDAgbWItMlwiPlByaWNlPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMFwiPlxuICAgICAgICAgICAgICAgICR7cGFydC5wcmljZS50b0ZpeGVkKDIpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LWF1dG8gc3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyP3NlbGVjdD0ke2NhdGVnb3J5SWR9OiR7cGFydC5pZH1gfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYW1iZXItNDAwLzYwIGJnLWFtYmVyLTQwMC8xMCBweC00IHB5LTMgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWFtYmVyLTIwMCBob3ZlcjpiZy1hbWJlci00MDAvMTUgdGV4dC1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQWRkIHRvIEJ1aWxkXG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBocmVmPXtwYXJ0LmFmZmlsaWF0ZVVybH1cbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05MDAvNTAgcHgtNCBweS0zIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy02MDAgdGV4dC1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBSZXRhaWxlclxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FzaWRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWFpbj5cbiAgKTtcbn1cblxuIl0sIm5hbWVzIjpbInVzZU1lbW8iLCJMaW5rIiwidXNlUGFyYW1zIiwiQ0FURUdPUklFUyIsIlBBUlRTIiwiZ2V0UHJpY2luZ0hpc3RvcnkiLCJnZXRSZXRhaWxlck9mZmVycyIsIlJldGFpbGVyc0xpc3QiLCJQYXJ0RGV0YWlsUGFnZSIsInBhcmFtcyIsImNhdGVnb3J5SWQiLCJwYXJ0SWQiLCJjYXRlZ29yeSIsImZpbmQiLCJjIiwiaWQiLCJwYXJ0IiwicCIsInByaWNpbmdIaXN0b3J5IiwicHJpY2UiLCJyZXRhaWxlck9mZmVycyIsImFmZmlsaWF0ZVVybCIsIm1haW4iLCJjbGFzc05hbWUiLCJkaXYiLCJoMSIsImhyZWYiLCJoZWFkZXIiLCJuYW1lIiwiYnJhbmQiLCJzcGFuIiwic2VjdGlvbiIsIm5vdGVzIiwic3ZnIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJ4bWxucyIsInBhdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdHJva2VXaWR0aCIsImQiLCJsZW5ndGgiLCJyZXRhaWxlcnMiLCJhc2lkZSIsInRvRml4ZWQiLCJhIiwidGFyZ2V0IiwicmVsIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/gunbuilder/[categoryId]/[partId]/page.fae79994cbbcace2.hot-update.js b/.next/static/webpack/app/gunbuilder/[categoryId]/[partId]/page.fae79994cbbcace2.hot-update.js new file mode 100644 index 0000000..ec44246 --- /dev/null +++ b/.next/static/webpack/app/gunbuilder/[categoryId]/[partId]/page.fae79994cbbcace2.hot-update.js @@ -0,0 +1,32 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/gunbuilder/[categoryId]/[partId]/page",{ + +/***/ "(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/data.ts": +/*!******************************************************!*\ + !*** ./app/gunbuilder/[categoryId]/[partId]/data.ts ***! + \******************************************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getPricingHistory: function() { return /* binding */ getPricingHistory; },\n/* harmony export */ getRetailerOffers: function() { return /* binding */ getRetailerOffers; }\n/* harmony export */ });\n// Simulated data functions - Replace these with API calls when ready\n// Example: export async function getPricingHistory(partId: string) { ... }\n/**\n * Get pricing history for a part\n * TODO: Replace with API call: GET /api/parts/{partId}/pricing-history\n */ function getPricingHistory(partId, basePrice) {\n // Generate 30 days of price history with some variation\n const days = 30;\n const history = [];\n const today = new Date();\n for(let i = days - 1; i >= 0; i--){\n const date = new Date(today);\n date.setDate(date.getDate() - i);\n // Simulate price fluctuations (±15% variation)\n const variation = (Math.random() - 0.5) * 0.3; // -15% to +15%\n const price = basePrice * (1 + variation);\n history.push({\n date: date.toISOString().split(\"T\")[0],\n price: Math.round(price * 100) / 100\n });\n }\n return history;\n}\n/**\n * Get retailer offers for a part\n * TODO: Replace with API call: GET /api/parts/{partId}/retailers\n */ function getRetailerOffers(partId, basePrice, baseAffiliateUrl) {\n const retailers = [\n \"Primary Arms\",\n \"Brownells\",\n \"Optics Planet\",\n \"MidwayUSA\",\n \"Palmetto State Armory\"\n ];\n return retailers.map((retailer, index)=>{\n // Simulate price variations between retailers\n const priceVariation = (Math.random() - 0.4) * 0.2; // -8% to +12%\n const price = basePrice * (1 + priceVariation);\n const hasSale = Math.random() > 0.6; // 40% chance of sale\n const originalPrice = hasSale ? price * 1.15 : undefined;\n const inStock = Math.random() > 0.2; // 80% chance in stock\n return {\n id: \"retailer-\".concat(index),\n retailerName: retailer,\n price: Math.round(price * 100) / 100,\n originalPrice: originalPrice ? Math.round(originalPrice * 100) / 100 : undefined,\n inStock,\n affiliateUrl: baseAffiliateUrl.replace(\"example.com\", \"\".concat(retailer.toLowerCase().replace(/\\s+/g, \"\"), \".com\")),\n lastUpdated: new Date().toISOString()\n };\n }).sort((a, b)=>a.price - b.price); // Sort by price ascending\n}\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL1tjYXRlZ29yeUlkXS9bcGFydElkXS9kYXRhLnRzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUVBQXFFO0FBQ3JFLDJFQUEyRTtBQWlCM0U7OztDQUdDLEdBQ00sU0FBU0Esa0JBQ2RDLE1BQWMsRUFDZEMsU0FBaUI7SUFFakIsd0RBQXdEO0lBQ3hELE1BQU1DLE9BQU87SUFDYixNQUFNQyxVQUErQixFQUFFO0lBQ3ZDLE1BQU1DLFFBQVEsSUFBSUM7SUFFbEIsSUFBSyxJQUFJQyxJQUFJSixPQUFPLEdBQUdJLEtBQUssR0FBR0EsSUFBSztRQUNsQyxNQUFNQyxPQUFPLElBQUlGLEtBQUtEO1FBQ3RCRyxLQUFLQyxPQUFPLENBQUNELEtBQUtFLE9BQU8sS0FBS0g7UUFFOUIsK0NBQStDO1FBQy9DLE1BQU1JLFlBQVksQ0FBQ0MsS0FBS0MsTUFBTSxLQUFLLEdBQUUsSUFBSyxLQUFLLGVBQWU7UUFDOUQsTUFBTUMsUUFBUVosWUFBYSxLQUFJUyxTQUFRO1FBRXZDUCxRQUFRVyxJQUFJLENBQUM7WUFDWFAsTUFBTUEsS0FBS1EsV0FBVyxHQUFHQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdENILE9BQU9GLEtBQUtNLEtBQUssQ0FBQ0osUUFBUSxPQUFPO1FBQ25DO0lBQ0Y7SUFFQSxPQUFPVjtBQUNUO0FBRUE7OztDQUdDLEdBQ00sU0FBU2Usa0JBQ2RsQixNQUFjLEVBQ2RDLFNBQWlCLEVBQ2pCa0IsZ0JBQXdCO0lBRXhCLE1BQU1DLFlBQVk7UUFDaEI7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBRUQsT0FBT0EsVUFBVUMsR0FBRyxDQUFDLENBQUNDLFVBQVVDO1FBQzlCLDhDQUE4QztRQUM5QyxNQUFNQyxpQkFBaUIsQ0FBQ2IsS0FBS0MsTUFBTSxLQUFLLEdBQUUsSUFBSyxLQUFLLGNBQWM7UUFDbEUsTUFBTUMsUUFBUVosWUFBYSxLQUFJdUIsY0FBYTtRQUM1QyxNQUFNQyxVQUFVZCxLQUFLQyxNQUFNLEtBQUssS0FBSyxxQkFBcUI7UUFDMUQsTUFBTWMsZ0JBQWdCRCxVQUFVWixRQUFRLE9BQU9jO1FBQy9DLE1BQU1DLFVBQVVqQixLQUFLQyxNQUFNLEtBQUssS0FBSyxzQkFBc0I7UUFFM0QsT0FBTztZQUNMaUIsSUFBSSxZQUFrQixPQUFOTjtZQUNoQk8sY0FBY1I7WUFDZFQsT0FBT0YsS0FBS00sS0FBSyxDQUFDSixRQUFRLE9BQU87WUFDakNhLGVBQWVBLGdCQUNYZixLQUFLTSxLQUFLLENBQUNTLGdCQUFnQixPQUFPLE1BQ2xDQztZQUNKQztZQUNBRyxjQUFjWixpQkFBaUJhLE9BQU8sQ0FBQyxlQUFlLEdBQThDLE9BQTNDVixTQUFTVyxXQUFXLEdBQUdELE9BQU8sQ0FBQyxRQUFRLEtBQUk7WUFDcEdFLGFBQWEsSUFBSTdCLE9BQU9VLFdBQVc7UUFDckM7SUFDRixHQUFHb0IsSUFBSSxDQUFDLENBQUNDLEdBQUdDLElBQU1ELEVBQUV2QixLQUFLLEdBQUd3QixFQUFFeEIsS0FBSyxHQUFHLDBCQUEwQjtBQUNsRSIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vW3BhcnRJZF0vZGF0YS50cz9kNzM1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNpbXVsYXRlZCBkYXRhIGZ1bmN0aW9ucyAtIFJlcGxhY2UgdGhlc2Ugd2l0aCBBUEkgY2FsbHMgd2hlbiByZWFkeVxuLy8gRXhhbXBsZTogZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFByaWNpbmdIaXN0b3J5KHBhcnRJZDogc3RyaW5nKSB7IC4uLiB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpY2VIaXN0b3J5UG9pbnQge1xuICBkYXRlOiBzdHJpbmc7IC8vIElTTyBkYXRlIHN0cmluZ1xuICBwcmljZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJldGFpbGVyT2ZmZXIge1xuICBpZDogc3RyaW5nO1xuICByZXRhaWxlck5hbWU6IHN0cmluZztcbiAgcHJpY2U6IG51bWJlcjtcbiAgb3JpZ2luYWxQcmljZT86IG51bWJlcjtcbiAgaW5TdG9jazogYm9vbGVhbjtcbiAgYWZmaWxpYXRlVXJsOiBzdHJpbmc7XG4gIGxhc3RVcGRhdGVkOiBzdHJpbmc7IC8vIElTTyBkYXRlIHN0cmluZ1xufVxuXG4vKipcbiAqIEdldCBwcmljaW5nIGhpc3RvcnkgZm9yIGEgcGFydFxuICogVE9ETzogUmVwbGFjZSB3aXRoIEFQSSBjYWxsOiBHRVQgL2FwaS9wYXJ0cy97cGFydElkfS9wcmljaW5nLWhpc3RvcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByaWNpbmdIaXN0b3J5KFxuICBwYXJ0SWQ6IHN0cmluZyxcbiAgYmFzZVByaWNlOiBudW1iZXIsXG4pOiBQcmljZUhpc3RvcnlQb2ludFtdIHtcbiAgLy8gR2VuZXJhdGUgMzAgZGF5cyBvZiBwcmljZSBoaXN0b3J5IHdpdGggc29tZSB2YXJpYXRpb25cbiAgY29uc3QgZGF5cyA9IDMwO1xuICBjb25zdCBoaXN0b3J5OiBQcmljZUhpc3RvcnlQb2ludFtdID0gW107XG4gIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcblxuICBmb3IgKGxldCBpID0gZGF5cyAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRvZGF5KTtcbiAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBpKTtcblxuICAgIC8vIFNpbXVsYXRlIHByaWNlIGZsdWN0dWF0aW9ucyAowrExNSUgdmFyaWF0aW9uKVxuICAgIGNvbnN0IHZhcmlhdGlvbiA9IChNYXRoLnJhbmRvbSgpIC0gMC41KSAqIDAuMzsgLy8gLTE1JSB0byArMTUlXG4gICAgY29uc3QgcHJpY2UgPSBiYXNlUHJpY2UgKiAoMSArIHZhcmlhdGlvbik7XG5cbiAgICBoaXN0b3J5LnB1c2goe1xuICAgICAgZGF0ZTogZGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXSxcbiAgICAgIHByaWNlOiBNYXRoLnJvdW5kKHByaWNlICogMTAwKSAvIDEwMCxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBoaXN0b3J5O1xufVxuXG4vKipcbiAqIEdldCByZXRhaWxlciBvZmZlcnMgZm9yIGEgcGFydFxuICogVE9ETzogUmVwbGFjZSB3aXRoIEFQSSBjYWxsOiBHRVQgL2FwaS9wYXJ0cy97cGFydElkfS9yZXRhaWxlcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJldGFpbGVyT2ZmZXJzKFxuICBwYXJ0SWQ6IHN0cmluZyxcbiAgYmFzZVByaWNlOiBudW1iZXIsXG4gIGJhc2VBZmZpbGlhdGVVcmw6IHN0cmluZyxcbik6IFJldGFpbGVyT2ZmZXJbXSB7XG4gIGNvbnN0IHJldGFpbGVycyA9IFtcbiAgICBcIlByaW1hcnkgQXJtc1wiLFxuICAgIFwiQnJvd25lbGxzXCIsXG4gICAgXCJPcHRpY3MgUGxhbmV0XCIsXG4gICAgXCJNaWR3YXlVU0FcIixcbiAgICBcIlBhbG1ldHRvIFN0YXRlIEFybW9yeVwiLFxuICBdO1xuXG4gIHJldHVybiByZXRhaWxlcnMubWFwKChyZXRhaWxlciwgaW5kZXgpID0+IHtcbiAgICAvLyBTaW11bGF0ZSBwcmljZSB2YXJpYXRpb25zIGJldHdlZW4gcmV0YWlsZXJzXG4gICAgY29uc3QgcHJpY2VWYXJpYXRpb24gPSAoTWF0aC5yYW5kb20oKSAtIDAuNCkgKiAwLjI7IC8vIC04JSB0byArMTIlXG4gICAgY29uc3QgcHJpY2UgPSBiYXNlUHJpY2UgKiAoMSArIHByaWNlVmFyaWF0aW9uKTtcbiAgICBjb25zdCBoYXNTYWxlID0gTWF0aC5yYW5kb20oKSA+IDAuNjsgLy8gNDAlIGNoYW5jZSBvZiBzYWxlXG4gICAgY29uc3Qgb3JpZ2luYWxQcmljZSA9IGhhc1NhbGUgPyBwcmljZSAqIDEuMTUgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgaW5TdG9jayA9IE1hdGgucmFuZG9tKCkgPiAwLjI7IC8vIDgwJSBjaGFuY2UgaW4gc3RvY2tcblxuICAgIHJldHVybiB7XG4gICAgICBpZDogYHJldGFpbGVyLSR7aW5kZXh9YCxcbiAgICAgIHJldGFpbGVyTmFtZTogcmV0YWlsZXIsXG4gICAgICBwcmljZTogTWF0aC5yb3VuZChwcmljZSAqIDEwMCkgLyAxMDAsXG4gICAgICBvcmlnaW5hbFByaWNlOiBvcmlnaW5hbFByaWNlXG4gICAgICAgID8gTWF0aC5yb3VuZChvcmlnaW5hbFByaWNlICogMTAwKSAvIDEwMFxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGluU3RvY2ssXG4gICAgICBhZmZpbGlhdGVVcmw6IGJhc2VBZmZpbGlhdGVVcmwucmVwbGFjZShcImV4YW1wbGUuY29tXCIsIGAke3JldGFpbGVyLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCBcIlwiKX0uY29tYCksXG4gICAgICBsYXN0VXBkYXRlZDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgIH07XG4gIH0pLnNvcnQoKGEsIGIpID0+IGEucHJpY2UgLSBiLnByaWNlKTsgLy8gU29ydCBieSBwcmljZSBhc2NlbmRpbmdcbn1cblxuIl0sIm5hbWVzIjpbImdldFByaWNpbmdIaXN0b3J5IiwicGFydElkIiwiYmFzZVByaWNlIiwiZGF5cyIsImhpc3RvcnkiLCJ0b2RheSIsIkRhdGUiLCJpIiwiZGF0ZSIsInNldERhdGUiLCJnZXREYXRlIiwidmFyaWF0aW9uIiwiTWF0aCIsInJhbmRvbSIsInByaWNlIiwicHVzaCIsInRvSVNPU3RyaW5nIiwic3BsaXQiLCJyb3VuZCIsImdldFJldGFpbGVyT2ZmZXJzIiwiYmFzZUFmZmlsaWF0ZVVybCIsInJldGFpbGVycyIsIm1hcCIsInJldGFpbGVyIiwiaW5kZXgiLCJwcmljZVZhcmlhdGlvbiIsImhhc1NhbGUiLCJvcmlnaW5hbFByaWNlIiwidW5kZWZpbmVkIiwiaW5TdG9jayIsImlkIiwicmV0YWlsZXJOYW1lIiwiYWZmaWxpYXRlVXJsIiwicmVwbGFjZSIsInRvTG93ZXJDYXNlIiwibGFzdFVwZGF0ZWQiLCJzb3J0IiwiYSIsImIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/data.ts\n")); + +/***/ }), + +/***/ "(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx": +/*!*******************************************************!*\ + !*** ./app/gunbuilder/[categoryId]/[partId]/page.tsx ***! + \*******************************************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ PartDetailPage; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/navigation */ \"(app-pages-browser)/./node_modules/next/dist/api/navigation.js\");\n/* harmony import */ var _data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/data/gunbuilderParts */ \"(app-pages-browser)/./data/gunbuilderParts.ts\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./data */ \"(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/data.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\n\nfunction PartDetailPage() {\n _s();\n const params = (0,next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams)();\n const categoryId = params.categoryId;\n const partId = params.partId;\n const category = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.CATEGORIES.find((c)=>c.id === categoryId), [\n categoryId\n ]);\n const part = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>_data_gunbuilderParts__WEBPACK_IMPORTED_MODULE_4__.PARTS.find((p)=>p.id === partId && p.categoryId === categoryId), [\n partId,\n categoryId\n ]);\n // Get pricing history and retailer offers\n // TODO: Replace with API calls when endpoints are ready\n const pricingHistory = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>part ? (0,_data__WEBPACK_IMPORTED_MODULE_5__.getPricingHistory)(part.id, part.price) : [], [\n part\n ]);\n const retailerOffers = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>part ? (0,_data__WEBPACK_IMPORTED_MODULE_5__.getRetailerOffers)(part.id, part.price, part.affiliateUrl) : [], [\n part\n ]);\n if (!category || !part) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-2xl font-semibold text-zinc-50 mb-4\",\n children: \"Product Not Found\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 47,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-amber-300 hover:text-amber-200 underline\",\n children: \"Return to Gunbuilder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 50,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 46,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 45,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 44,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen bg-black text-zinc-50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto max-w-6xl px-4 py-6 lg:py-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder/\".concat(categoryId),\n className: \"text-xs text-zinc-400 hover:text-zinc-300 mb-4 inline-block\",\n children: [\n \"← Back to \",\n category.name\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 67,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-500\",\n children: \"Shadow Standard\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 74,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"mt-1 text-2xl md:text-3xl font-semibold tracking-tight\",\n children: [\n part.brand,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-300\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 78,\n columnNumber: 28\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 77,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"mt-2 text-sm text-zinc-400 max-w-xl\",\n children: [\n category.name,\n \" • Product Details\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 80,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 73,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 66,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-4 lg:grid-cols-[2fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/60 p-4 md:p-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid gap-6 md:grid-cols-[1fr,1fr]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs font-semibold tracking-[0.16em] uppercase text-zinc-400 mb-2\",\n children: \"Product Information\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 93,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Brand\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 98,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.brand\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 101,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 97,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Model\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 106,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: part.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 109,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 105,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Category\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 114,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-lg font-semibold text-zinc-50\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 117,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 113,\n columnNumber: 19\n }, this),\n part.notes && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide mb-1\",\n children: \"Details\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 123,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-zinc-300 leading-relaxed\",\n children: part.notes\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 126,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 122,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 96,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 92,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full aspect-square max-w-md rounded-md border border-zinc-700 bg-zinc-900/50 flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center p-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-16 h-16 mx-auto text-zinc-600 mb-2\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 1.5,\n d: \"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 145,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 138,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500 uppercase tracking-wide\",\n children: \"Product Image\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 152,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 137,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 136,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 135,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 90,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 89,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"rounded-lg border border-zinc-800 bg-zinc-950/80 p-4 md:p-6 flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-zinc-400 mb-2\",\n children: \"Price\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 164,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-3xl font-semibold text-amber-300\",\n children: [\n \"$\",\n part.price.toFixed(2)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 165,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 163,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-auto space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n href: \"/gunbuilder?select=\".concat(categoryId, \":\").concat(part.id),\n className: \"block w-full rounded-md border border-amber-400/60 bg-amber-400/10 px-4 py-3 text-sm font-medium text-amber-200 hover:bg-amber-400/15 text-center transition-colors\",\n children: \"Add to Build\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 171,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: part.affiliateUrl,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"block w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-4 py-3 text-sm font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 text-center transition-colors\",\n children: \"View Retailer\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 177,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 170,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 162,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 87,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 64,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx\",\n lineNumber: 63,\n columnNumber: 5\n }, this);\n}\n_s(PartDetailPage, \"ZpwVUtr8mmMYWPNCCmGSoaSl2YI=\", false, function() {\n return [\n next_navigation__WEBPACK_IMPORTED_MODULE_3__.useParams\n ];\n});\n_c = PartDetailPage;\nvar _c;\n$RefreshReg$(_c, \"PartDetailPage\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9ndW5idWlsZGVyL1tjYXRlZ29yeUlkXS9bcGFydElkXS9wYWdlLnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBRWdDO0FBQ0g7QUFDZTtBQUNlO0FBRUc7QUFJL0MsU0FBU087O0lBQ3RCLE1BQU1DLFNBQVNOLDBEQUFTQTtJQUN4QixNQUFNTyxhQUFhRCxPQUFPQyxVQUFVO0lBQ3BDLE1BQU1DLFNBQVNGLE9BQU9FLE1BQU07SUFFNUIsTUFBTUMsV0FBV1gsOENBQU9BLENBQ3RCLElBQU1HLDZEQUFVQSxDQUFDUyxJQUFJLENBQUMsQ0FBQ0MsSUFBTUEsRUFBRUMsRUFBRSxLQUFLTCxhQUN0QztRQUFDQTtLQUFXO0lBR2QsTUFBTU0sT0FBT2YsOENBQU9BLENBQ2xCLElBQU1JLHdEQUFLQSxDQUFDUSxJQUFJLENBQUMsQ0FBQ0ksSUFBTUEsRUFBRUYsRUFBRSxLQUFLSixVQUFVTSxFQUFFUCxVQUFVLEtBQUtBLGFBQzVEO1FBQUNDO1FBQVFEO0tBQVc7SUFHdEIsMENBQTBDO0lBQzFDLHdEQUF3RDtJQUN4RCxNQUFNUSxpQkFBaUJqQiw4Q0FBT0EsQ0FDNUIsSUFBT2UsT0FBT1Ysd0RBQWlCQSxDQUFDVSxLQUFLRCxFQUFFLEVBQUVDLEtBQUtHLEtBQUssSUFBSSxFQUFFLEVBQ3pEO1FBQUNIO0tBQUs7SUFHUixNQUFNSSxpQkFBaUJuQiw4Q0FBT0EsQ0FDNUIsSUFDRWUsT0FDSVQsd0RBQWlCQSxDQUFDUyxLQUFLRCxFQUFFLEVBQUVDLEtBQUtHLEtBQUssRUFBRUgsS0FBS0ssWUFBWSxJQUN4RCxFQUFFLEVBQ1I7UUFBQ0w7S0FBSztJQUdSLElBQUksQ0FBQ0osWUFBWSxDQUFDSSxNQUFNO1FBQ3RCLHFCQUNFLDhEQUFDTTtZQUFLQyxXQUFVO3NCQUNkLDRFQUFDQztnQkFBSUQsV0FBVTswQkFDYiw0RUFBQ0M7b0JBQUlELFdBQVU7O3NDQUNiLDhEQUFDRTs0QkFBR0YsV0FBVTtzQ0FBMkM7Ozs7OztzQ0FHekQsOERBQUNyQixpREFBSUE7NEJBQ0h3QixNQUFLOzRCQUNMSCxXQUFVO3NDQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBT1g7SUFFQSxxQkFDRSw4REFBQ0Q7UUFBS0MsV0FBVTtrQkFDZCw0RUFBQ0M7WUFBSUQsV0FBVTs7OEJBRWIsOERBQUNJO29CQUFPSixXQUFVOztzQ0FDaEIsOERBQUNyQixpREFBSUE7NEJBQ0h3QixNQUFNLGVBQTBCLE9BQVhoQjs0QkFDckJhLFdBQVU7O2dDQUNYO2dDQUNZWCxTQUFTZ0IsSUFBSTs7Ozs7OztzQ0FFMUIsOERBQUNKOzs4Q0FDQyw4REFBQ1A7b0NBQUVNLFdBQVU7OENBQWlFOzs7Ozs7OENBRzlFLDhEQUFDRTtvQ0FBR0YsV0FBVTs7d0NBQ1hQLEtBQUthLEtBQUs7d0NBQUM7c0RBQUMsOERBQUNDOzRDQUFLUCxXQUFVO3NEQUFrQlAsS0FBS1ksSUFBSTs7Ozs7Ozs7Ozs7OzhDQUUxRCw4REFBQ1g7b0NBQUVNLFdBQVU7O3dDQUNWWCxTQUFTZ0IsSUFBSTt3Q0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4QkFNckIsOERBQUNKO29CQUFJRCxXQUFVOztzQ0FFYiw4REFBQ1E7NEJBQVFSLFdBQVU7c0NBQ2pCLDRFQUFDQztnQ0FBSUQsV0FBVTs7a0RBRWIsOERBQUNDOzswREFDQyw4REFBQ0E7Z0RBQUlELFdBQVU7MERBQXVFOzs7Ozs7MERBR3RGLDhEQUFDQztnREFBSUQsV0FBVTs7a0VBQ2IsOERBQUNDOzswRUFDQyw4REFBQ0E7Z0VBQUlELFdBQVU7MEVBQXFEOzs7Ozs7MEVBR3BFLDhEQUFDQztnRUFBSUQsV0FBVTswRUFDWlAsS0FBS2EsS0FBSzs7Ozs7Ozs7Ozs7O2tFQUdmLDhEQUFDTDs7MEVBQ0MsOERBQUNBO2dFQUFJRCxXQUFVOzBFQUFxRDs7Ozs7OzBFQUdwRSw4REFBQ0M7Z0VBQUlELFdBQVU7MEVBQ1pQLEtBQUtZLElBQUk7Ozs7Ozs7Ozs7OztrRUFHZCw4REFBQ0o7OzBFQUNDLDhEQUFDQTtnRUFBSUQsV0FBVTswRUFBcUQ7Ozs7OzswRUFHcEUsOERBQUNDO2dFQUFJRCxXQUFVOzBFQUNaWCxTQUFTZ0IsSUFBSTs7Ozs7Ozs7Ozs7O29EQUdqQlosS0FBS2dCLEtBQUssa0JBQ1QsOERBQUNSOzswRUFDQyw4REFBQ0E7Z0VBQUlELFdBQVU7MEVBQXFEOzs7Ozs7MEVBR3BFLDhEQUFDQztnRUFBSUQsV0FBVTswRUFDWlAsS0FBS2dCLEtBQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrREFRckIsOERBQUNSO3dDQUFJRCxXQUFVO2tEQUNiLDRFQUFDQzs0Q0FBSUQsV0FBVTtzREFDYiw0RUFBQ0M7Z0RBQUlELFdBQVU7O2tFQUNiLDhEQUFDVTt3REFDQ1YsV0FBVTt3REFDVlcsTUFBSzt3REFDTEMsUUFBTzt3REFDUEMsU0FBUTt3REFDUkMsT0FBTTtrRUFFTiw0RUFBQ0M7NERBQ0NDLGVBQWM7NERBQ2RDLGdCQUFlOzREQUNmQyxhQUFhOzREQUNiQyxHQUFFOzs7Ozs7Ozs7OztrRUFHTiw4REFBQ3pCO3dEQUFFTSxXQUFVO2tFQUFnRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NDQVV2RSw4REFBQ29COzRCQUFNcEIsV0FBVTs7OENBQ2YsOERBQUNDO29DQUFJRCxXQUFVOztzREFDYiw4REFBQ0M7NENBQUlELFdBQVU7c0RBQTZCOzs7Ozs7c0RBQzVDLDhEQUFDQzs0Q0FBSUQsV0FBVTs7Z0RBQXdDO2dEQUNuRFAsS0FBS0csS0FBSyxDQUFDeUIsT0FBTyxDQUFDOzs7Ozs7Ozs7Ozs7OzhDQUl6Qiw4REFBQ3BCO29DQUFJRCxXQUFVOztzREFDYiw4REFBQ3JCLGlEQUFJQTs0Q0FDSHdCLE1BQU0sc0JBQW9DVixPQUFkTixZQUFXLEtBQVcsT0FBUk0sS0FBS0QsRUFBRTs0Q0FDakRRLFdBQVU7c0RBQ1g7Ozs7OztzREFHRCw4REFBQ3NCOzRDQUNDbkIsTUFBTVYsS0FBS0ssWUFBWTs0Q0FDdkJ5QixRQUFPOzRDQUNQQyxLQUFJOzRDQUNKeEIsV0FBVTtzREFDWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTZjtHQW5Md0JmOztRQUNQTCxzREFBU0E7OztLQURGSyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9hcHAvZ3VuYnVpbGRlci9bY2F0ZWdvcnlJZF0vW3BhcnRJZF0vcGFnZS50c3g/NDJjMSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xuaW1wb3J0IHsgdXNlUGFyYW1zIH0gZnJvbSBcIm5leHQvbmF2aWdhdGlvblwiO1xuaW1wb3J0IHsgQ0FURUdPUklFUywgUEFSVFMgfSBmcm9tIFwiQC9kYXRhL2d1bmJ1aWxkZXJQYXJ0c1wiO1xuaW1wb3J0IHR5cGUgeyBDYXRlZ29yeUlkIH0gZnJvbSBcIkAvdHlwZXMvZ3VuYnVpbGRlclwiO1xuaW1wb3J0IHsgZ2V0UHJpY2luZ0hpc3RvcnksIGdldFJldGFpbGVyT2ZmZXJzIH0gZnJvbSBcIi4vZGF0YVwiO1xuaW1wb3J0IHsgUHJpY2luZ0hpc3RvcnlHcmFwaCB9IGZyb20gXCJAL2NvbXBvbmVudHMvUHJpY2luZ0hpc3RvcnlHcmFwaFwiO1xuaW1wb3J0IHsgUmV0YWlsZXJzTGlzdCB9IGZyb20gXCJAL2NvbXBvbmVudHMvUmV0YWlsZXJzTGlzdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQYXJ0RGV0YWlsUGFnZSgpIHtcbiAgY29uc3QgcGFyYW1zID0gdXNlUGFyYW1zKCk7XG4gIGNvbnN0IGNhdGVnb3J5SWQgPSBwYXJhbXMuY2F0ZWdvcnlJZCBhcyBDYXRlZ29yeUlkO1xuICBjb25zdCBwYXJ0SWQgPSBwYXJhbXMucGFydElkIGFzIHN0cmluZztcblxuICBjb25zdCBjYXRlZ29yeSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gQ0FURUdPUklFUy5maW5kKChjKSA9PiBjLmlkID09PSBjYXRlZ29yeUlkKSxcbiAgICBbY2F0ZWdvcnlJZF0sXG4gICk7XG5cbiAgY29uc3QgcGFydCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gUEFSVFMuZmluZCgocCkgPT4gcC5pZCA9PT0gcGFydElkICYmIHAuY2F0ZWdvcnlJZCA9PT0gY2F0ZWdvcnlJZCksXG4gICAgW3BhcnRJZCwgY2F0ZWdvcnlJZF0sXG4gICk7XG5cbiAgLy8gR2V0IHByaWNpbmcgaGlzdG9yeSBhbmQgcmV0YWlsZXIgb2ZmZXJzXG4gIC8vIFRPRE86IFJlcGxhY2Ugd2l0aCBBUEkgY2FsbHMgd2hlbiBlbmRwb2ludHMgYXJlIHJlYWR5XG4gIGNvbnN0IHByaWNpbmdIaXN0b3J5ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAocGFydCA/IGdldFByaWNpbmdIaXN0b3J5KHBhcnQuaWQsIHBhcnQucHJpY2UpIDogW10pLFxuICAgIFtwYXJ0XSxcbiAgKTtcblxuICBjb25zdCByZXRhaWxlck9mZmVycyA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIHBhcnRcbiAgICAgICAgPyBnZXRSZXRhaWxlck9mZmVycyhwYXJ0LmlkLCBwYXJ0LnByaWNlLCBwYXJ0LmFmZmlsaWF0ZVVybClcbiAgICAgICAgOiBbXSxcbiAgICBbcGFydF0sXG4gICk7XG5cbiAgaWYgKCFjYXRlZ29yeSB8fCAhcGFydCkge1xuICAgIHJldHVybiAoXG4gICAgICA8bWFpbiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctYmxhY2sgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBtYXgtdy02eGwgcHgtNCBweS02IGxnOnB5LTEwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtMnhsIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwIG1iLTRcIj5cbiAgICAgICAgICAgICAgUHJvZHVjdCBOb3QgRm91bmRcbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBocmVmPVwiL2d1bmJ1aWxkZXJcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWFtYmVyLTMwMCBob3Zlcjp0ZXh0LWFtYmVyLTIwMCB1bmRlcmxpbmVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSZXR1cm4gdG8gR3VuYnVpbGRlclxuICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWFpbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8bWFpbiBjbGFzc05hbWU9XCJtaW4taC1zY3JlZW4gYmctYmxhY2sgdGV4dC16aW5jLTUwXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gbWF4LXctNnhsIHB4LTQgcHktNiBsZzpweS0xMFwiPlxuICAgICAgICB7LyogSGVhZGVyICovfVxuICAgICAgICA8aGVhZGVyIGNsYXNzTmFtZT1cIm1iLTZcIj5cbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyLyR7Y2F0ZWdvcnlJZH1gfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0zMDAgbWItNCBpbmxpbmUtYmxvY2tcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIOKGkCBCYWNrIHRvIHtjYXRlZ29yeS5uYW1lfVxuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjJlbV0gdXBwZXJjYXNlIHRleHQtemluYy01MDBcIj5cbiAgICAgICAgICAgICAgU2hhZG93IFN0YW5kYXJkXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwibXQtMSB0ZXh0LTJ4bCBtZDp0ZXh0LTN4bCBmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0XCI+XG4gICAgICAgICAgICAgIHtwYXJ0LmJyYW5kfSA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWFtYmVyLTMwMFwiPntwYXJ0Lm5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm10LTIgdGV4dC1zbSB0ZXh0LXppbmMtNDAwIG1heC13LXhsXCI+XG4gICAgICAgICAgICAgIHtjYXRlZ29yeS5uYW1lfSDigKIgUHJvZHVjdCBEZXRhaWxzXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvaGVhZGVyPlxuXG4gICAgICAgIHsvKiBQcm9kdWN0IERldGFpbHMgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBnYXAtNCBsZzpncmlkLWNvbHMtWzJmciwxZnJdXCI+XG4gICAgICAgICAgey8qIE1haW4gQ29udGVudCAqL31cbiAgICAgICAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItemluYy04MDAgYmctemluYy05NTAvNjAgcC00IG1kOnAtNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdhcC02IG1kOmdyaWQtY29scy1bMWZyLDFmcl1cIj5cbiAgICAgICAgICAgICAgey8qIFByb2R1Y3QgSW5mbyAqL31cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4xNmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTQwMCBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICBQcm9kdWN0IEluZm9ybWF0aW9uXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICBCcmFuZFxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdGV4dC16aW5jLTUwXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3BhcnQuYnJhbmR9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgTW9kZWxcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSBtYi0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIHRleHQtemluYy01MFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtjYXRlZ29yeS5uYW1lfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAge3BhcnQubm90ZXMgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlIG1iLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIERldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTMwMCBsZWFkaW5nLXJlbGF4ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtwYXJ0Lm5vdGVzfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIHsvKiBQcm9kdWN0IEltYWdlICovfVxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtc3RhcnQganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBhc3BlY3Qtc3F1YXJlIG1heC13LW1kIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC81MCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBwLThcIj5cbiAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInctMTYgaC0xNiBteC1hdXRvIHRleHQtemluYy02MDAgbWItMlwiXG4gICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezEuNX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNCAxNmw0LjU4Ni00LjU4NmEyIDIgMCAwMTIuODI4IDBMMTYgMTZtLTItMmwxLjU4Ni0xLjU4NmEyIDIgMCAwMTIuODI4IDBMMjAgMTRtLTYtNmguMDFNNiAyMGgxMmEyIDIgMCAwMDItMlY2YTIgMiAwIDAwLTItMkg2YTIgMiAwIDAwLTIgMnYxMmEyIDIgMCAwMDIgMnpcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy01MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICBQcm9kdWN0IEltYWdlXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICAgIHsvKiBTaWRlYmFyICovfVxuICAgICAgICAgIDxhc2lkZSBjbGFzc05hbWU9XCJyb3VuZGVkLWxnIGJvcmRlciBib3JkZXItemluYy04MDAgYmctemluYy05NTAvODAgcC00IG1kOnAtNiBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy00MDAgbWItMlwiPlByaWNlPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC0zeGwgZm9udC1zZW1pYm9sZCB0ZXh0LWFtYmVyLTMwMFwiPlxuICAgICAgICAgICAgICAgICR7cGFydC5wcmljZS50b0ZpeGVkKDIpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LWF1dG8gc3BhY2UteS0zXCI+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyP3NlbGVjdD0ke2NhdGVnb3J5SWR9OiR7cGFydC5pZH1gfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYW1iZXItNDAwLzYwIGJnLWFtYmVyLTQwMC8xMCBweC00IHB5LTMgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWFtYmVyLTIwMCBob3ZlcjpiZy1hbWJlci00MDAvMTUgdGV4dC1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQWRkIHRvIEJ1aWxkXG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBocmVmPXtwYXJ0LmFmZmlsaWF0ZVVybH1cbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2NrIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05MDAvNTAgcHgtNCBweS0zIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy02MDAgdGV4dC1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgVmlldyBSZXRhaWxlclxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2FzaWRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWFpbj5cbiAgKTtcbn1cblxuIl0sIm5hbWVzIjpbInVzZU1lbW8iLCJMaW5rIiwidXNlUGFyYW1zIiwiQ0FURUdPUklFUyIsIlBBUlRTIiwiZ2V0UHJpY2luZ0hpc3RvcnkiLCJnZXRSZXRhaWxlck9mZmVycyIsIlBhcnREZXRhaWxQYWdlIiwicGFyYW1zIiwiY2F0ZWdvcnlJZCIsInBhcnRJZCIsImNhdGVnb3J5IiwiZmluZCIsImMiLCJpZCIsInBhcnQiLCJwIiwicHJpY2luZ0hpc3RvcnkiLCJwcmljZSIsInJldGFpbGVyT2ZmZXJzIiwiYWZmaWxpYXRlVXJsIiwibWFpbiIsImNsYXNzTmFtZSIsImRpdiIsImgxIiwiaHJlZiIsImhlYWRlciIsIm5hbWUiLCJicmFuZCIsInNwYW4iLCJzZWN0aW9uIiwibm90ZXMiLCJzdmciLCJmaWxsIiwic3Ryb2tlIiwidmlld0JveCIsInhtbG5zIiwicGF0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsInN0cm9rZVdpZHRoIiwiZCIsImFzaWRlIiwidG9GaXhlZCIsImEiLCJ0YXJnZXQiLCJyZWwiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/gunbuilder/[categoryId]/[partId]/page.tsx\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.44b2c6af73f059b8.hot-update.js b/.next/static/webpack/app/layout.44b2c6af73f059b8.hot-update.js new file mode 100644 index 0000000..7e5e630 --- /dev/null +++ b/.next/static/webpack/app/layout.44b2c6af73f059b8.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"1f8d993f3235\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCIxZjhkOTkzZjMyMzVcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.469afc16cd5c06dc.hot-update.js b/.next/static/webpack/app/layout.469afc16cd5c06dc.hot-update.js new file mode 100644 index 0000000..69c31c5 --- /dev/null +++ b/.next/static/webpack/app/layout.469afc16cd5c06dc.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"f26df888f4cd\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJmMjZkZjg4OGY0Y2RcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.52bc31ac991d7066.hot-update.js b/.next/static/webpack/app/layout.52bc31ac991d7066.hot-update.js new file mode 100644 index 0000000..8dc8d8b --- /dev/null +++ b/.next/static/webpack/app/layout.52bc31ac991d7066.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"0211aad8a3a7\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCIwMjExYWFkOGEzYTdcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.601796416dea5810.hot-update.js b/.next/static/webpack/app/layout.601796416dea5810.hot-update.js new file mode 100644 index 0000000..70f581f --- /dev/null +++ b/.next/static/webpack/app/layout.601796416dea5810.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"943ca02dbd60\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI5NDNjYTAyZGJkNjBcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.7bcd31a758e98304.hot-update.js b/.next/static/webpack/app/layout.7bcd31a758e98304.hot-update.js new file mode 100644 index 0000000..9270a72 --- /dev/null +++ b/.next/static/webpack/app/layout.7bcd31a758e98304.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"432f48a2a0b9\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI0MzJmNDhhMmEwYjlcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.7fb14897109b9564.hot-update.js b/.next/static/webpack/app/layout.7fb14897109b9564.hot-update.js new file mode 100644 index 0000000..c056212 --- /dev/null +++ b/.next/static/webpack/app/layout.7fb14897109b9564.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"4fe89e81a7e8\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI0ZmU4OWU4MWE3ZThcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.87786bf095dfd3fe.hot-update.js b/.next/static/webpack/app/layout.87786bf095dfd3fe.hot-update.js new file mode 100644 index 0000000..ef23cbf --- /dev/null +++ b/.next/static/webpack/app/layout.87786bf095dfd3fe.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"5b643262de82\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI1YjY0MzI2MmRlODJcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.b9562c6bb83d9ef0.hot-update.js b/.next/static/webpack/app/layout.b9562c6bb83d9ef0.hot-update.js new file mode 100644 index 0000000..9d26234 --- /dev/null +++ b/.next/static/webpack/app/layout.b9562c6bb83d9ef0.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"faf111c78721\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJmYWYxMTFjNzg3MjFcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.c5fccd017612ecaa.hot-update.js b/.next/static/webpack/app/layout.c5fccd017612ecaa.hot-update.js new file mode 100644 index 0000000..41eec00 --- /dev/null +++ b/.next/static/webpack/app/layout.c5fccd017612ecaa.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"f6466cc2ef9a\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJmNjQ2NmNjMmVmOWFcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.cbda6c3666c270dc.hot-update.js b/.next/static/webpack/app/layout.cbda6c3666c270dc.hot-update.js new file mode 100644 index 0000000..b76df5d --- /dev/null +++ b/.next/static/webpack/app/layout.cbda6c3666c270dc.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"549097158ba0\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI1NDkwOTcxNThiYTBcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.d42e0c8c45a81c3a.hot-update.js b/.next/static/webpack/app/layout.d42e0c8c45a81c3a.hot-update.js new file mode 100644 index 0000000..5eb7675 --- /dev/null +++ b/.next/static/webpack/app/layout.d42e0c8c45a81c3a.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"5b81591ded17\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCI1YjgxNTkxZGVkMTdcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.e7efc7da54c7e7bb.hot-update.js b/.next/static/webpack/app/layout.e7efc7da54c7e7bb.hot-update.js new file mode 100644 index 0000000..854ea76 --- /dev/null +++ b/.next/static/webpack/app/layout.e7efc7da54c7e7bb.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"ab4867089143\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJhYjQ4NjcwODkxNDNcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.f661c5629f8adb93.hot-update.js b/.next/static/webpack/app/layout.f661c5629f8adb93.hot-update.js new file mode 100644 index 0000000..984511b --- /dev/null +++ b/.next/static/webpack/app/layout.f661c5629f8adb93.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"fab2e0740501\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJmYWIyZTA3NDA1MDFcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/app/layout.fae79994cbbcace2.hot-update.js b/.next/static/webpack/app/layout.fae79994cbbcace2.hot-update.js new file mode 100644 index 0000000..0a52532 --- /dev/null +++ b/.next/static/webpack/app/layout.fae79994cbbcace2.hot-update.js @@ -0,0 +1,22 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./app/globals.css": +/*!*************************!*\ + !*** ./app/globals.css ***! + \*************************/ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"bca9b62cbb63\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJiY2E5YjYyY2JiNjNcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/.next/static/webpack/b9562c6bb83d9ef0.webpack.hot-update.json b/.next/static/webpack/b9562c6bb83d9ef0.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/.next/static/webpack/b9562c6bb83d9ef0.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/c5fccd017612ecaa.webpack.hot-update.json b/.next/static/webpack/c5fccd017612ecaa.webpack.hot-update.json new file mode 100644 index 0000000..5e3f6af --- /dev/null +++ b/.next/static/webpack/c5fccd017612ecaa.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","app/gunbuilder/[categoryId]/[partId]/page","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/cbda6c3666c270dc.webpack.hot-update.json b/.next/static/webpack/cbda6c3666c270dc.webpack.hot-update.json new file mode 100644 index 0000000..7b48c60 --- /dev/null +++ b/.next/static/webpack/cbda6c3666c270dc.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","app/gunbuilder/[categoryId]/[partId]/page","webpack"],"r":[],"m":["(app-pages-browser)/./components/PricingHistoryGraph.tsx"]} \ No newline at end of file diff --git a/.next/static/webpack/d42e0c8c45a81c3a.webpack.hot-update.json b/.next/static/webpack/d42e0c8c45a81c3a.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/.next/static/webpack/d42e0c8c45a81c3a.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/e7efc7da54c7e7bb.webpack.hot-update.json b/.next/static/webpack/e7efc7da54c7e7bb.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/.next/static/webpack/e7efc7da54c7e7bb.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/f661c5629f8adb93.webpack.hot-update.json b/.next/static/webpack/f661c5629f8adb93.webpack.hot-update.json new file mode 100644 index 0000000..5c82546 --- /dev/null +++ b/.next/static/webpack/f661c5629f8adb93.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/fae79994cbbcace2.webpack.hot-update.json b/.next/static/webpack/fae79994cbbcace2.webpack.hot-update.json new file mode 100644 index 0000000..5e3f6af --- /dev/null +++ b/.next/static/webpack/fae79994cbbcace2.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/layout","app/gunbuilder/[categoryId]/[partId]/page","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/webpack.44b2c6af73f059b8.hot-update.js b/.next/static/webpack/webpack.44b2c6af73f059b8.hot-update.js new file mode 100644 index 0000000..2dd3134 --- /dev/null +++ b/.next/static/webpack/webpack.44b2c6af73f059b8.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "f661c5629f8adb93"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.469afc16cd5c06dc.hot-update.js b/.next/static/webpack/webpack.469afc16cd5c06dc.hot-update.js new file mode 100644 index 0000000..e60d903 --- /dev/null +++ b/.next/static/webpack/webpack.469afc16cd5c06dc.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "7bcd31a758e98304"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.52bc31ac991d7066.hot-update.js b/.next/static/webpack/webpack.52bc31ac991d7066.hot-update.js new file mode 100644 index 0000000..ea41f01 --- /dev/null +++ b/.next/static/webpack/webpack.52bc31ac991d7066.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "86af3bcc66ce70ea"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.601796416dea5810.hot-update.js b/.next/static/webpack/webpack.601796416dea5810.hot-update.js new file mode 100644 index 0000000..a160b46 --- /dev/null +++ b/.next/static/webpack/webpack.601796416dea5810.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "7fb14897109b9564"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.7bcd31a758e98304.hot-update.js b/.next/static/webpack/webpack.7bcd31a758e98304.hot-update.js new file mode 100644 index 0000000..8b090cf --- /dev/null +++ b/.next/static/webpack/webpack.7bcd31a758e98304.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "601796416dea5810"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.7fb14897109b9564.hot-update.js b/.next/static/webpack/webpack.7fb14897109b9564.hot-update.js new file mode 100644 index 0000000..1d19364 --- /dev/null +++ b/.next/static/webpack/webpack.7fb14897109b9564.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "c5fccd017612ecaa"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.87786bf095dfd3fe.hot-update.js b/.next/static/webpack/webpack.87786bf095dfd3fe.hot-update.js new file mode 100644 index 0000000..1ed7d35 --- /dev/null +++ b/.next/static/webpack/webpack.87786bf095dfd3fe.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "52bc31ac991d7066"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.b9562c6bb83d9ef0.hot-update.js b/.next/static/webpack/webpack.b9562c6bb83d9ef0.hot-update.js new file mode 100644 index 0000000..041bfc4 --- /dev/null +++ b/.next/static/webpack/webpack.b9562c6bb83d9ef0.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "d42e0c8c45a81c3a"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.c5fccd017612ecaa.hot-update.js b/.next/static/webpack/webpack.c5fccd017612ecaa.hot-update.js new file mode 100644 index 0000000..0d16e97 --- /dev/null +++ b/.next/static/webpack/webpack.c5fccd017612ecaa.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "fae79994cbbcace2"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.cbda6c3666c270dc.hot-update.js b/.next/static/webpack/webpack.cbda6c3666c270dc.hot-update.js new file mode 100644 index 0000000..660e3bb --- /dev/null +++ b/.next/static/webpack/webpack.cbda6c3666c270dc.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "87786bf095dfd3fe"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.d42e0c8c45a81c3a.hot-update.js b/.next/static/webpack/webpack.d42e0c8c45a81c3a.hot-update.js new file mode 100644 index 0000000..a2ce433 --- /dev/null +++ b/.next/static/webpack/webpack.d42e0c8c45a81c3a.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "e7efc7da54c7e7bb"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.e7efc7da54c7e7bb.hot-update.js b/.next/static/webpack/webpack.e7efc7da54c7e7bb.hot-update.js new file mode 100644 index 0000000..7ff5ac0 --- /dev/null +++ b/.next/static/webpack/webpack.e7efc7da54c7e7bb.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "469afc16cd5c06dc"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.f661c5629f8adb93.hot-update.js b/.next/static/webpack/webpack.f661c5629f8adb93.hot-update.js new file mode 100644 index 0000000..548744d --- /dev/null +++ b/.next/static/webpack/webpack.f661c5629f8adb93.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "cbda6c3666c270dc"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/static/webpack/webpack.fae79994cbbcace2.hot-update.js b/.next/static/webpack/webpack.fae79994cbbcace2.hot-update.js new file mode 100644 index 0000000..25825bb --- /dev/null +++ b/.next/static/webpack/webpack.fae79994cbbcace2.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "44b2c6af73f059b8"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/.next/trace b/.next/trace index 4b51aa7..dfe3b7b 100644 --- a/.next/trace +++ b/.next/trace @@ -48,3 +48,17 @@ [{"name":"client-success","duration":1,"timestamp":474989271579,"id":3831,"parentId":3,"tags":{},"startTime":1764107634358,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":1,"timestamp":474989272762,"id":3833,"parentId":3,"tags":{},"startTime":1764107634359,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":474989272780,"id":3834,"parentId":3,"tags":{},"startTime":1764107634359,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":92000,"timestamp":474989183767,"id":3837,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107634366,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":9491,"timestamp":474989272055,"id":3832,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107634358,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474989281557,"id":3838,"parentId":3832,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"580059136","memory.heapUsed":"222366600","memory.heapTotal":"244203520"},"startTime":1764107634368,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":11627,"timestamp":474989274200,"id":3835,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","isTurbopack":false},"startTime":1764107634360,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474989285849,"id":3839,"parentId":3835,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","memory.rss":"580304896","memory.heapUsed":"223710032","memory.heapTotal":"245235712"},"startTime":1764107634372,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":102000,"timestamp":474989184051,"id":3840,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/[categoryId]/page.tsx"],"page":"/gunbuilder/build","isPageHidden":true},"startTime":1764107634375,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":14649,"timestamp":474989275596,"id":3836,"tags":{"url":"/gunbuilder/lower?_rsc=z5mrr","isTurbopack":false},"startTime":1764107634362,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":474989290258,"id":3841,"parentId":3836,"tags":{"url":"/gunbuilder/lower?_rsc=z5mrr","memory.rss":"580517888","memory.heapUsed":"225014400","memory.heapTotal":"246235136"},"startTime":1764107634376,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":111000,"timestamp":474989183605,"id":3842,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/[categoryId]/page.tsx"],"page":"/gunbuilder/lower","isPageHidden":true},"startTime":1764107634381,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":10287,"timestamp":475003547408,"id":3843,"tags":{"url":"/gunbuilder?_rsc=x5p1f","isTurbopack":false},"startTime":1764107648633,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":2,"timestamp":475003557766,"id":3844,"parentId":3843,"tags":{"url":"/gunbuilder?_rsc=x5p1f","memory.rss":"573882368","memory.heapUsed":"226128160","memory.heapTotal":"247283712"},"startTime":1764107648644,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6235,"timestamp":475004853971,"id":3856,"parentId":3848,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6257,"timestamp":475004853972,"id":3857,"parentId":3848,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6626,"timestamp":475004853900,"id":3849,"parentId":3848,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7331,"timestamp":475004853967,"id":3854,"parentId":3848,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8270,"timestamp":475004853962,"id":3851,"parentId":3848,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2840,"timestamp":475004859506,"id":3861,"parentId":3860,"tags":{},"startTime":1764107649946,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2918,"timestamp":475004859429,"id":3860,"parentId":3859,"tags":{},"startTime":1764107649945,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":7008,"timestamp":475004859321,"id":3859,"parentId":3847,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx","layer":"app-pages-browser"},"startTime":1764107649945,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12686,"timestamp":475004853965,"id":3853,"parentId":3848,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":5167,"timestamp":475004861553,"id":3863,"parentId":3862,"tags":{},"startTime":1764107649948,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":14725,"timestamp":475004853969,"id":3855,"parentId":3848,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":14878,"timestamp":475004853958,"id":3850,"parentId":3848,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":10233,"timestamp":475004866743,"id":3865,"parentId":3864,"tags":{},"startTime":1764107649953,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":10351,"timestamp":475004866733,"id":3864,"parentId":3862,"tags":{},"startTime":1764107649953,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":1627,"timestamp":475004877100,"id":3866,"parentId":3862,"tags":{"astUsed":"true"},"startTime":1764107649963,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":17956,"timestamp":475004861433,"id":3862,"parentId":3858,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107649948,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":22026,"timestamp":475004859026,"id":3858,"parentId":3847,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107649945,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":13,"timestamp":475004881146,"id":3867,"parentId":3858,"tags":{},"startTime":1764107649967,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":27218,"timestamp":475004853963,"id":3852,"parentId":3848,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":27536,"timestamp":475004853658,"id":3848,"parentId":3847,"tags":{},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":872,"timestamp":475004882140,"id":3869,"parentId":3868,"tags":{},"startTime":1764107649968,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":475004883022,"id":3871,"parentId":3868,"tags":{},"startTime":1764107649969,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":21,"timestamp":475004883030,"id":3872,"parentId":3868,"tags":{},"startTime":1764107649969,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":475004883058,"id":3873,"parentId":3868,"tags":{},"startTime":1764107649969,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":475004883067,"id":3874,"parentId":3868,"tags":{},"startTime":1764107649969,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":210,"timestamp":475004883019,"id":3870,"parentId":3868,"tags":{},"startTime":1764107649969,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":212,"timestamp":475004883684,"id":3875,"parentId":3868,"tags":{},"startTime":1764107649970,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":465,"timestamp":475004883900,"id":3876,"parentId":3868,"tags":{},"startTime":1764107649970,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1640,"timestamp":475004884907,"id":3877,"parentId":3868,"tags":{},"startTime":1764107649971,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":67,"timestamp":475004886547,"id":3878,"parentId":3868,"tags":{},"startTime":1764107649973,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":27,"timestamp":475004886608,"id":3879,"parentId":3868,"tags":{},"startTime":1764107649973,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1415,"timestamp":475004886638,"id":3880,"parentId":3868,"tags":{},"startTime":1764107649973,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":30,"timestamp":475004888457,"id":3882,"parentId":3847,"tags":{},"startTime":1764107649975,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":68,"timestamp":475004888423,"id":3881,"parentId":3847,"tags":{},"startTime":1764107649974,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7371,"timestamp":475004881852,"id":3868,"parentId":3847,"tags":{},"startTime":1764107649968,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":35806,"timestamp":475004853436,"id":3847,"parentId":3845,"tags":{"name":"client"},"startTime":1764107649940,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2147,"timestamp":475004889250,"id":3883,"parentId":3845,"tags":{},"startTime":1764107649975,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":45699,"timestamp":475004846103,"id":3845,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/page.tsx"},"startTime":1764107649932,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":10,"timestamp":475004896037,"id":3886,"parentId":3,"tags":{},"startTime":1764107649982,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475004896091,"id":3887,"parentId":3,"tags":{},"startTime":1764107649982,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475004896103,"id":3888,"parentId":3,"tags":{},"startTime":1764107649982,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":55000,"timestamp":475004846944,"id":3894,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107649988,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":55000,"timestamp":475004847070,"id":3895,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder/build","isPageHidden":true},"startTime":1764107649988,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":55000,"timestamp":475004846892,"id":3896,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":false},"startTime":1764107649989,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5765,"timestamp":475004897769,"id":3891,"parentId":3885,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107649984,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5771,"timestamp":475004897771,"id":3892,"parentId":3885,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107649984,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5950,"timestamp":475004897773,"id":3893,"parentId":3885,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107649984,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6125,"timestamp":475004897741,"id":3889,"parentId":3885,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107649984,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":826,"timestamp":475004903184,"id":3899,"parentId":3898,"tags":{},"startTime":1764107649989,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":891,"timestamp":475004903119,"id":3898,"parentId":3897,"tags":{},"startTime":1764107649989,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":1552,"timestamp":475004902988,"id":3897,"parentId":3884,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx","layer":"rsc"},"startTime":1764107649989,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8072,"timestamp":475004897767,"id":3890,"parentId":3885,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107649984,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1952,"timestamp":475004907673,"id":3917,"parentId":3916,"tags":{},"startTime":1764107649994,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2026,"timestamp":475004907603,"id":3916,"parentId":3915,"tags":{},"startTime":1764107649994,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":4276,"timestamp":475004907480,"id":3915,"parentId":3884,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/page.tsx","layer":"ssr"},"startTime":1764107649994,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":20824,"timestamp":475004893300,"id":3885,"parentId":3884,"tags":{},"startTime":1764107649979,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1177,"timestamp":475004915034,"id":3919,"parentId":3918,"tags":{},"startTime":1764107650001,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":475004916217,"id":3921,"parentId":3918,"tags":{},"startTime":1764107650002,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":998,"timestamp":475004916225,"id":3922,"parentId":3918,"tags":{},"startTime":1764107650002,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":475004917229,"id":3923,"parentId":3918,"tags":{},"startTime":1764107650003,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":475004917236,"id":3924,"parentId":3918,"tags":{},"startTime":1764107650003,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1201,"timestamp":475004916215,"id":3920,"parentId":3918,"tags":{},"startTime":1764107650002,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":150,"timestamp":475004917793,"id":3925,"parentId":3918,"tags":{},"startTime":1764107650004,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":284,"timestamp":475004917947,"id":3926,"parentId":3918,"tags":{},"startTime":1764107650004,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":364,"timestamp":475004918530,"id":3927,"parentId":3918,"tags":{},"startTime":1764107650005,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":25,"timestamp":475004918894,"id":3928,"parentId":3918,"tags":{},"startTime":1764107650005,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":16,"timestamp":475004918917,"id":3929,"parentId":3918,"tags":{},"startTime":1764107650005,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":74,"timestamp":475004918936,"id":3930,"parentId":3918,"tags":{},"startTime":1764107650005,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":4867,"timestamp":475004914861,"id":3918,"parentId":3884,"tags":{},"startTime":1764107650001,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":28068,"timestamp":475004893127,"id":3884,"parentId":3846,"tags":{"name":"server"},"startTime":1764107649979,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1103,"timestamp":475004921204,"id":3931,"parentId":3846,"tags":{},"startTime":1764107650007,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":76221,"timestamp":475004846430,"id":3846,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/page.tsx"},"startTime":1764107649932,"traceId":"e274ac96b05c42d4"}] [{"name":"handle-request","duration":9575,"timestamp":475004928275,"id":3933,"tags":{"url":"/gunbuilder?_rsc=9gfev","isTurbopack":false},"startTime":1764107650014,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475004937872,"id":3935,"parentId":3933,"tags":{"url":"/gunbuilder?_rsc=9gfev","memory.rss":"589332480","memory.heapUsed":"217720280","memory.heapTotal":"275857408"},"startTime":1764107650024,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":9836,"timestamp":475004928095,"id":3932,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107650014,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475004937935,"id":3936,"parentId":3932,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"589332480","memory.heapUsed":"217730408","memory.heapTotal":"275857408"},"startTime":1764107650024,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":11005,"timestamp":475004928305,"id":3934,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","isTurbopack":false},"startTime":1764107650014,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475004939326,"id":3937,"parentId":3934,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","memory.rss":"589332480","memory.heapUsed":"217853816","memory.heapTotal":"275857408"},"startTime":1764107650025,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":12202,"timestamp":475037936813,"id":3938,"tags":{"url":"/gunbuilder/upper?_rsc=1acsq","isTurbopack":false},"startTime":1764107683023,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475037949058,"id":3939,"parentId":3938,"tags":{"url":"/gunbuilder/upper?_rsc=1acsq","memory.rss":"580812800","memory.heapUsed":"219680088","memory.heapTotal":"276070400"},"startTime":1764107683035,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6225,"timestamp":475037954450,"id":3940,"tags":{"url":"/gunbuilder/upper?_rsc=17gjd","isTurbopack":false},"startTime":1764107683040,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475037960698,"id":3941,"parentId":3940,"tags":{"url":"/gunbuilder/upper?_rsc=17gjd","memory.rss":"580829184","memory.heapUsed":"220517032","memory.heapTotal":"276070400"},"startTime":1764107683047,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5398,"timestamp":475042299259,"id":3942,"tags":{"url":"/gunbuilder?select=upper%3Aupper-aero-enhanced&_rsc=1d33p","isTurbopack":false},"startTime":1764107687385,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475042304695,"id":3943,"parentId":3942,"tags":{"url":"/gunbuilder?select=upper%3Aupper-aero-enhanced&_rsc=1d33p","memory.rss":"580845568","memory.heapUsed":"221160728","memory.heapTotal":"276070400"},"startTime":1764107687391,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4462,"timestamp":475042307574,"id":3944,"tags":{"url":"/gunbuilder?select=upper%3Aupper-aero-enhanced&_rsc=1fb4y","isTurbopack":false},"startTime":1764107687394,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475042312058,"id":3945,"parentId":3944,"tags":{"url":"/gunbuilder?select=upper%3Aupper-aero-enhanced&_rsc=1fb4y","memory.rss":"580845568","memory.heapUsed":"221797024","memory.heapTotal":"276070400"},"startTime":1764107687398,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4789,"timestamp":475042331773,"id":3946,"tags":{"url":"/gunbuilder?_rsc=x5p1f","isTurbopack":false},"startTime":1764107687418,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":475042336597,"id":3947,"parentId":3946,"tags":{"url":"/gunbuilder?_rsc=x5p1f","memory.rss":"580845568","memory.heapUsed":"222429608","memory.heapTotal":"276070400"},"startTime":1764107687423,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3423,"timestamp":475078230498,"id":3958,"parentId":3951,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3438,"timestamp":475078230499,"id":3959,"parentId":3951,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3455,"timestamp":475078230500,"id":3960,"parentId":3951,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4292,"timestamp":475078230454,"id":3952,"parentId":3951,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1275,"timestamp":475078234295,"id":3964,"parentId":3963,"tags":{},"startTime":1764107723320,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1351,"timestamp":475078234221,"id":3963,"parentId":3962,"tags":{},"startTime":1764107723320,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":4897,"timestamp":475078234132,"id":3962,"parentId":3950,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx","layer":"app-pages-browser"},"startTime":1764107723320,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":9221,"timestamp":475078230491,"id":3954,"parentId":3951,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":9561,"timestamp":475078230494,"id":3956,"parentId":3951,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":4664,"timestamp":475078235513,"id":3966,"parentId":3965,"tags":{},"startTime":1764107723321,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12017,"timestamp":475078230487,"id":3953,"parentId":3951,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":11936,"timestamp":475078240209,"id":3968,"parentId":3967,"tags":{},"startTime":1764107723326,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":12215,"timestamp":475078240188,"id":3967,"parentId":3965,"tags":{},"startTime":1764107723326,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2981,"timestamp":475078252414,"id":3969,"parentId":3965,"tags":{"astUsed":"true"},"startTime":1764107723338,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":21625,"timestamp":475078235459,"id":3965,"parentId":3961,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107723321,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":33639,"timestamp":475078233306,"id":3961,"parentId":3950,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107723319,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":12,"timestamp":475078267176,"id":3970,"parentId":3961,"tags":{},"startTime":1764107723353,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":36722,"timestamp":475078230493,"id":3955,"parentId":3951,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":40343,"timestamp":475078230496,"id":3957,"parentId":3951,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":40557,"timestamp":475078230294,"id":3951,"parentId":3950,"tags":{},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":821,"timestamp":475078271757,"id":3972,"parentId":3971,"tags":{},"startTime":1764107723358,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":3,"timestamp":475078272590,"id":3974,"parentId":3971,"tags":{},"startTime":1764107723359,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":43,"timestamp":475078272638,"id":3975,"parentId":3971,"tags":{},"startTime":1764107723359,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":5,"timestamp":475078272704,"id":3976,"parentId":3971,"tags":{},"startTime":1764107723359,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":3,"timestamp":475078272732,"id":3977,"parentId":3971,"tags":{},"startTime":1764107723359,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":497,"timestamp":475078272586,"id":3973,"parentId":3971,"tags":{},"startTime":1764107723359,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":260,"timestamp":475078273648,"id":3978,"parentId":3971,"tags":{},"startTime":1764107723360,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":724,"timestamp":475078273913,"id":3979,"parentId":3971,"tags":{},"startTime":1764107723360,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1990,"timestamp":475078275277,"id":3980,"parentId":3971,"tags":{},"startTime":1764107723361,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":111,"timestamp":475078277266,"id":3981,"parentId":3971,"tags":{},"startTime":1764107723363,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":29,"timestamp":475078277372,"id":3982,"parentId":3971,"tags":{},"startTime":1764107723363,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":2127,"timestamp":475078277404,"id":3983,"parentId":3971,"tags":{},"startTime":1764107723363,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":65,"timestamp":475078280150,"id":3985,"parentId":3950,"tags":{},"startTime":1764107723366,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":96,"timestamp":475078280120,"id":3984,"parentId":3950,"tags":{},"startTime":1764107723366,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":9703,"timestamp":475078271507,"id":3971,"parentId":3950,"tags":{},"startTime":1764107723357,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":51093,"timestamp":475078230129,"id":3950,"parentId":3948,"tags":{"name":"client"},"startTime":1764107723316,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":7566,"timestamp":475078281231,"id":3986,"parentId":3948,"tags":{},"startTime":1764107723367,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":66160,"timestamp":475078223151,"id":3948,"parentId":3,"tags":{"trigger":"components/CategoryColumn.tsx"},"startTime":1764107723309,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":4,"timestamp":475078290876,"id":3989,"parentId":3,"tags":{},"startTime":1764107723377,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475078290904,"id":3990,"parentId":3,"tags":{},"startTime":1764107723377,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475078290916,"id":3991,"parentId":3,"tags":{},"startTime":1764107723377,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":73000,"timestamp":475078222973,"id":3997,"parentId":3,"tags":{"updatedModules":["[project]/components/CategoryColumn.tsx"],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107723383,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7909,"timestamp":475078292543,"id":3993,"parentId":3988,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107723379,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7912,"timestamp":475078292546,"id":3994,"parentId":3988,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107723379,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7913,"timestamp":475078292547,"id":3995,"parentId":3988,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107723379,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8232,"timestamp":475078292549,"id":3996,"parentId":3988,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107723379,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8465,"timestamp":475078292518,"id":3992,"parentId":3988,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107723378,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":78000,"timestamp":475078224154,"id":4016,"parentId":3,"tags":{"updatedModules":["[project]/components/CategoryColumn.tsx"],"page":"/gunbuilder","isPageHidden":false},"startTime":1764107723389,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2067,"timestamp":475078303067,"id":4015,"parentId":4014,"tags":{},"startTime":1764107723389,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2127,"timestamp":475078303009,"id":4014,"parentId":4013,"tags":{},"startTime":1764107723389,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":3935,"timestamp":475078302845,"id":4013,"parentId":3987,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx","layer":"ssr"},"startTime":1764107723389,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":81000,"timestamp":475078224018,"id":4017,"parentId":3,"tags":{"updatedModules":["[project]/components/CategoryColumn.tsx"],"page":"/gunbuilder/build","isPageHidden":true},"startTime":1764107723393,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":26262,"timestamp":475078290297,"id":3988,"parentId":3987,"tags":{},"startTime":1764107723376,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1388,"timestamp":475078329476,"id":4019,"parentId":4018,"tags":{},"startTime":1764107723415,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":3,"timestamp":475078330881,"id":4021,"parentId":4018,"tags":{},"startTime":1764107723417,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1125,"timestamp":475078330958,"id":4022,"parentId":4018,"tags":{},"startTime":1764107723417,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":475078332100,"id":4023,"parentId":4018,"tags":{},"startTime":1764107723418,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":475078332113,"id":4024,"parentId":4018,"tags":{},"startTime":1764107723418,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1441,"timestamp":475078330876,"id":4020,"parentId":4018,"tags":{},"startTime":1764107723417,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":154,"timestamp":475078332734,"id":4025,"parentId":4018,"tags":{},"startTime":1764107723419,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":487,"timestamp":475078332891,"id":4026,"parentId":4018,"tags":{},"startTime":1764107723419,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":726,"timestamp":475078333982,"id":4027,"parentId":4018,"tags":{},"startTime":1764107723420,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":38,"timestamp":475078334709,"id":4028,"parentId":4018,"tags":{},"startTime":1764107723421,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":26,"timestamp":475078334744,"id":4029,"parentId":4018,"tags":{},"startTime":1764107723421,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":569,"timestamp":475078334771,"id":4030,"parentId":4018,"tags":{},"startTime":1764107723421,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7080,"timestamp":475078329218,"id":4018,"parentId":3987,"tags":{},"startTime":1764107723415,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":47784,"timestamp":475078290145,"id":3987,"parentId":3949,"tags":{"name":"server"},"startTime":1764107723376,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1377,"timestamp":475078337944,"id":4031,"parentId":3949,"tags":{},"startTime":1764107723424,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":116493,"timestamp":475078223359,"id":3949,"parentId":3,"tags":{"trigger":"components/CategoryColumn.tsx"},"startTime":1764107723309,"traceId":"e274ac96b05c42d4"}] [{"name":"handle-request","duration":19169,"timestamp":475078343955,"id":4033,"tags":{"url":"/gunbuilder?_rsc=9gfev","isTurbopack":false},"startTime":1764107723430,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475078363149,"id":4035,"parentId":4033,"tags":{"url":"/gunbuilder?_rsc=9gfev","memory.rss":"536625152","memory.heapUsed":"194713712","memory.heapTotal":"220971008"},"startTime":1764107723449,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":19712,"timestamp":475078343765,"id":4032,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107723430,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475078363483,"id":4036,"parentId":4032,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"536625152","memory.heapUsed":"194871808","memory.heapTotal":"220971008"},"startTime":1764107723449,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":20716,"timestamp":475078343983,"id":4034,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","isTurbopack":false},"startTime":1764107723430,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475078364707,"id":4037,"parentId":4034,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","memory.rss":"536625152","memory.heapUsed":"194976432","memory.heapTotal":"220971008"},"startTime":1764107723451,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3395,"timestamp":475085642294,"id":4048,"parentId":4041,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3412,"timestamp":475085642296,"id":4049,"parentId":4041,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3428,"timestamp":475085642298,"id":4050,"parentId":4041,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3981,"timestamp":475085642251,"id":4042,"parentId":4041,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1559,"timestamp":475085646126,"id":4054,"parentId":4053,"tags":{},"startTime":1764107730732,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1661,"timestamp":475085646027,"id":4053,"parentId":4052,"tags":{},"startTime":1764107730732,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":4474,"timestamp":475085645928,"id":4052,"parentId":4040,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx","layer":"app-pages-browser"},"startTime":1764107730732,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8572,"timestamp":475085642286,"id":4044,"parentId":4041,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8695,"timestamp":475085642291,"id":4046,"parentId":4041,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":4177,"timestamp":475085647232,"id":4056,"parentId":4055,"tags":{},"startTime":1764107730733,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":11152,"timestamp":475085642292,"id":4047,"parentId":4041,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":11281,"timestamp":475085642282,"id":4043,"parentId":4041,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":10691,"timestamp":475085651434,"id":4058,"parentId":4057,"tags":{},"startTime":1764107730737,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":10987,"timestamp":475085651422,"id":4057,"parentId":4055,"tags":{},"startTime":1764107730737,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":3990,"timestamp":475085662433,"id":4059,"parentId":4055,"tags":{"astUsed":"true"},"startTime":1764107730748,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":21242,"timestamp":475085647163,"id":4055,"parentId":4051,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764107730733,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":25516,"timestamp":475085644971,"id":4051,"parentId":4040,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764107730731,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":9,"timestamp":475085670578,"id":4060,"parentId":4051,"tags":{},"startTime":1764107730757,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":28319,"timestamp":475085642288,"id":4045,"parentId":4041,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":28543,"timestamp":475085642073,"id":4041,"parentId":4040,"tags":{},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":764,"timestamp":475085671460,"id":4062,"parentId":4061,"tags":{},"startTime":1764107730757,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":475085672234,"id":4064,"parentId":4061,"tags":{},"startTime":1764107730758,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":22,"timestamp":475085672242,"id":4065,"parentId":4061,"tags":{},"startTime":1764107730758,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":475085672274,"id":4066,"parentId":4061,"tags":{},"startTime":1764107730758,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":475085672284,"id":4067,"parentId":4061,"tags":{},"startTime":1764107730758,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":305,"timestamp":475085672231,"id":4063,"parentId":4061,"tags":{},"startTime":1764107730758,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":203,"timestamp":475085672929,"id":4068,"parentId":4061,"tags":{},"startTime":1764107730759,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":585,"timestamp":475085673136,"id":4069,"parentId":4061,"tags":{},"startTime":1764107730759,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1615,"timestamp":475085674301,"id":4070,"parentId":4061,"tags":{},"startTime":1764107730760,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":68,"timestamp":475085675915,"id":4071,"parentId":4061,"tags":{},"startTime":1764107730762,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":30,"timestamp":475085675979,"id":4072,"parentId":4061,"tags":{},"startTime":1764107730762,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1080,"timestamp":475085676012,"id":4073,"parentId":4061,"tags":{},"startTime":1764107730762,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":29,"timestamp":475085677468,"id":4075,"parentId":4040,"tags":{},"startTime":1764107730763,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":63,"timestamp":475085677436,"id":4074,"parentId":4040,"tags":{},"startTime":1764107730763,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7054,"timestamp":475085671197,"id":4061,"parentId":4040,"tags":{},"startTime":1764107730757,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":36377,"timestamp":475085641889,"id":4040,"parentId":4038,"tags":{"name":"client"},"startTime":1764107730728,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2743,"timestamp":475085678276,"id":4076,"parentId":4038,"tags":{},"startTime":1764107730764,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":46414,"timestamp":475085634997,"id":4038,"parentId":3,"tags":{"trigger":"components/CategoryColumn.tsx"},"startTime":1764107730721,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":3,"timestamp":475085685330,"id":4079,"parentId":3,"tags":{},"startTime":1764107730771,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475085685379,"id":4080,"parentId":3,"tags":{},"startTime":1764107730771,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475085685393,"id":4081,"parentId":3,"tags":{},"startTime":1764107730771,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":57000,"timestamp":475085635123,"id":4087,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107730778,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":61000,"timestamp":475085635766,"id":4088,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder/build","isPageHidden":true},"startTime":1764107730784,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":63000,"timestamp":475085636411,"id":4089,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764107730785,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12968,"timestamp":475085689272,"id":4083,"parentId":4078,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107730775,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12971,"timestamp":475085689276,"id":4084,"parentId":4078,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107730775,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12967,"timestamp":475085689290,"id":4086,"parentId":4078,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107730775,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":13124,"timestamp":475085689279,"id":4085,"parentId":4078,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107730775,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":13279,"timestamp":475085689246,"id":4082,"parentId":4078,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764107730775,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1202,"timestamp":475085705216,"id":4107,"parentId":4106,"tags":{},"startTime":1764107730791,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1270,"timestamp":475085705152,"id":4106,"parentId":4105,"tags":{},"startTime":1764107730791,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":2857,"timestamp":475085705003,"id":4105,"parentId":4077,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx","layer":"ssr"},"startTime":1764107730791,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":35717,"timestamp":475085682952,"id":4078,"parentId":4077,"tags":{},"startTime":1764107730769,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1270,"timestamp":475085719857,"id":4109,"parentId":4108,"tags":{},"startTime":1764107730806,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":475085721136,"id":4111,"parentId":4108,"tags":{},"startTime":1764107730807,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1067,"timestamp":475085721146,"id":4112,"parentId":4108,"tags":{},"startTime":1764107730807,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":475085722222,"id":4113,"parentId":4108,"tags":{},"startTime":1764107730808,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":475085722234,"id":4114,"parentId":4108,"tags":{},"startTime":1764107730808,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1303,"timestamp":475085721133,"id":4110,"parentId":4108,"tags":{},"startTime":1764107730807,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":143,"timestamp":475085722849,"id":4115,"parentId":4108,"tags":{},"startTime":1764107730809,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":323,"timestamp":475085722996,"id":4116,"parentId":4108,"tags":{},"startTime":1764107730809,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":644,"timestamp":475085723700,"id":4117,"parentId":4108,"tags":{},"startTime":1764107730810,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":26,"timestamp":475085724344,"id":4118,"parentId":4108,"tags":{},"startTime":1764107730810,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":20,"timestamp":475085724368,"id":4119,"parentId":4108,"tags":{},"startTime":1764107730810,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":66,"timestamp":475085724389,"id":4120,"parentId":4108,"tags":{},"startTime":1764107730810,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":5997,"timestamp":475085719654,"id":4108,"parentId":4077,"tags":{},"startTime":1764107730806,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":44621,"timestamp":475085682796,"id":4077,"parentId":4039,"tags":{"name":"server"},"startTime":1764107730769,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1242,"timestamp":475085727441,"id":4121,"parentId":4039,"tags":{},"startTime":1764107730813,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":94115,"timestamp":475085635182,"id":4039,"parentId":3,"tags":{"trigger":"components/CategoryColumn.tsx"},"startTime":1764107730721,"traceId":"e274ac96b05c42d4"}] +[{"name":"handle-request","duration":9779,"timestamp":475085732993,"id":4123,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107730819,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475085742797,"id":4125,"parentId":4123,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"551829504","memory.heapUsed":"209371248","memory.heapTotal":"236617728"},"startTime":1764107730829,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":10047,"timestamp":475085732817,"id":4122,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764107730819,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475085742870,"id":4126,"parentId":4122,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"551845888","memory.heapUsed":"209382424","memory.heapTotal":"236617728"},"startTime":1764107730829,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":11008,"timestamp":475085733020,"id":4124,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","isTurbopack":false},"startTime":1764107730819,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475085744039,"id":4127,"parentId":4124,"tags":{"url":"/gunbuilder/build?_rsc=mjtk2","memory.rss":"551911424","memory.heapUsed":"209466888","memory.heapTotal":"236617728"},"startTime":1764107730830,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":12139,"timestamp":475547653761,"id":4128,"tags":{"url":"/gunbuilder?_rsc=mryck","isTurbopack":false},"startTime":1764108192741,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":475547665938,"id":4129,"parentId":4128,"tags":{"url":"/gunbuilder?_rsc=mryck","memory.rss":"512131072","memory.heapUsed":"187135744","memory.heapTotal":"199344128"},"startTime":1764108192753,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":14399,"timestamp":475550641308,"id":4130,"tags":{"url":"/gunbuilder/upper?_rsc=1jn8g","isTurbopack":false},"startTime":1764108195728,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475550655739,"id":4131,"parentId":4130,"tags":{"url":"/gunbuilder/upper?_rsc=1jn8g","memory.rss":"513425408","memory.heapUsed":"185246344","memory.heapTotal":"195362816"},"startTime":1764108195743,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5335,"timestamp":475550661001,"id":4132,"tags":{"url":"/gunbuilder/upper?_rsc=17gjd","isTurbopack":false},"startTime":1764108195748,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475550666353,"id":4133,"parentId":4132,"tags":{"url":"/gunbuilder/upper?_rsc=17gjd","memory.rss":"513425408","memory.heapUsed":"185354120","memory.heapTotal":"195624960"},"startTime":1764108195753,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":11859,"timestamp":475553094511,"id":4134,"tags":{"url":"/gunbuilder/upper/upper-aero-enhanced?_rsc=1d33p","isTurbopack":false},"startTime":1764108198181,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475553106397,"id":4135,"parentId":4134,"tags":{"url":"/gunbuilder/upper/upper-aero-enhanced?_rsc=1d33p","memory.rss":"513622016","memory.heapUsed":"185958440","memory.heapTotal":"195821568"},"startTime":1764108198193,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6665,"timestamp":475553109442,"id":4136,"tags":{"url":"/gunbuilder/upper/upper-aero-enhanced?_rsc=1tyby","isTurbopack":false},"startTime":1764108198196,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":475553116126,"id":4137,"parentId":4136,"tags":{"url":"/gunbuilder/upper/upper-aero-enhanced?_rsc=1tyby","memory.rss":"513622016","memory.heapUsed":"186007560","memory.heapTotal":"196083712"},"startTime":1764108198203,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":9354,"timestamp":475640240303,"id":4138,"tags":{"url":"/gunbuilder/upper?_rsc=1tdvv","isTurbopack":false},"startTime":1764108285327,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":475640249718,"id":4139,"parentId":4138,"tags":{"url":"/gunbuilder/upper?_rsc=1tdvv","memory.rss":"513622016","memory.heapUsed":"185963944","memory.heapTotal":"195821568"},"startTime":1764108285337,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":14078,"timestamp":475641632438,"id":4140,"tags":{"url":"/gunbuilder?_rsc=x5p1f","isTurbopack":false},"startTime":1764108286719,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":475641646555,"id":4141,"parentId":4140,"tags":{"url":"/gunbuilder?_rsc=x5p1f","memory.rss":"513622016","memory.heapUsed":"186630240","memory.heapTotal":"195821568"},"startTime":1764108286733,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5030,"timestamp":475653523875,"id":4151,"parentId":4144,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108298611,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5049,"timestamp":475653523877,"id":4152,"parentId":4144,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108298611,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5066,"timestamp":475653523879,"id":4153,"parentId":4144,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108298611,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6066,"timestamp":475653523816,"id":4145,"parentId":4144,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764108298611,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6931,"timestamp":475653523874,"id":4150,"parentId":4144,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108298611,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8895,"timestamp":475653523867,"id":4147,"parentId":4144,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764108298611,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8986,"timestamp":475653523872,"id":4149,"parentId":4144,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108298611,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":1828,"timestamp":475653531061,"id":4156,"parentId":4155,"tags":{},"startTime":1764108298618,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12025,"timestamp":475653523863,"id":4146,"parentId":4144,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764108298611,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":11161,"timestamp":475653532930,"id":4158,"parentId":4157,"tags":{},"startTime":1764108298620,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":11417,"timestamp":475653532913,"id":4157,"parentId":4155,"tags":{},"startTime":1764108298620,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":3046,"timestamp":475653544343,"id":4159,"parentId":4155,"tags":{"astUsed":"true"},"startTime":1764108298631,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":18539,"timestamp":475653530919,"id":4155,"parentId":4154,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764108298618,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":24013,"timestamp":475653527847,"id":4154,"parentId":4143,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764108298615,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":8,"timestamp":475653551936,"id":4160,"parentId":4154,"tags":{},"startTime":1764108298639,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":28099,"timestamp":475653523868,"id":4148,"parentId":4144,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108298611,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":28479,"timestamp":475653523498,"id":4144,"parentId":4143,"tags":{},"startTime":1764108298610,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":12969,"timestamp":475653558521,"id":4162,"parentId":4161,"tags":{},"startTime":1764108298645,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":8,"timestamp":475653571514,"id":4164,"parentId":4161,"tags":{},"startTime":1764108298658,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":42,"timestamp":475653571576,"id":4165,"parentId":4161,"tags":{},"startTime":1764108298658,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":6,"timestamp":475653571650,"id":4166,"parentId":4161,"tags":{},"startTime":1764108298658,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":475653571680,"id":4167,"parentId":4161,"tags":{},"startTime":1764108298659,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":513,"timestamp":475653571507,"id":4163,"parentId":4161,"tags":{},"startTime":1764108298658,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":190,"timestamp":475653572468,"id":4168,"parentId":4161,"tags":{},"startTime":1764108298659,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":455,"timestamp":475653572663,"id":4169,"parentId":4161,"tags":{},"startTime":1764108298660,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1773,"timestamp":475653573796,"id":4170,"parentId":4161,"tags":{},"startTime":1764108298661,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":97,"timestamp":475653575568,"id":4171,"parentId":4161,"tags":{},"startTime":1764108298662,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":35,"timestamp":475653575657,"id":4172,"parentId":4161,"tags":{},"startTime":1764108298662,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1505,"timestamp":475653575697,"id":4173,"parentId":4161,"tags":{},"startTime":1764108298663,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":67,"timestamp":475653577835,"id":4175,"parentId":4143,"tags":{},"startTime":1764108298665,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":107,"timestamp":475653577797,"id":4174,"parentId":4143,"tags":{},"startTime":1764108298665,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":20723,"timestamp":475653558174,"id":4161,"parentId":4143,"tags":{},"startTime":1764108298645,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":55656,"timestamp":475653523263,"id":4143,"parentId":4142,"tags":{"name":"client"},"startTime":1764108298610,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2926,"timestamp":475653578936,"id":4176,"parentId":4142,"tags":{},"startTime":1764108298666,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":66813,"timestamp":475653516001,"id":4142,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/[partId]/data.ts"},"startTime":1764108298603,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":12,"timestamp":475653583572,"id":4177,"parentId":3,"tags":{},"startTime":1764108298670,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475653583615,"id":4178,"parentId":3,"tags":{},"startTime":1764108298670,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475653584061,"id":4179,"parentId":3,"tags":{},"startTime":1764108298671,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":72000,"timestamp":475653516545,"id":4183,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108298676,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6772,"timestamp":475653586241,"id":4181,"tags":{"url":"/gunbuilder?_rsc=9gfev","isTurbopack":false},"startTime":1764108298673,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475653593042,"id":4184,"parentId":4181,"tags":{"url":"/gunbuilder?_rsc=9gfev","memory.rss":"528154624","memory.heapUsed":"190256056","memory.heapTotal":"209829888"},"startTime":1764108298680,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":8706,"timestamp":475653584408,"id":4180,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108298671,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475653593119,"id":4185,"parentId":4180,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"528154624","memory.heapUsed":"190267152","memory.heapTotal":"209829888"},"startTime":1764108298680,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6755,"timestamp":475653586656,"id":4182,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108298673,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475653593424,"id":4186,"parentId":4182,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"528154624","memory.heapUsed":"190302784","memory.heapTotal":"209829888"},"startTime":1764108298680,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":81000,"timestamp":475653516468,"id":4187,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108298684,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":83000,"timestamp":475653516285,"id":4188,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108298686,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3173,"timestamp":475653625816,"id":4198,"parentId":4191,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108298713,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3188,"timestamp":475653625820,"id":4199,"parentId":4191,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108298713,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3201,"timestamp":475653625821,"id":4200,"parentId":4191,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108298713,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4196,"timestamp":475653625765,"id":4192,"parentId":4191,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764108298713,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4745,"timestamp":475653625811,"id":4197,"parentId":4191,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108298713,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5316,"timestamp":475653625806,"id":4194,"parentId":4191,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764108298713,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5377,"timestamp":475653625809,"id":4196,"parentId":4191,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108298713,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":536,"timestamp":475653630674,"id":4203,"parentId":4202,"tags":{},"startTime":1764108298718,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6706,"timestamp":475653625802,"id":4193,"parentId":4191,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764108298713,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":9455,"timestamp":475653631233,"id":4205,"parentId":4204,"tags":{},"startTime":1764108298718,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":9670,"timestamp":475653631224,"id":4204,"parentId":4202,"tags":{},"startTime":1764108298718,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2273,"timestamp":475653640905,"id":4206,"parentId":4202,"tags":{"astUsed":"true"},"startTime":1764108298728,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":14035,"timestamp":475653630623,"id":4202,"parentId":4201,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764108298717,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":18203,"timestamp":475653628287,"id":4201,"parentId":4190,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764108298715,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":11,"timestamp":475653646604,"id":4207,"parentId":4201,"tags":{},"startTime":1764108298733,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":20828,"timestamp":475653625807,"id":4195,"parentId":4191,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108298713,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":21119,"timestamp":475653625524,"id":4191,"parentId":4190,"tags":{},"startTime":1764108298712,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":621,"timestamp":475653647414,"id":4209,"parentId":4208,"tags":{},"startTime":1764108298734,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":4,"timestamp":475653648040,"id":4211,"parentId":4208,"tags":{},"startTime":1764108298735,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":17,"timestamp":475653648049,"id":4212,"parentId":4208,"tags":{},"startTime":1764108298735,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":475653648071,"id":4213,"parentId":4208,"tags":{},"startTime":1764108298735,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":475653648082,"id":4214,"parentId":4208,"tags":{},"startTime":1764108298735,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":192,"timestamp":475653648038,"id":4210,"parentId":4208,"tags":{},"startTime":1764108298735,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":160,"timestamp":475653648583,"id":4215,"parentId":4208,"tags":{},"startTime":1764108298735,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":370,"timestamp":475653648746,"id":4216,"parentId":4208,"tags":{},"startTime":1764108298736,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":2122,"timestamp":475653649514,"id":4217,"parentId":4208,"tags":{},"startTime":1764108298736,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":62,"timestamp":475653651635,"id":4218,"parentId":4208,"tags":{},"startTime":1764108298738,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":25,"timestamp":475653651693,"id":4219,"parentId":4208,"tags":{},"startTime":1764108298739,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1168,"timestamp":475653651721,"id":4220,"parentId":4208,"tags":{},"startTime":1764108298739,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":41,"timestamp":475653653238,"id":4222,"parentId":4190,"tags":{},"startTime":1764108298740,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":75,"timestamp":475653653207,"id":4221,"parentId":4190,"tags":{},"startTime":1764108298740,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":6781,"timestamp":475653647165,"id":4208,"parentId":4190,"tags":{},"startTime":1764108298734,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":28616,"timestamp":475653625343,"id":4190,"parentId":4189,"tags":{"name":"client"},"startTime":1764108298712,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":4859,"timestamp":475653653971,"id":4223,"parentId":4189,"tags":{},"startTime":1764108298741,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":40886,"timestamp":475653618523,"id":4189,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/[partId]/data.ts"},"startTime":1764108298705,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":1,"timestamp":475653659907,"id":4224,"parentId":3,"tags":{},"startTime":1764108298747,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475653659930,"id":4225,"parentId":3,"tags":{},"startTime":1764108298747,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475653659945,"id":4226,"parentId":3,"tags":{},"startTime":1764108298747,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":45000,"timestamp":475653619289,"id":4229,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108298752,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":47000,"timestamp":475653619629,"id":4230,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108298753,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":47000,"timestamp":475653619642,"id":4231,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108298753,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":6925,"timestamp":475653660473,"id":4227,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108298747,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475653667409,"id":4232,"parentId":4227,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"533544960","memory.heapUsed":"192824408","memory.heapTotal":"215597056"},"startTime":1764108298754,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":9526,"timestamp":475653660775,"id":4228,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108298748,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475653670318,"id":4234,"parentId":4228,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"533544960","memory.heapUsed":"193242136","memory.heapTotal":"215597056"},"startTime":1764108298757,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4587,"timestamp":475653669453,"id":4233,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108298756,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475653674047,"id":4235,"parentId":4233,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"533561344","memory.heapUsed":"193881904","memory.heapTotal":"215597056"},"startTime":1764108298761,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3424,"timestamp":475660927070,"id":4245,"parentId":4238,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108306014,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3444,"timestamp":475660927071,"id":4246,"parentId":4238,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108306014,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3460,"timestamp":475660927074,"id":4247,"parentId":4238,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108306014,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3823,"timestamp":475660927009,"id":4239,"parentId":4238,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764108306014,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4497,"timestamp":475660927068,"id":4244,"parentId":4238,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108306014,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5220,"timestamp":475660927061,"id":4241,"parentId":4238,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764108306014,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5289,"timestamp":475660927065,"id":4243,"parentId":4238,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108306014,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":717,"timestamp":475660931713,"id":4250,"parentId":4249,"tags":{},"startTime":1764108306019,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":8237,"timestamp":475660932463,"id":4252,"parentId":4251,"tags":{},"startTime":1764108306019,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":8371,"timestamp":475660932451,"id":4251,"parentId":4249,"tags":{},"startTime":1764108306019,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2401,"timestamp":475660940837,"id":4253,"parentId":4249,"tags":{"astUsed":"true"},"startTime":1764108306028,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":12543,"timestamp":475660931645,"id":4249,"parentId":4248,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764108306018,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":19517,"timestamp":475660927056,"id":4240,"parentId":4238,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764108306014,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":17822,"timestamp":475660929842,"id":4248,"parentId":4237,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764108306017,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":12,"timestamp":475660947755,"id":4254,"parentId":4248,"tags":{},"startTime":1764108306035,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":20731,"timestamp":475660927063,"id":4242,"parentId":4238,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108306014,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":20976,"timestamp":475660926830,"id":4238,"parentId":4237,"tags":{},"startTime":1764108306014,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":775,"timestamp":475660948573,"id":4256,"parentId":4255,"tags":{},"startTime":1764108306035,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":475660949357,"id":4258,"parentId":4255,"tags":{},"startTime":1764108306036,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":22,"timestamp":475660949365,"id":4259,"parentId":4255,"tags":{},"startTime":1764108306036,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":475660949395,"id":4260,"parentId":4255,"tags":{},"startTime":1764108306036,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":475660949404,"id":4261,"parentId":4255,"tags":{},"startTime":1764108306036,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":214,"timestamp":475660949354,"id":4257,"parentId":4255,"tags":{},"startTime":1764108306036,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":126,"timestamp":475660949936,"id":4262,"parentId":4255,"tags":{},"startTime":1764108306037,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":389,"timestamp":475660950066,"id":4263,"parentId":4255,"tags":{},"startTime":1764108306037,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":993,"timestamp":475660950800,"id":4264,"parentId":4255,"tags":{},"startTime":1764108306038,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":43,"timestamp":475660951793,"id":4265,"parentId":4255,"tags":{},"startTime":1764108306039,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":20,"timestamp":475660951834,"id":4266,"parentId":4255,"tags":{},"startTime":1764108306039,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1316,"timestamp":475660951856,"id":4267,"parentId":4255,"tags":{},"startTime":1764108306039,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":28,"timestamp":475660953483,"id":4269,"parentId":4237,"tags":{},"startTime":1764108306040,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":63,"timestamp":475660953451,"id":4268,"parentId":4237,"tags":{},"startTime":1764108306040,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":5785,"timestamp":475660948334,"id":4255,"parentId":4237,"tags":{},"startTime":1764108306035,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":27471,"timestamp":475660926660,"id":4237,"parentId":4236,"tags":{"name":"client"},"startTime":1764108306013,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2604,"timestamp":475660954139,"id":4270,"parentId":4236,"tags":{},"startTime":1764108306041,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":37278,"timestamp":475660919890,"id":4236,"parentId":3,"tags":{"trigger":"app/gunbuilder/schema.sql"},"startTime":1764108306007,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":1,"timestamp":475660957678,"id":4271,"parentId":3,"tags":{},"startTime":1764108306045,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475660958946,"id":4273,"parentId":3,"tags":{},"startTime":1764108306046,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475660959194,"id":4274,"parentId":3,"tags":{},"startTime":1764108306046,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":42000,"timestamp":475660919875,"id":4276,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108306050,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":9144,"timestamp":475660958677,"id":4272,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108306046,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":475660967861,"id":4277,"parentId":4272,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"544686080","memory.heapUsed":"196532848","memory.heapTotal":"227655680"},"startTime":1764108306055,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":8841,"timestamp":475660961715,"id":4275,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108306049,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475660970571,"id":4278,"parentId":4275,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"544686080","memory.heapUsed":"197098728","memory.heapTotal":"227655680"},"startTime":1764108306057,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":49000,"timestamp":475660920383,"id":4280,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108306061,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":3727,"timestamp":475660970765,"id":4279,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108306058,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475660974504,"id":4281,"parentId":4279,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"544702464","memory.heapUsed":"197974600","memory.heapTotal":"227655680"},"startTime":1764108306061,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":56000,"timestamp":475660919705,"id":4282,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108306064,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3650,"timestamp":475668678697,"id":4292,"parentId":4285,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108313766,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3678,"timestamp":475668678701,"id":4293,"parentId":4285,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108313766,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3703,"timestamp":475668678702,"id":4294,"parentId":4285,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108313766,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4115,"timestamp":475668678640,"id":4286,"parentId":4285,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764108313765,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4965,"timestamp":475668678695,"id":4291,"parentId":4285,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108313766,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5989,"timestamp":475668678687,"id":4288,"parentId":4285,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764108313766,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6089,"timestamp":475668678692,"id":4290,"parentId":4285,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108313766,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":966,"timestamp":475668683850,"id":4297,"parentId":4296,"tags":{},"startTime":1764108313771,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7780,"timestamp":475668678680,"id":4287,"parentId":4285,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764108313766,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":7956,"timestamp":475668684853,"id":4299,"parentId":4298,"tags":{},"startTime":1764108313772,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":8074,"timestamp":475668684838,"id":4298,"parentId":4296,"tags":{},"startTime":1764108313772,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":3225,"timestamp":475668692935,"id":4300,"parentId":4296,"tags":{"astUsed":"true"},"startTime":1764108313780,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":13711,"timestamp":475668683780,"id":4296,"parentId":4295,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764108313771,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":19292,"timestamp":475668681443,"id":4295,"parentId":4284,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764108313768,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":18,"timestamp":475668700869,"id":4301,"parentId":4295,"tags":{},"startTime":1764108313788,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":22226,"timestamp":475668678691,"id":4289,"parentId":4285,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108313766,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":22562,"timestamp":475668678369,"id":4285,"parentId":4284,"tags":{},"startTime":1764108313765,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":718,"timestamp":475668701933,"id":4303,"parentId":4302,"tags":{},"startTime":1764108313789,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":6,"timestamp":475668702660,"id":4305,"parentId":4302,"tags":{},"startTime":1764108313789,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":27,"timestamp":475668702672,"id":4306,"parentId":4302,"tags":{},"startTime":1764108313789,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":475668702706,"id":4307,"parentId":4302,"tags":{},"startTime":1764108313790,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":475668702719,"id":4308,"parentId":4302,"tags":{},"startTime":1764108313790,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":273,"timestamp":475668702658,"id":4304,"parentId":4302,"tags":{},"startTime":1764108313789,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":181,"timestamp":475668703420,"id":4309,"parentId":4302,"tags":{},"startTime":1764108313790,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":500,"timestamp":475668703606,"id":4310,"parentId":4302,"tags":{},"startTime":1764108313790,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1405,"timestamp":475668704669,"id":4311,"parentId":4302,"tags":{},"startTime":1764108313791,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":56,"timestamp":475668706074,"id":4312,"parentId":4302,"tags":{},"startTime":1764108313793,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":33,"timestamp":475668706126,"id":4313,"parentId":4302,"tags":{},"startTime":1764108313793,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1220,"timestamp":475668706161,"id":4314,"parentId":4302,"tags":{},"startTime":1764108313793,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":31,"timestamp":475668707767,"id":4316,"parentId":4284,"tags":{},"startTime":1764108313795,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":71,"timestamp":475668707729,"id":4315,"parentId":4284,"tags":{},"startTime":1764108313795,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":6924,"timestamp":475668701611,"id":4302,"parentId":4284,"tags":{},"startTime":1764108313788,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":30473,"timestamp":475668678080,"id":4284,"parentId":4283,"tags":{"name":"client"},"startTime":1764108313765,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2630,"timestamp":475668708567,"id":4317,"parentId":4283,"tags":{},"startTime":1764108313795,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":40220,"timestamp":475668671489,"id":4283,"parentId":3,"tags":{"trigger":"components/PricingHistoryGraph.tsx"},"startTime":1764108313758,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":2,"timestamp":475668712542,"id":4318,"parentId":3,"tags":{},"startTime":1764108313799,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475668713927,"id":4320,"parentId":3,"tags":{},"startTime":1764108313801,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475668714100,"id":4321,"parentId":3,"tags":{},"startTime":1764108313801,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":44000,"timestamp":475668671744,"id":4323,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108313804,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5314,"timestamp":475668713191,"id":4319,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108313800,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475668718520,"id":4324,"parentId":4319,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"550207488","memory.heapUsed":"200658832","memory.heapTotal":"233160704"},"startTime":1764108313805,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7494,"timestamp":475668715819,"id":4322,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108313803,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475668723332,"id":4326,"parentId":4322,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"550223872","memory.heapUsed":"201560832","memory.heapTotal":"233160704"},"startTime":1764108313810,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":54000,"timestamp":475668672526,"id":4327,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108313813,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":54000,"timestamp":475668671806,"id":4328,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108313814,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4295,"timestamp":475668722912,"id":4325,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108313810,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475668727219,"id":4329,"parentId":4325,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"550223872","memory.heapUsed":"202347504","memory.heapTotal":"233160704"},"startTime":1764108313814,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2498,"timestamp":475668830391,"id":4339,"parentId":4332,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108313917,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2513,"timestamp":475668830392,"id":4340,"parentId":4332,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108313917,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2528,"timestamp":475668830393,"id":4341,"parentId":4332,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108313917,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2750,"timestamp":475668830355,"id":4333,"parentId":4332,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764108313917,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3313,"timestamp":475668830388,"id":4338,"parentId":4332,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108313917,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3968,"timestamp":475668830383,"id":4335,"parentId":4332,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764108313917,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4032,"timestamp":475668830386,"id":4337,"parentId":4332,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108313917,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":593,"timestamp":475668833845,"id":4344,"parentId":4343,"tags":{},"startTime":1764108313921,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5383,"timestamp":475668830380,"id":4334,"parentId":4332,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764108313917,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":8431,"timestamp":475668834466,"id":4346,"parentId":4345,"tags":{},"startTime":1764108313921,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":8526,"timestamp":475668834452,"id":4345,"parentId":4343,"tags":{},"startTime":1764108313921,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2367,"timestamp":475668842996,"id":4347,"parentId":4343,"tags":{"astUsed":"true"},"startTime":1764108313930,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":12503,"timestamp":475668833784,"id":4343,"parentId":4342,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764108313921,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":17173,"timestamp":475668832330,"id":4342,"parentId":4331,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764108313919,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":10,"timestamp":475668849579,"id":4348,"parentId":4342,"tags":{},"startTime":1764108313936,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":19257,"timestamp":475668830385,"id":4336,"parentId":4332,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108313917,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":19472,"timestamp":475668830192,"id":4332,"parentId":4331,"tags":{},"startTime":1764108313917,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":694,"timestamp":475668850503,"id":4350,"parentId":4349,"tags":{},"startTime":1764108313937,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":475668851206,"id":4352,"parentId":4349,"tags":{},"startTime":1764108313938,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":19,"timestamp":475668851215,"id":4353,"parentId":4349,"tags":{},"startTime":1764108313938,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":475668851242,"id":4354,"parentId":4349,"tags":{},"startTime":1764108313938,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":475668851253,"id":4355,"parentId":4349,"tags":{},"startTime":1764108313938,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":186,"timestamp":475668851203,"id":4351,"parentId":4349,"tags":{},"startTime":1764108313938,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":185,"timestamp":475668851807,"id":4356,"parentId":4349,"tags":{},"startTime":1764108313939,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":510,"timestamp":475668851997,"id":4357,"parentId":4349,"tags":{},"startTime":1764108313939,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1233,"timestamp":475668852957,"id":4358,"parentId":4349,"tags":{},"startTime":1764108313940,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":73,"timestamp":475668854190,"id":4359,"parentId":4349,"tags":{},"startTime":1764108313941,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":24,"timestamp":475668854259,"id":4360,"parentId":4349,"tags":{},"startTime":1764108313941,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1489,"timestamp":475668854285,"id":4361,"parentId":4349,"tags":{},"startTime":1764108313941,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":22,"timestamp":475668856104,"id":4363,"parentId":4331,"tags":{},"startTime":1764108313943,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":48,"timestamp":475668856081,"id":4362,"parentId":4331,"tags":{},"startTime":1764108313943,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":6485,"timestamp":475668850261,"id":4349,"parentId":4331,"tags":{},"startTime":1764108313937,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":26831,"timestamp":475668829928,"id":4331,"parentId":4330,"tags":{"name":"client"},"startTime":1764108313917,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2349,"timestamp":475668856768,"id":4364,"parentId":4330,"tags":{},"startTime":1764108313944,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":36307,"timestamp":475668823310,"id":4330,"parentId":3,"tags":{"trigger":"components/PricingHistoryGraph.tsx"},"startTime":1764108313910,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":2,"timestamp":475668860204,"id":4365,"parentId":3,"tags":{},"startTime":1764108313947,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475668861315,"id":4367,"parentId":3,"tags":{},"startTime":1764108313948,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475668861328,"id":4368,"parentId":3,"tags":{},"startTime":1764108313948,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4727,"timestamp":475668860629,"id":4366,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108313947,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475668865371,"id":4370,"parentId":4366,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"553123840","memory.heapUsed":"215083312","memory.heapTotal":"236044288"},"startTime":1764108313952,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":44000,"timestamp":475668823165,"id":4371,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108313954,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":11867,"timestamp":475668862488,"id":4369,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108313949,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475668874372,"id":4373,"parentId":4369,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"553746432","memory.heapUsed":"201531320","memory.heapTotal":"236306432"},"startTime":1764108313961,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4565,"timestamp":475668873880,"id":4372,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108313961,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475668878472,"id":4374,"parentId":4372,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"553762816","memory.heapUsed":"202313392","memory.heapTotal":"236306432"},"startTime":1764108313965,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":57000,"timestamp":475668823812,"id":4375,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108313970,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":58000,"timestamp":475668824397,"id":4376,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108313970,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4168,"timestamp":475681790383,"id":4386,"parentId":4379,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108326877,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4200,"timestamp":475681790385,"id":4387,"parentId":4379,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108326877,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4226,"timestamp":475681790386,"id":4388,"parentId":4379,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108326877,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4685,"timestamp":475681790304,"id":4380,"parentId":4379,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764108326877,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5597,"timestamp":475681790381,"id":4385,"parentId":4379,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108326877,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6544,"timestamp":475681790370,"id":4382,"parentId":4379,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764108326877,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6647,"timestamp":475681790375,"id":4384,"parentId":4379,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108326877,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":883,"timestamp":475681796184,"id":4391,"parentId":4390,"tags":{},"startTime":1764108326883,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8814,"timestamp":475681790363,"id":4381,"parentId":4379,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764108326877,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":10702,"timestamp":475681797114,"id":4393,"parentId":4392,"tags":{},"startTime":1764108326884,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":11043,"timestamp":475681797092,"id":4392,"parentId":4390,"tags":{},"startTime":1764108326884,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2357,"timestamp":475681808156,"id":4394,"parentId":4390,"tags":{"astUsed":"true"},"startTime":1764108326895,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":15427,"timestamp":475681796102,"id":4390,"parentId":4389,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764108326883,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":19830,"timestamp":475681793584,"id":4389,"parentId":4378,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764108326880,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":16,"timestamp":475681813519,"id":4395,"parentId":4389,"tags":{},"startTime":1764108326900,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":23185,"timestamp":475681790373,"id":4383,"parentId":4379,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108326877,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":23560,"timestamp":475681790010,"id":4379,"parentId":4378,"tags":{},"startTime":1764108326877,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":960,"timestamp":475681814643,"id":4397,"parentId":4396,"tags":{},"startTime":1764108326901,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":3,"timestamp":475681815614,"id":4399,"parentId":4396,"tags":{},"startTime":1764108326902,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":31,"timestamp":475681815625,"id":4400,"parentId":4396,"tags":{},"startTime":1764108326902,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":4,"timestamp":475681815666,"id":4401,"parentId":4396,"tags":{},"startTime":1764108326902,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":475681815678,"id":4402,"parentId":4396,"tags":{},"startTime":1764108326902,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":278,"timestamp":475681815611,"id":4398,"parentId":4396,"tags":{},"startTime":1764108326902,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":227,"timestamp":475681816513,"id":4403,"parentId":4396,"tags":{},"startTime":1764108326903,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":579,"timestamp":475681816747,"id":4404,"parentId":4396,"tags":{},"startTime":1764108326904,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1713,"timestamp":475681818078,"id":4405,"parentId":4396,"tags":{},"startTime":1764108326905,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":97,"timestamp":475681819791,"id":4406,"parentId":4396,"tags":{},"startTime":1764108326907,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":35,"timestamp":475681819883,"id":4407,"parentId":4396,"tags":{},"startTime":1764108326907,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1723,"timestamp":475681819922,"id":4408,"parentId":4396,"tags":{},"startTime":1764108326907,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":33,"timestamp":475681822091,"id":4410,"parentId":4378,"tags":{},"startTime":1764108326909,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":73,"timestamp":475681822053,"id":4409,"parentId":4378,"tags":{},"startTime":1764108326909,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":8688,"timestamp":475681814294,"id":4396,"parentId":4378,"tags":{},"startTime":1764108326901,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":33320,"timestamp":475681789684,"id":4378,"parentId":4377,"tags":{"name":"client"},"startTime":1764108326877,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2914,"timestamp":475681823017,"id":4411,"parentId":4377,"tags":{},"startTime":1764108326910,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":44454,"timestamp":475681782334,"id":4377,"parentId":3,"tags":{"trigger":"components/RetailersList.tsx"},"startTime":1764108326869,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":2,"timestamp":475681827661,"id":4412,"parentId":3,"tags":{},"startTime":1764108326914,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475681828194,"id":4413,"parentId":3,"tags":{},"startTime":1764108326915,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":1,"timestamp":475681828721,"id":4415,"parentId":3,"tags":{},"startTime":1764108326916,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":50000,"timestamp":475681783009,"id":4416,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108326920,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7038,"timestamp":475681828335,"id":4414,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108326915,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":475681835398,"id":4417,"parentId":4414,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"557137920","memory.heapUsed":"226212504","memory.heapTotal":"243646464"},"startTime":1764108326922,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5655,"timestamp":475681836942,"id":4418,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108326924,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475681842619,"id":4420,"parentId":4418,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"558219264","memory.heapUsed":"227319736","memory.heapTotal":"244695040"},"startTime":1764108326929,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":61000,"timestamp":475681782701,"id":4421,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108326932,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":61000,"timestamp":475681782782,"id":4422,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":false},"startTime":1764108326932,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7986,"timestamp":475681842047,"id":4419,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108326929,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":475681850056,"id":4423,"parentId":4419,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"559022080","memory.heapUsed":"228098184","memory.heapTotal":"245481472"},"startTime":1764108326937,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5017,"timestamp":475681892829,"id":4433,"parentId":4426,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108326980,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5035,"timestamp":475681892830,"id":4434,"parentId":4426,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108326980,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5053,"timestamp":475681892831,"id":4435,"parentId":4426,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108326980,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5312,"timestamp":475681892784,"id":4427,"parentId":4426,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764108326980,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5924,"timestamp":475681892827,"id":4432,"parentId":4426,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108326980,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6521,"timestamp":475681892820,"id":4429,"parentId":4426,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764108326980,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6582,"timestamp":475681892825,"id":4431,"parentId":4426,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108326980,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":554,"timestamp":475681898879,"id":4438,"parentId":4437,"tags":{},"startTime":1764108326986,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7691,"timestamp":475681892817,"id":4428,"parentId":4426,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764108326980,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":11391,"timestamp":475681899454,"id":4440,"parentId":4439,"tags":{},"startTime":1764108326986,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":11499,"timestamp":475681899446,"id":4439,"parentId":4437,"tags":{},"startTime":1764108326986,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":1974,"timestamp":475681910965,"id":4441,"parentId":4437,"tags":{"astUsed":"true"},"startTime":1764108326998,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":14770,"timestamp":475681898833,"id":4437,"parentId":4436,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764108326986,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":18354,"timestamp":475681897132,"id":4436,"parentId":4425,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764108326984,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":12,"timestamp":475681915586,"id":4442,"parentId":4436,"tags":{},"startTime":1764108327002,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":22799,"timestamp":475681892822,"id":4430,"parentId":4426,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108326980,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":23037,"timestamp":475681892594,"id":4426,"parentId":4425,"tags":{},"startTime":1764108326979,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":836,"timestamp":475681916528,"id":4444,"parentId":4443,"tags":{},"startTime":1764108327003,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":475681917370,"id":4446,"parentId":4443,"tags":{},"startTime":1764108327004,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":19,"timestamp":475681917378,"id":4447,"parentId":4443,"tags":{},"startTime":1764108327004,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":4,"timestamp":475681917403,"id":4448,"parentId":4443,"tags":{},"startTime":1764108327004,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":475681917415,"id":4449,"parentId":4443,"tags":{},"startTime":1764108327004,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":196,"timestamp":475681917367,"id":4445,"parentId":4443,"tags":{},"startTime":1764108327004,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":134,"timestamp":475681918090,"id":4450,"parentId":4443,"tags":{},"startTime":1764108327005,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":480,"timestamp":475681918227,"id":4451,"parentId":4443,"tags":{},"startTime":1764108327005,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1346,"timestamp":475681919136,"id":4452,"parentId":4443,"tags":{},"startTime":1764108327006,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":60,"timestamp":475681920483,"id":4453,"parentId":4443,"tags":{},"startTime":1764108327007,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":24,"timestamp":475681920539,"id":4454,"parentId":4443,"tags":{},"startTime":1764108327007,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1429,"timestamp":475681920565,"id":4455,"parentId":4443,"tags":{},"startTime":1764108327007,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":26,"timestamp":475681922337,"id":4457,"parentId":4425,"tags":{},"startTime":1764108327009,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":56,"timestamp":475681922309,"id":4456,"parentId":4425,"tags":{},"startTime":1764108327009,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":6821,"timestamp":475681916225,"id":4443,"parentId":4425,"tags":{},"startTime":1764108327003,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":30740,"timestamp":475681892320,"id":4425,"parentId":4424,"tags":{"name":"client"},"startTime":1764108326979,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2031,"timestamp":475681923073,"id":4458,"parentId":4424,"tags":{},"startTime":1764108327010,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":40575,"timestamp":475681885202,"id":4424,"parentId":3,"tags":{"trigger":"components/RetailersList.tsx"},"startTime":1764108326972,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":2,"timestamp":475681929003,"id":4459,"parentId":3,"tags":{},"startTime":1764108327016,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475681929051,"id":4460,"parentId":3,"tags":{},"startTime":1764108327016,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475681929069,"id":4461,"parentId":3,"tags":{},"startTime":1764108327016,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":48000,"timestamp":475681885089,"id":4464,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108327021,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":48000,"timestamp":475681885110,"id":4465,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":false},"startTime":1764108327021,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5636,"timestamp":475681929746,"id":4462,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108327017,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475681935392,"id":4467,"parentId":4462,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"578846720","memory.heapUsed":"211971032","memory.heapTotal":"265404416"},"startTime":1764108327022,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5445,"timestamp":475681930005,"id":4463,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108327017,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475681935455,"id":4468,"parentId":4463,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"578846720","memory.heapUsed":"211982136","memory.heapTotal":"265404416"},"startTime":1764108327022,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":52000,"timestamp":475681885662,"id":4469,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108327024,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":5012,"timestamp":475681935183,"id":4466,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108327022,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475681940212,"id":4470,"parentId":4466,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"578863104","memory.heapUsed":"212792640","memory.heapTotal":"265404416"},"startTime":1764108327027,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3430,"timestamp":475687961982,"id":4481,"parentId":4474,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108333049,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3449,"timestamp":475687961984,"id":4483,"parentId":4474,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108333049,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3678,"timestamp":475687961946,"id":4475,"parentId":4474,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764108333049,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4190,"timestamp":475687961980,"id":4480,"parentId":4474,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108333049,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1878,"timestamp":475687964840,"id":4487,"parentId":4486,"tags":{},"startTime":1764108333052,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1978,"timestamp":475687964742,"id":4486,"parentId":4485,"tags":{},"startTime":1764108333052,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":6180,"timestamp":475687964673,"id":4485,"parentId":4473,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"app-pages-browser"},"startTime":1764108333051,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":9289,"timestamp":475687961974,"id":4477,"parentId":4474,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764108333049,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":9798,"timestamp":475687961978,"id":4479,"parentId":4474,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108333049,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":5605,"timestamp":475687966298,"id":4489,"parentId":4488,"tags":{},"startTime":1764108333053,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":11407,"timestamp":475687961971,"id":4476,"parentId":4474,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764108333049,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":10048,"timestamp":475687971929,"id":4491,"parentId":4490,"tags":{},"startTime":1764108333059,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":10154,"timestamp":475687971918,"id":4490,"parentId":4488,"tags":{},"startTime":1764108333059,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":1971,"timestamp":475687982089,"id":4492,"parentId":4488,"tags":{"astUsed":"true"},"startTime":1764108333069,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":18329,"timestamp":475687966244,"id":4488,"parentId":4484,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764108333053,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":23459,"timestamp":475687964524,"id":4484,"parentId":4473,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764108333051,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":10,"timestamp":475687988844,"id":4493,"parentId":4484,"tags":{},"startTime":1764108333076,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":26876,"timestamp":475687961983,"id":4482,"parentId":4474,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108333049,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":26892,"timestamp":475687961976,"id":4478,"parentId":4474,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108333049,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":27067,"timestamp":475687961809,"id":4474,"parentId":4473,"tags":{},"startTime":1764108333049,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":711,"timestamp":475687989693,"id":4495,"parentId":4494,"tags":{},"startTime":1764108333077,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":475687990415,"id":4497,"parentId":4494,"tags":{},"startTime":1764108333077,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":18,"timestamp":475687990422,"id":4498,"parentId":4494,"tags":{},"startTime":1764108333077,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":475687990446,"id":4499,"parentId":4494,"tags":{},"startTime":1764108333077,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":475687990457,"id":4500,"parentId":4494,"tags":{},"startTime":1764108333077,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":181,"timestamp":475687990409,"id":4496,"parentId":4494,"tags":{},"startTime":1764108333077,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":348,"timestamp":475687991298,"id":4501,"parentId":4494,"tags":{},"startTime":1764108333078,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":1219,"timestamp":475687991650,"id":4502,"parentId":4494,"tags":{},"startTime":1764108333078,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1525,"timestamp":475687993509,"id":4503,"parentId":4494,"tags":{},"startTime":1764108333080,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":72,"timestamp":475687995034,"id":4504,"parentId":4494,"tags":{},"startTime":1764108333082,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":26,"timestamp":475687995101,"id":4505,"parentId":4494,"tags":{},"startTime":1764108333082,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":2443,"timestamp":475687995130,"id":4506,"parentId":4494,"tags":{},"startTime":1764108333082,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":24,"timestamp":475687997946,"id":4508,"parentId":4473,"tags":{},"startTime":1764108333085,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":54,"timestamp":475687997917,"id":4507,"parentId":4473,"tags":{},"startTime":1764108333085,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":9542,"timestamp":475687989452,"id":4494,"parentId":4473,"tags":{},"startTime":1764108333076,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":37369,"timestamp":475687961646,"id":4473,"parentId":4471,"tags":{"name":"client"},"startTime":1764108333048,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":7766,"timestamp":475687999030,"id":4509,"parentId":4471,"tags":{},"startTime":1764108333086,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":52344,"timestamp":475687954884,"id":4471,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/[partId]/page.tsx"},"startTime":1764108333042,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475688009217,"id":4512,"parentId":3,"tags":{},"startTime":1764108333096,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475688009240,"id":4513,"parentId":3,"tags":{},"startTime":1764108333096,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475688009251,"id":4514,"parentId":3,"tags":{},"startTime":1764108333096,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":58000,"timestamp":475687954758,"id":4520,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108333102,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":58000,"timestamp":475687954779,"id":4521,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108333102,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6203,"timestamp":475688011141,"id":4516,"parentId":4511,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108333098,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6209,"timestamp":475688011143,"id":4517,"parentId":4511,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108333098,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6440,"timestamp":475688011144,"id":4518,"parentId":4511,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108333098,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":62000,"timestamp":475687954700,"id":4525,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/[categoryId]/[partId]/page.tsx"],"page":"/gunbuilder","isPageHidden":false},"startTime":1764108333105,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6600,"timestamp":475688011115,"id":4515,"parentId":4511,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108333098,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":854,"timestamp":475688016902,"id":4524,"parentId":4523,"tags":{},"startTime":1764108333104,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":917,"timestamp":475688016841,"id":4523,"parentId":4522,"tags":{},"startTime":1764108333104,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":1927,"timestamp":475688016673,"id":4522,"parentId":4510,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"rsc"},"startTime":1764108333103,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":15581,"timestamp":475688011146,"id":4519,"parentId":4511,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108333098,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1811,"timestamp":475688029059,"id":4543,"parentId":4542,"tags":{},"startTime":1764108333116,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1891,"timestamp":475688028983,"id":4542,"parentId":4541,"tags":{},"startTime":1764108333116,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":5969,"timestamp":475688028837,"id":4541,"parentId":4510,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"ssr"},"startTime":1764108333116,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":37781,"timestamp":475688008731,"id":4511,"parentId":4510,"tags":{},"startTime":1764108333096,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1293,"timestamp":475688047742,"id":4545,"parentId":4544,"tags":{},"startTime":1764108333135,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":475688049045,"id":4547,"parentId":4544,"tags":{},"startTime":1764108333136,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1083,"timestamp":475688049109,"id":4548,"parentId":4544,"tags":{},"startTime":1764108333136,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":475688050204,"id":4549,"parentId":4544,"tags":{},"startTime":1764108333137,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":475688050217,"id":4550,"parentId":4544,"tags":{},"startTime":1764108333137,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1359,"timestamp":475688049042,"id":4546,"parentId":4544,"tags":{},"startTime":1764108333136,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":167,"timestamp":475688050807,"id":4551,"parentId":4544,"tags":{},"startTime":1764108333138,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":569,"timestamp":475688050977,"id":4552,"parentId":4544,"tags":{},"startTime":1764108333138,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":399,"timestamp":475688051963,"id":4553,"parentId":4544,"tags":{},"startTime":1764108333139,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":28,"timestamp":475688052363,"id":4554,"parentId":4544,"tags":{},"startTime":1764108333139,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":18,"timestamp":475688052389,"id":4555,"parentId":4544,"tags":{},"startTime":1764108333139,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":749,"timestamp":475688052408,"id":4556,"parentId":4544,"tags":{},"startTime":1764108333139,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":6793,"timestamp":475688047507,"id":4544,"parentId":4510,"tags":{},"startTime":1764108333134,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":47555,"timestamp":475688008587,"id":4510,"parentId":4472,"tags":{"name":"server"},"startTime":1764108333095,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1825,"timestamp":475688056179,"id":4557,"parentId":4472,"tags":{},"startTime":1764108333143,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":103514,"timestamp":475687955052,"id":4472,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/[partId]/page.tsx"},"startTime":1764108333042,"traceId":"e274ac96b05c42d4"}] +[{"name":"handle-request","duration":16691,"timestamp":475688062312,"id":4559,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108333149,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475688079024,"id":4561,"parentId":4559,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"587464704","memory.heapUsed":"211900928","memory.heapTotal":"272809984"},"startTime":1764108333166,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":17177,"timestamp":475688062085,"id":4558,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108333149,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475688079271,"id":4562,"parentId":4558,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"587464704","memory.heapUsed":"211953696","memory.heapTotal":"272809984"},"startTime":1764108333166,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":3563,"timestamp":475688078681,"id":4560,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108333165,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475688082254,"id":4563,"parentId":4560,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"587464704","memory.heapUsed":"212757840","memory.heapTotal":"272809984"},"startTime":1764108333169,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4899,"timestamp":475690758878,"id":4569,"parentId":4567,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108335846,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4907,"timestamp":475690758882,"id":4570,"parentId":4567,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108335846,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5091,"timestamp":475690758883,"id":4571,"parentId":4567,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108335846,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5540,"timestamp":475690758856,"id":4568,"parentId":4567,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108335846,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1009,"timestamp":475690763420,"id":4575,"parentId":4574,"tags":{},"startTime":1764108335850,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1072,"timestamp":475690763359,"id":4574,"parentId":4573,"tags":{},"startTime":1764108335850,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":1721,"timestamp":475690763209,"id":4573,"parentId":4566,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"rsc"},"startTime":1764108335850,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7175,"timestamp":475690758885,"id":4572,"parentId":4567,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108335846,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1785,"timestamp":475690767772,"id":4593,"parentId":4592,"tags":{},"startTime":1764108335855,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1910,"timestamp":475690767653,"id":4592,"parentId":4591,"tags":{},"startTime":1764108335854,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":4596,"timestamp":475690767571,"id":4591,"parentId":4566,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"ssr"},"startTime":1764108335854,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1208,"timestamp":475690774151,"id":4596,"parentId":4595,"tags":{},"startTime":1764108335861,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1256,"timestamp":475690774106,"id":4595,"parentId":4594,"tags":{},"startTime":1764108335861,"traceId":"e274ac96b05c42d4"},{"name":"build-module-ts","duration":2371,"timestamp":475690774023,"id":4594,"parentId":4591,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/data.ts","layer":"ssr"},"startTime":1764108335861,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":18428,"timestamp":475690757983,"id":4567,"parentId":4566,"tags":{},"startTime":1764108335845,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1454,"timestamp":475690777490,"id":4598,"parentId":4597,"tags":{},"startTime":1764108335864,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":475690778953,"id":4600,"parentId":4597,"tags":{},"startTime":1764108335866,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1296,"timestamp":475690778960,"id":4601,"parentId":4597,"tags":{},"startTime":1764108335866,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":475690780264,"id":4602,"parentId":4597,"tags":{},"startTime":1764108335867,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":475690780272,"id":4603,"parentId":4597,"tags":{},"startTime":1764108335867,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1446,"timestamp":475690778951,"id":4599,"parentId":4597,"tags":{},"startTime":1764108335866,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":204,"timestamp":475690780915,"id":4604,"parentId":4597,"tags":{},"startTime":1764108335868,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":671,"timestamp":475690781123,"id":4605,"parentId":4597,"tags":{},"startTime":1764108335868,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":663,"timestamp":475690782141,"id":4606,"parentId":4597,"tags":{},"startTime":1764108335869,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":35,"timestamp":475690782805,"id":4607,"parentId":4597,"tags":{},"startTime":1764108335870,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":17,"timestamp":475690782836,"id":4608,"parentId":4597,"tags":{},"startTime":1764108335870,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":906,"timestamp":475690782855,"id":4609,"parentId":4597,"tags":{},"startTime":1764108335870,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7243,"timestamp":475690777262,"id":4597,"parentId":4566,"tags":{},"startTime":1764108335864,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":28457,"timestamp":475690757812,"id":4566,"parentId":4564,"tags":{"name":"server"},"startTime":1764108335845,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1310,"timestamp":475690786279,"id":4610,"parentId":4564,"tags":{},"startTime":1764108335873,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":37089,"timestamp":475690750682,"id":4564,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/[partId]/page.tsx"},"startTime":1764108335837,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2098,"timestamp":475690791857,"id":4619,"parentId":4612,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108335879,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2119,"timestamp":475690791860,"id":4621,"parentId":4612,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108335879,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":2391,"timestamp":475690791824,"id":4613,"parentId":4612,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764108335879,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3032,"timestamp":475690791854,"id":4618,"parentId":4612,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108335879,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2067,"timestamp":475690793427,"id":4625,"parentId":4624,"tags":{},"startTime":1764108335880,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2138,"timestamp":475690793357,"id":4624,"parentId":4623,"tags":{},"startTime":1764108335880,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":4831,"timestamp":475690793288,"id":4623,"parentId":4611,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"app-pages-browser"},"startTime":1764108335880,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6613,"timestamp":475690791850,"id":4615,"parentId":4612,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764108335879,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8848,"timestamp":475690791852,"id":4617,"parentId":4612,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108335879,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":5710,"timestamp":475690795004,"id":4627,"parentId":4626,"tags":{},"startTime":1764108335882,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":10024,"timestamp":475690791847,"id":4614,"parentId":4612,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764108335879,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":8553,"timestamp":475690800737,"id":4629,"parentId":4628,"tags":{},"startTime":1764108335888,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":8786,"timestamp":475690800726,"id":4628,"parentId":4626,"tags":{},"startTime":1764108335888,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":1761,"timestamp":475690809519,"id":4633,"parentId":4626,"tags":{"astUsed":"true"},"startTime":1764108335896,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":16802,"timestamp":475690794958,"id":4626,"parentId":4622,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764108335882,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":10054,"timestamp":475690801914,"id":4632,"parentId":4631,"tags":{},"startTime":1764108335889,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":10094,"timestamp":475690801874,"id":4631,"parentId":4630,"tags":{},"startTime":1764108335889,"traceId":"e274ac96b05c42d4"},{"name":"build-module-ts","duration":11122,"timestamp":475690801803,"id":4630,"parentId":4623,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/data.ts","layer":"app-pages-browser"},"startTime":1764108335889,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":21075,"timestamp":475690791859,"id":4620,"parentId":4612,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108335879,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":20854,"timestamp":475690793121,"id":4622,"parentId":4611,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764108335880,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":7,"timestamp":475690814039,"id":4634,"parentId":4622,"tags":{},"startTime":1764108335901,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":22214,"timestamp":475690791851,"id":4616,"parentId":4612,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108335879,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":25500,"timestamp":475690788571,"id":4612,"parentId":4611,"tags":{},"startTime":1764108335875,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":652,"timestamp":475690814859,"id":4636,"parentId":4635,"tags":{},"startTime":1764108335902,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":475690815516,"id":4638,"parentId":4635,"tags":{},"startTime":1764108335902,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":16,"timestamp":475690815523,"id":4639,"parentId":4635,"tags":{},"startTime":1764108335902,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":1,"timestamp":475690815544,"id":4640,"parentId":4635,"tags":{},"startTime":1764108335902,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":475690815553,"id":4641,"parentId":4635,"tags":{},"startTime":1764108335902,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":262,"timestamp":475690815514,"id":4637,"parentId":4635,"tags":{},"startTime":1764108335902,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":166,"timestamp":475690816207,"id":4642,"parentId":4635,"tags":{},"startTime":1764108335903,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":650,"timestamp":475690816376,"id":4643,"parentId":4635,"tags":{},"startTime":1764108335903,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1111,"timestamp":475690817398,"id":4644,"parentId":4635,"tags":{},"startTime":1764108335904,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":42,"timestamp":475690818509,"id":4645,"parentId":4635,"tags":{},"startTime":1764108335905,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":17,"timestamp":475690818548,"id":4646,"parentId":4635,"tags":{},"startTime":1764108335905,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1802,"timestamp":475690818566,"id":4647,"parentId":4635,"tags":{},"startTime":1764108335905,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":22,"timestamp":475690820640,"id":4649,"parentId":4611,"tags":{},"startTime":1764108335907,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":60,"timestamp":475690820615,"id":4648,"parentId":4611,"tags":{},"startTime":1764108335907,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":6654,"timestamp":475690814607,"id":4635,"parentId":4611,"tags":{},"startTime":1764108335901,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":32846,"timestamp":475690788425,"id":4611,"parentId":4565,"tags":{"name":"client"},"startTime":1764108335875,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2264,"timestamp":475690821279,"id":4650,"parentId":4565,"tags":{},"startTime":1764108335908,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":73273,"timestamp":475690750731,"id":4565,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/[partId]/page.tsx"},"startTime":1764108335838,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":1,"timestamp":475690824602,"id":4651,"parentId":3,"tags":{},"startTime":1764108335911,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":76000,"timestamp":475690750765,"id":4653,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108335918,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475690830851,"id":4654,"parentId":3,"tags":{},"startTime":1764108335918,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475690830864,"id":4655,"parentId":3,"tags":{},"startTime":1764108335918,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7345,"timestamp":475690825034,"id":4652,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108335912,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475690832392,"id":4657,"parentId":4652,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"625393664","memory.heapUsed":"230301560","memory.heapTotal":"314228736"},"startTime":1764108335919,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4258,"timestamp":475690830969,"id":4656,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108335918,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475690835237,"id":4658,"parentId":4656,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"626147328","memory.heapUsed":"231070104","memory.heapTotal":"314753024"},"startTime":1764108335922,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":2713,"timestamp":475690835679,"id":4659,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108335922,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475690838400,"id":4660,"parentId":4659,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"627081216","memory.heapUsed":"232007728","memory.heapTotal":"315801600"},"startTime":1764108335925,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":91000,"timestamp":475690750712,"id":4661,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108335930,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":93000,"timestamp":475690750888,"id":4662,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/[categoryId]/[partId]/data.ts","[project]/app/gunbuilder/[categoryId]/[partId]/page.tsx"],"page":"/gunbuilder","isPageHidden":false},"startTime":1764108335932,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6002,"timestamp":475715715451,"id":4673,"parentId":4666,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108360802,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6023,"timestamp":475715715455,"id":4675,"parentId":4666,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108360802,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6308,"timestamp":475715715409,"id":4667,"parentId":4666,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764108360802,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7014,"timestamp":475715715450,"id":4672,"parentId":4666,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108360802,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2247,"timestamp":475715720486,"id":4679,"parentId":4678,"tags":{},"startTime":1764108360807,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2358,"timestamp":475715720376,"id":4678,"parentId":4677,"tags":{},"startTime":1764108360807,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":10202,"timestamp":475715720275,"id":4677,"parentId":4665,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"app-pages-browser"},"startTime":1764108360807,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":15985,"timestamp":475715715446,"id":4669,"parentId":4666,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764108360802,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":16660,"timestamp":475715715449,"id":4671,"parentId":4666,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108360802,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":9946,"timestamp":475715722610,"id":4681,"parentId":4680,"tags":{},"startTime":1764108360809,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":19816,"timestamp":475715715441,"id":4668,"parentId":4666,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764108360802,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":13838,"timestamp":475715732610,"id":4683,"parentId":4682,"tags":{},"startTime":1764108360819,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":14159,"timestamp":475715732589,"id":4682,"parentId":4680,"tags":{},"startTime":1764108360819,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2976,"timestamp":475715746768,"id":4684,"parentId":4680,"tags":{"astUsed":"true"},"startTime":1764108360834,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":28772,"timestamp":475715722560,"id":4680,"parentId":4676,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764108360809,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":32899,"timestamp":475715719968,"id":4676,"parentId":4665,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764108360807,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":10,"timestamp":475715752932,"id":4685,"parentId":4676,"tags":{},"startTime":1764108360840,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":37515,"timestamp":475715715448,"id":4670,"parentId":4666,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108360802,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1442,"timestamp":475715754668,"id":4689,"parentId":4688,"tags":{},"startTime":1764108360841,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1495,"timestamp":475715754617,"id":4688,"parentId":4686,"tags":{},"startTime":1764108360841,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":3656,"timestamp":475715754439,"id":4686,"parentId":4677,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx","layer":"app-pages-browser"},"startTime":1764108360841,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":4228,"timestamp":475715754696,"id":4691,"parentId":4690,"tags":{},"startTime":1764108360841,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":4255,"timestamp":475715754670,"id":4690,"parentId":4687,"tags":{},"startTime":1764108360841,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":6445,"timestamp":475715754565,"id":4687,"parentId":4677,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx","layer":"app-pages-browser"},"startTime":1764108360841,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":47516,"timestamp":475715715453,"id":4674,"parentId":4666,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108360802,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":47754,"timestamp":475715715230,"id":4666,"parentId":4665,"tags":{},"startTime":1764108360802,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":815,"timestamp":475715764098,"id":4693,"parentId":4692,"tags":{},"startTime":1764108360851,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":3,"timestamp":475715764925,"id":4695,"parentId":4692,"tags":{},"startTime":1764108360852,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":21,"timestamp":475715764938,"id":4696,"parentId":4692,"tags":{},"startTime":1764108360852,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":4,"timestamp":475715764969,"id":4697,"parentId":4692,"tags":{},"startTime":1764108360852,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":475715764982,"id":4698,"parentId":4692,"tags":{},"startTime":1764108360852,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":323,"timestamp":475715764921,"id":4694,"parentId":4692,"tags":{},"startTime":1764108360852,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":322,"timestamp":475715765693,"id":4699,"parentId":4692,"tags":{},"startTime":1764108360852,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":1179,"timestamp":475715766020,"id":4700,"parentId":4692,"tags":{},"startTime":1764108360853,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1879,"timestamp":475715767883,"id":4701,"parentId":4692,"tags":{},"startTime":1764108360855,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":94,"timestamp":475715769761,"id":4702,"parentId":4692,"tags":{},"startTime":1764108360857,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":42,"timestamp":475715769847,"id":4703,"parentId":4692,"tags":{},"startTime":1764108360857,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":3499,"timestamp":475715769892,"id":4704,"parentId":4692,"tags":{},"startTime":1764108360857,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":48,"timestamp":475715788524,"id":4706,"parentId":4665,"tags":{},"startTime":1764108360875,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":81,"timestamp":475715788494,"id":4705,"parentId":4665,"tags":{},"startTime":1764108360875,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":25526,"timestamp":475715763826,"id":4692,"parentId":4665,"tags":{},"startTime":1764108360851,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":74358,"timestamp":475715715011,"id":4665,"parentId":4663,"tags":{"name":"client"},"startTime":1764108360802,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2880,"timestamp":475715789386,"id":4707,"parentId":4663,"tags":{},"startTime":1764108360876,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":85080,"timestamp":475715707681,"id":4663,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/[partId]/page.tsx"},"startTime":1764108360794,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":1,"timestamp":475715794520,"id":4710,"parentId":3,"tags":{},"startTime":1764108360881,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475715794553,"id":4711,"parentId":3,"tags":{},"startTime":1764108360881,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475715794566,"id":4712,"parentId":3,"tags":{},"startTime":1764108360881,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":92000,"timestamp":475715708459,"id":4718,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108360889,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6782,"timestamp":475715796596,"id":4714,"parentId":4709,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108360883,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6784,"timestamp":475715796598,"id":4715,"parentId":4709,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108360883,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7116,"timestamp":475715796599,"id":4716,"parentId":4709,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108360883,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7263,"timestamp":475715796564,"id":4713,"parentId":4709,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108360883,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":969,"timestamp":475715803018,"id":4721,"parentId":4720,"tags":{},"startTime":1764108360890,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1047,"timestamp":475715802943,"id":4720,"parentId":4719,"tags":{},"startTime":1764108360890,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":2194,"timestamp":475715802793,"id":4719,"parentId":4708,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"rsc"},"startTime":1764108360890,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":9646,"timestamp":475715796601,"id":4717,"parentId":4709,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108360883,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":98000,"timestamp":475715708198,"id":4737,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/[categoryId]/[partId]/page.tsx","[project]/components/PricingHistoryGraph.tsx","[project]/components/RetailersList.tsx"],"page":"/gunbuilder","isPageHidden":false},"startTime":1764108360894,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":97000,"timestamp":475715708466,"id":4738,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108360894,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2014,"timestamp":475715808103,"id":4741,"parentId":4740,"tags":{},"startTime":1764108360895,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2083,"timestamp":475715808038,"id":4740,"parentId":4739,"tags":{},"startTime":1764108360895,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":5752,"timestamp":475715807909,"id":4739,"parentId":4708,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"ssr"},"startTime":1764108360895,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1558,"timestamp":475715815947,"id":4747,"parentId":4746,"tags":{},"startTime":1764108360903,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1592,"timestamp":475715815919,"id":4746,"parentId":4743,"tags":{},"startTime":1764108360903,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":3255,"timestamp":475715815833,"id":4743,"parentId":4739,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx","layer":"ssr"},"startTime":1764108360903,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":3222,"timestamp":475715815917,"id":4745,"parentId":4744,"tags":{},"startTime":1764108360903,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":3266,"timestamp":475715815874,"id":4744,"parentId":4742,"tags":{},"startTime":1764108360903,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":5166,"timestamp":475715815757,"id":4742,"parentId":4739,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx","layer":"ssr"},"startTime":1764108360903,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":29021,"timestamp":475715793815,"id":4709,"parentId":4708,"tags":{},"startTime":1764108360881,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1277,"timestamp":475715823950,"id":4749,"parentId":4748,"tags":{},"startTime":1764108360911,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":475715825238,"id":4751,"parentId":4748,"tags":{},"startTime":1764108360912,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1166,"timestamp":475715825248,"id":4752,"parentId":4748,"tags":{},"startTime":1764108360912,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":475715826430,"id":4753,"parentId":4748,"tags":{},"startTime":1764108360913,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":475715826442,"id":4754,"parentId":4748,"tags":{},"startTime":1764108360913,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1493,"timestamp":475715825234,"id":4750,"parentId":4748,"tags":{},"startTime":1764108360912,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":222,"timestamp":475715827234,"id":4755,"parentId":4748,"tags":{},"startTime":1764108360914,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":1050,"timestamp":475715827461,"id":4756,"parentId":4748,"tags":{},"startTime":1764108360914,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":671,"timestamp":475715829040,"id":4757,"parentId":4748,"tags":{},"startTime":1764108360916,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":591,"timestamp":475715829711,"id":4758,"parentId":4748,"tags":{},"startTime":1764108360917,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":27,"timestamp":475715830300,"id":4759,"parentId":4748,"tags":{},"startTime":1764108360917,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1282,"timestamp":475715830329,"id":4760,"parentId":4748,"tags":{},"startTime":1764108360917,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":8750,"timestamp":475715823735,"id":4748,"parentId":4708,"tags":{},"startTime":1764108360911,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":40462,"timestamp":475715793637,"id":4708,"parentId":4664,"tags":{"name":"server"},"startTime":1764108360880,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1775,"timestamp":475715834116,"id":4761,"parentId":4664,"tags":{},"startTime":1764108360921,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":128523,"timestamp":475715707883,"id":4664,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/[partId]/page.tsx"},"startTime":1764108360795,"traceId":"e274ac96b05c42d4"}] +[{"name":"handle-request","duration":10340,"timestamp":475715841331,"id":4763,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108360928,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475715851699,"id":4765,"parentId":4763,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"531234816","memory.heapUsed":"204474904","memory.heapTotal":"222609408"},"startTime":1764108360938,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":10662,"timestamp":475715841111,"id":4762,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108360928,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475715851778,"id":4766,"parentId":4762,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"531234816","memory.heapUsed":"204485976","memory.heapTotal":"222609408"},"startTime":1764108360939,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4306,"timestamp":475715851033,"id":4764,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108360938,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475715855352,"id":4767,"parentId":4764,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"531234816","memory.heapUsed":"205256784","memory.heapTotal":"222609408"},"startTime":1764108360942,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7840,"timestamp":475728954212,"id":4773,"parentId":4771,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108374041,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7846,"timestamp":475728954216,"id":4774,"parentId":4771,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108374041,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8130,"timestamp":475728954222,"id":4775,"parentId":4771,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108374041,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2316,"timestamp":475728961474,"id":4779,"parentId":4778,"tags":{},"startTime":1764108374048,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2432,"timestamp":475728961361,"id":4778,"parentId":4777,"tags":{},"startTime":1764108374048,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":3173,"timestamp":475728961120,"id":4777,"parentId":4770,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"rsc"},"startTime":1764108374048,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":10467,"timestamp":475728954154,"id":4772,"parentId":4771,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108374041,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":11409,"timestamp":475728954224,"id":4776,"parentId":4771,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108374041,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1810,"timestamp":475728968317,"id":4797,"parentId":4796,"tags":{},"startTime":1764108374055,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1904,"timestamp":475728968229,"id":4796,"parentId":4795,"tags":{},"startTime":1764108374055,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":4424,"timestamp":475728968036,"id":4795,"parentId":4770,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"ssr"},"startTime":1764108374055,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1760,"timestamp":475728975153,"id":4800,"parentId":4799,"tags":{},"startTime":1764108374062,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1819,"timestamp":475728975098,"id":4799,"parentId":4798,"tags":{},"startTime":1764108374062,"traceId":"e274ac96b05c42d4"},{"name":"build-module-ts","duration":2972,"timestamp":475728974958,"id":4798,"parentId":4795,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/data.ts","layer":"ssr"},"startTime":1764108374062,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2073,"timestamp":475728975890,"id":4806,"parentId":4805,"tags":{},"startTime":1764108374063,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2104,"timestamp":475728975860,"id":4805,"parentId":4802,"tags":{},"startTime":1764108374063,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":3069,"timestamp":475728975778,"id":4802,"parentId":4795,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx","layer":"ssr"},"startTime":1764108374063,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":3256,"timestamp":475728975858,"id":4804,"parentId":4803,"tags":{},"startTime":1764108374063,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":3294,"timestamp":475728975821,"id":4803,"parentId":4801,"tags":{},"startTime":1764108374063,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":4311,"timestamp":475728975718,"id":4801,"parentId":4795,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx","layer":"ssr"},"startTime":1764108374062,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":27679,"timestamp":475728953134,"id":4771,"parentId":4770,"tags":{},"startTime":1764108374040,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1382,"timestamp":475728982007,"id":4808,"parentId":4807,"tags":{},"startTime":1764108374069,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":475728983402,"id":4810,"parentId":4807,"tags":{},"startTime":1764108374070,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1092,"timestamp":475728983412,"id":4811,"parentId":4807,"tags":{},"startTime":1764108374070,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":475728984515,"id":4812,"parentId":4807,"tags":{},"startTime":1764108374071,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":475728984525,"id":4813,"parentId":4807,"tags":{},"startTime":1764108374071,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1291,"timestamp":475728983397,"id":4809,"parentId":4807,"tags":{},"startTime":1764108374070,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":189,"timestamp":475728985062,"id":4814,"parentId":4807,"tags":{},"startTime":1764108374072,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":342,"timestamp":475728985254,"id":4815,"parentId":4807,"tags":{},"startTime":1764108374072,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1256,"timestamp":475728985915,"id":4816,"parentId":4807,"tags":{},"startTime":1764108374073,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":34,"timestamp":475728987171,"id":4817,"parentId":4807,"tags":{},"startTime":1764108374074,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":20,"timestamp":475728987203,"id":4818,"parentId":4807,"tags":{},"startTime":1764108374074,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":57,"timestamp":475728987225,"id":4819,"parentId":4807,"tags":{},"startTime":1764108374074,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":6346,"timestamp":475728981782,"id":4807,"parentId":4770,"tags":{},"startTime":1764108374069,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":36644,"timestamp":475728952897,"id":4770,"parentId":4769,"tags":{"name":"server"},"startTime":1764108374040,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1461,"timestamp":475728989551,"id":4820,"parentId":4769,"tags":{},"startTime":1764108374076,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":45063,"timestamp":475728946205,"id":4769,"parentId":3,"tags":{"trigger":"components/PricingHistoryGraph.tsx"},"startTime":1764108374033,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3381,"timestamp":475728994769,"id":4829,"parentId":4822,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108374082,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3403,"timestamp":475728994771,"id":4831,"parentId":4822,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108374082,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3678,"timestamp":475728994739,"id":4823,"parentId":4822,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764108374082,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4365,"timestamp":475728994768,"id":4828,"parentId":4822,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108374082,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5105,"timestamp":475728994763,"id":4825,"parentId":4822,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764108374082,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5178,"timestamp":475728994766,"id":4827,"parentId":4822,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108374082,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":674,"timestamp":475728999275,"id":4837,"parentId":4836,"tags":{},"startTime":1764108374086,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":4765,"timestamp":475728997544,"id":4835,"parentId":4834,"tags":{},"startTime":1764108374084,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":4832,"timestamp":475728997480,"id":4834,"parentId":4833,"tags":{},"startTime":1764108374084,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":7759,"timestamp":475728997400,"id":4833,"parentId":4821,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"app-pages-browser"},"startTime":1764108374084,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":10857,"timestamp":475728994761,"id":4824,"parentId":4822,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764108374082,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":21607,"timestamp":475728999970,"id":4839,"parentId":4838,"tags":{},"startTime":1764108374087,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":21887,"timestamp":475728999962,"id":4838,"parentId":4836,"tags":{},"startTime":1764108374087,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2695,"timestamp":475729021864,"id":4849,"parentId":4836,"tags":{"astUsed":"true"},"startTime":1764108374109,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":27799,"timestamp":475728999217,"id":4836,"parentId":4832,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764108374086,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":27551,"timestamp":475729007938,"id":4844,"parentId":4843,"tags":{},"startTime":1764108374095,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":27616,"timestamp":475729007877,"id":4843,"parentId":4840,"tags":{},"startTime":1764108374095,"traceId":"e274ac96b05c42d4"},{"name":"build-module-ts","duration":29748,"timestamp":475729007477,"id":4840,"parentId":4833,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/data.ts","layer":"app-pages-browser"},"startTime":1764108374094,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":29294,"timestamp":475729007984,"id":4846,"parentId":4845,"tags":{},"startTime":1764108374095,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":29338,"timestamp":475729007941,"id":4845,"parentId":4841,"tags":{},"startTime":1764108374095,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":31249,"timestamp":475729007655,"id":4841,"parentId":4833,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/PricingHistoryGraph.tsx","layer":"app-pages-browser"},"startTime":1764108374094,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":30922,"timestamp":475729008020,"id":4848,"parentId":4847,"tags":{},"startTime":1764108374095,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":30957,"timestamp":475729007985,"id":4847,"parentId":4842,"tags":{},"startTime":1764108374095,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":33113,"timestamp":475729007814,"id":4842,"parentId":4833,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/RetailersList.tsx","layer":"app-pages-browser"},"startTime":1764108374095,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":46645,"timestamp":475728994770,"id":4830,"parentId":4822,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108374082,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":45547,"timestamp":475728997203,"id":4832,"parentId":4821,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764108374084,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":9,"timestamp":475729042844,"id":4850,"parentId":4832,"tags":{},"startTime":1764108374130,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":48109,"timestamp":475728994765,"id":4826,"parentId":4822,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108374082,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":50953,"timestamp":475728991930,"id":4822,"parentId":4821,"tags":{},"startTime":1764108374079,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":783,"timestamp":475729043737,"id":4852,"parentId":4851,"tags":{},"startTime":1764108374131,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":3,"timestamp":475729044530,"id":4854,"parentId":4851,"tags":{},"startTime":1764108374131,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":20,"timestamp":475729044540,"id":4855,"parentId":4851,"tags":{},"startTime":1764108374131,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":475729044568,"id":4856,"parentId":4851,"tags":{},"startTime":1764108374131,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":475729044583,"id":4857,"parentId":4851,"tags":{},"startTime":1764108374131,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":314,"timestamp":475729044527,"id":4853,"parentId":4851,"tags":{},"startTime":1764108374131,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":209,"timestamp":475729045260,"id":4858,"parentId":4851,"tags":{},"startTime":1764108374132,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":441,"timestamp":475729045472,"id":4859,"parentId":4851,"tags":{},"startTime":1764108374132,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1808,"timestamp":475729046341,"id":4860,"parentId":4851,"tags":{},"startTime":1764108374133,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":69,"timestamp":475729048148,"id":4861,"parentId":4851,"tags":{},"startTime":1764108374135,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":30,"timestamp":475729048212,"id":4862,"parentId":4851,"tags":{},"startTime":1764108374135,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1325,"timestamp":475729048245,"id":4863,"parentId":4851,"tags":{},"startTime":1764108374135,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":36,"timestamp":475729049985,"id":4865,"parentId":4821,"tags":{},"startTime":1764108374137,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":72,"timestamp":475729049952,"id":4864,"parentId":4821,"tags":{},"startTime":1764108374137,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":7295,"timestamp":475729043487,"id":4851,"parentId":4821,"tags":{},"startTime":1764108374130,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":58998,"timestamp":475728991800,"id":4821,"parentId":4768,"tags":{"name":"client"},"startTime":1764108374079,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2771,"timestamp":475729050812,"id":4866,"parentId":4768,"tags":{},"startTime":1764108374138,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":108612,"timestamp":475728945995,"id":4768,"parentId":3,"tags":{"trigger":"components/PricingHistoryGraph.tsx"},"startTime":1764108374033,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":6,"timestamp":475729055580,"id":4867,"parentId":3,"tags":{},"startTime":1764108374142,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475729055611,"id":4868,"parentId":3,"tags":{},"startTime":1764108374142,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475729055625,"id":4869,"parentId":3,"tags":{},"startTime":1764108374142,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":113000,"timestamp":475728945768,"id":4872,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108374152,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":11492,"timestamp":475729056239,"id":4870,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108374143,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475729067748,"id":4873,"parentId":4870,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"551321600","memory.heapUsed":"197366000","memory.heapTotal":"243253248"},"startTime":1764108374155,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":12731,"timestamp":475729057477,"id":4871,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108374144,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475729070232,"id":4874,"parentId":4871,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"551321600","memory.heapUsed":"197866720","memory.heapTotal":"243253248"},"startTime":1764108374157,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":123000,"timestamp":475728946253,"id":4875,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":false},"startTime":1764108374158,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":130000,"timestamp":475728945845,"id":4877,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108374164,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":4994,"timestamp":475729072166,"id":4876,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108374159,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475729077175,"id":4878,"parentId":4876,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"551321600","memory.heapUsed":"198759048","memory.heapTotal":"243253248"},"startTime":1764108374164,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":23315,"timestamp":475760085079,"id":4879,"tags":{"url":"/gunbuilder/upper?_rsc=1tdvv","isTurbopack":false},"startTime":1764108405172,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475760108426,"id":4880,"parentId":4879,"tags":{"url":"/gunbuilder/upper?_rsc=1tdvv","memory.rss":"500301824","memory.heapUsed":"185583488","memory.heapTotal":"195231744"},"startTime":1764108405195,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":14445,"timestamp":475760978842,"id":4881,"tags":{"url":"/gunbuilder/upper/upper-aero-enhanced?_rsc=1qtj8","isTurbopack":false},"startTime":1764108406066,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":1,"timestamp":475760993327,"id":4882,"parentId":4881,"tags":{"url":"/gunbuilder/upper/upper-aero-enhanced?_rsc=1qtj8","memory.rss":"501153792","memory.heapUsed":"185960584","memory.heapTotal":"196083712"},"startTime":1764108406080,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4071,"timestamp":475815493879,"id":4893,"parentId":4886,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108460581,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4099,"timestamp":475815493882,"id":4895,"parentId":4886,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108460581,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4881,"timestamp":475815493812,"id":4887,"parentId":4886,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764108460581,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5445,"timestamp":475815493872,"id":4892,"parentId":4886,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108460581,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2272,"timestamp":475815497313,"id":4899,"parentId":4898,"tags":{},"startTime":1764108460584,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2352,"timestamp":475815497235,"id":4898,"parentId":4897,"tags":{},"startTime":1764108460584,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":8745,"timestamp":475815497153,"id":4897,"parentId":4885,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"app-pages-browser"},"startTime":1764108460584,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12809,"timestamp":475815493866,"id":4889,"parentId":4886,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764108460581,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":13565,"timestamp":475815493870,"id":4891,"parentId":4886,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108460581,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":8016,"timestamp":475815499466,"id":4901,"parentId":4900,"tags":{},"startTime":1764108460586,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":16340,"timestamp":475815493880,"id":4894,"parentId":4886,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108460581,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":16382,"timestamp":475815493862,"id":4888,"parentId":4886,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764108460581,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":13011,"timestamp":475815507527,"id":4903,"parentId":4902,"tags":{},"startTime":1764108460594,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":13298,"timestamp":475815507494,"id":4902,"parentId":4900,"tags":{},"startTime":1764108460594,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":3027,"timestamp":475815520806,"id":4904,"parentId":4900,"tags":{"astUsed":"true"},"startTime":1764108460608,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":25818,"timestamp":475815499389,"id":4900,"parentId":4896,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764108460586,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":30676,"timestamp":475815496805,"id":4896,"parentId":4885,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764108460584,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":14,"timestamp":475815527568,"id":4905,"parentId":4896,"tags":{},"startTime":1764108460614,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":33733,"timestamp":475815493868,"id":4890,"parentId":4886,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108460581,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":34026,"timestamp":475815493586,"id":4886,"parentId":4885,"tags":{},"startTime":1764108460580,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1002,"timestamp":475815533730,"id":4907,"parentId":4906,"tags":{},"startTime":1764108460620,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":5,"timestamp":475815534747,"id":4909,"parentId":4906,"tags":{},"startTime":1764108460621,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":36,"timestamp":475815534788,"id":4910,"parentId":4906,"tags":{},"startTime":1764108460622,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":5,"timestamp":475815534847,"id":4911,"parentId":4906,"tags":{},"startTime":1764108460622,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":6,"timestamp":475815534874,"id":4912,"parentId":4906,"tags":{},"startTime":1764108460622,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":493,"timestamp":475815534742,"id":4908,"parentId":4906,"tags":{},"startTime":1764108460621,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":289,"timestamp":475815535984,"id":4913,"parentId":4906,"tags":{},"startTime":1764108460623,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":1103,"timestamp":475815536279,"id":4914,"parentId":4906,"tags":{},"startTime":1764108460623,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":2029,"timestamp":475815538104,"id":4915,"parentId":4906,"tags":{},"startTime":1764108460625,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":82,"timestamp":475815540133,"id":4916,"parentId":4906,"tags":{},"startTime":1764108460627,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":34,"timestamp":475815540205,"id":4917,"parentId":4906,"tags":{},"startTime":1764108460627,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":11828,"timestamp":475815540241,"id":4918,"parentId":4906,"tags":{},"startTime":1764108460627,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":59,"timestamp":475815552629,"id":4920,"parentId":4885,"tags":{},"startTime":1764108460639,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":86,"timestamp":475815552604,"id":4919,"parentId":4885,"tags":{},"startTime":1764108460639,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":20028,"timestamp":475815533395,"id":4906,"parentId":4885,"tags":{},"startTime":1764108460620,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":60032,"timestamp":475815493407,"id":4885,"parentId":4883,"tags":{"name":"client"},"startTime":1764108460580,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2588,"timestamp":475815553450,"id":4921,"parentId":4883,"tags":{},"startTime":1764108460640,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":70348,"timestamp":475815486182,"id":4883,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/[partId]/page.tsx"},"startTime":1764108460573,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":1,"timestamp":475815558123,"id":4924,"parentId":3,"tags":{},"startTime":1764108460645,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475815558156,"id":4925,"parentId":3,"tags":{},"startTime":1764108460645,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475815558168,"id":4926,"parentId":3,"tags":{},"startTime":1764108460645,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":75000,"timestamp":475815486673,"id":4932,"parentId":3,"tags":{"updatedModules":["[project]/components/PricingHistoryGraph.tsx"],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108460650,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7250,"timestamp":475815559931,"id":4928,"parentId":4923,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108460647,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7259,"timestamp":475815559933,"id":4929,"parentId":4923,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108460647,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7447,"timestamp":475815559936,"id":4931,"parentId":4923,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108460647,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7626,"timestamp":475815559901,"id":4927,"parentId":4923,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108460647,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":883,"timestamp":475815566796,"id":4935,"parentId":4934,"tags":{},"startTime":1764108460654,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":981,"timestamp":475815566699,"id":4934,"parentId":4933,"tags":{},"startTime":1764108460653,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":2161,"timestamp":475815566470,"id":4933,"parentId":4922,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"rsc"},"startTime":1764108460653,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":81000,"timestamp":475815485865,"id":4936,"parentId":3,"tags":{"updatedModules":["[project]/components/PricingHistoryGraph.tsx"],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108460656,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":10651,"timestamp":475815559934,"id":4930,"parentId":4923,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108460647,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1630,"timestamp":475815572312,"id":4954,"parentId":4953,"tags":{},"startTime":1764108460659,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1692,"timestamp":475815572252,"id":4953,"parentId":4952,"tags":{},"startTime":1764108460659,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":5447,"timestamp":475815572146,"id":4952,"parentId":4922,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"ssr"},"startTime":1764108460659,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":88000,"timestamp":475815486343,"id":4955,"parentId":3,"tags":{"updatedModules":["[project]/components/PricingHistoryGraph.tsx","[project]/app/gunbuilder/[categoryId]/[partId]/page.tsx"],"page":"/gunbuilder/upper/upper-aero-enhanced","isPageHidden":false},"startTime":1764108460665,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":24740,"timestamp":475815557449,"id":4923,"parentId":4922,"tags":{},"startTime":1764108460644,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1363,"timestamp":475815587255,"id":4957,"parentId":4956,"tags":{},"startTime":1764108460674,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":475815588630,"id":4959,"parentId":4956,"tags":{},"startTime":1764108460675,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1189,"timestamp":475815588677,"id":4960,"parentId":4956,"tags":{},"startTime":1764108460675,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":475815589880,"id":4961,"parentId":4956,"tags":{},"startTime":1764108460677,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":475815589891,"id":4962,"parentId":4956,"tags":{},"startTime":1764108460677,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1482,"timestamp":475815588627,"id":4958,"parentId":4956,"tags":{},"startTime":1764108460675,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":278,"timestamp":475815590725,"id":4963,"parentId":4956,"tags":{},"startTime":1764108460677,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":1424,"timestamp":475815591008,"id":4964,"parentId":4956,"tags":{},"startTime":1764108460678,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":838,"timestamp":475815593345,"id":4965,"parentId":4956,"tags":{},"startTime":1764108460680,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":60,"timestamp":475815594183,"id":4966,"parentId":4956,"tags":{},"startTime":1764108460681,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":27,"timestamp":475815594237,"id":4967,"parentId":4956,"tags":{},"startTime":1764108460681,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1204,"timestamp":475815594268,"id":4968,"parentId":4956,"tags":{},"startTime":1764108460681,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":9912,"timestamp":475815587039,"id":4956,"parentId":4922,"tags":{},"startTime":1764108460674,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":41511,"timestamp":475815557313,"id":4922,"parentId":4884,"tags":{"name":"server"},"startTime":1764108460644,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1707,"timestamp":475815598845,"id":4969,"parentId":4884,"tags":{},"startTime":1764108460686,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":114646,"timestamp":475815486416,"id":4884,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/[partId]/page.tsx"},"startTime":1764108460573,"traceId":"e274ac96b05c42d4"}] +[{"name":"handle-request","duration":21607,"timestamp":475815610313,"id":4970,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108460697,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475815631941,"id":4973,"parentId":4970,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"553009152","memory.heapUsed":"201493552","memory.heapTotal":"232341504"},"startTime":1764108460719,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":21480,"timestamp":475815610514,"id":4971,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108460697,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475815631999,"id":4974,"parentId":4971,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"553009152","memory.heapUsed":"201504624","memory.heapTotal":"232341504"},"startTime":1764108460719,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":21316,"timestamp":475815611075,"id":4972,"tags":{"url":"/gunbuilder/upper/upper-aero-enhanced?_rsc=yngwx","isTurbopack":false},"startTime":1764108460698,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475815632400,"id":4975,"parentId":4972,"tags":{"url":"/gunbuilder/upper/upper-aero-enhanced?_rsc=yngwx","memory.rss":"553009152","memory.heapUsed":"201539016","memory.heapTotal":"232341504"},"startTime":1764108460719,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4759,"timestamp":475819265235,"id":4981,"parentId":4979,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108464352,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4766,"timestamp":475819265241,"id":4983,"parentId":4979,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108464352,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4921,"timestamp":475819265239,"id":4982,"parentId":4979,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108464352,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":5227,"timestamp":475819265197,"id":4980,"parentId":4979,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108464352,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":868,"timestamp":475819269691,"id":4987,"parentId":4986,"tags":{},"startTime":1764108464356,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":950,"timestamp":475819269611,"id":4986,"parentId":4985,"tags":{},"startTime":1764108464356,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":1745,"timestamp":475819269451,"id":4985,"parentId":4978,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"rsc"},"startTime":1764108464356,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7036,"timestamp":475819265244,"id":4984,"parentId":4979,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108464352,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1554,"timestamp":475819273928,"id":5005,"parentId":5004,"tags":{},"startTime":1764108464361,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1607,"timestamp":475819273879,"id":5004,"parentId":5003,"tags":{},"startTime":1764108464361,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":4645,"timestamp":475819273802,"id":5003,"parentId":4978,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"ssr"},"startTime":1764108464361,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":18458,"timestamp":475819264360,"id":4979,"parentId":4978,"tags":{},"startTime":1764108464351,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1047,"timestamp":475819283697,"id":5007,"parentId":5006,"tags":{},"startTime":1764108464370,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":475819284751,"id":5009,"parentId":5006,"tags":{},"startTime":1764108464371,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1102,"timestamp":475819284758,"id":5010,"parentId":5006,"tags":{},"startTime":1764108464371,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":475819285870,"id":5011,"parentId":5006,"tags":{},"startTime":1764108464373,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":2,"timestamp":475819285880,"id":5012,"parentId":5006,"tags":{},"startTime":1764108464373,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1274,"timestamp":475819284748,"id":5008,"parentId":5006,"tags":{},"startTime":1764108464371,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":171,"timestamp":475819286434,"id":5013,"parentId":5006,"tags":{},"startTime":1764108464373,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":553,"timestamp":475819286609,"id":5014,"parentId":5006,"tags":{},"startTime":1764108464373,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":391,"timestamp":475819287524,"id":5015,"parentId":5006,"tags":{},"startTime":1764108464374,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":30,"timestamp":475819287915,"id":5016,"parentId":5006,"tags":{},"startTime":1764108464375,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":19,"timestamp":475819287942,"id":5017,"parentId":5006,"tags":{},"startTime":1764108464375,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":686,"timestamp":475819287963,"id":5018,"parentId":5006,"tags":{},"startTime":1764108464375,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":5898,"timestamp":475819283509,"id":5006,"parentId":4978,"tags":{},"startTime":1764108464370,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":26562,"timestamp":475819264209,"id":4978,"parentId":4976,"tags":{"name":"server"},"startTime":1764108464351,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1229,"timestamp":475819290780,"id":5019,"parentId":4976,"tags":{},"startTime":1764108464377,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":34772,"timestamp":475819257409,"id":4976,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/[partId]/page.tsx"},"startTime":1764108464344,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3079,"timestamp":475819296140,"id":5028,"parentId":5021,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108464383,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3095,"timestamp":475819296142,"id":5030,"parentId":5021,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108464383,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3351,"timestamp":475819296102,"id":5022,"parentId":5021,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764108464383,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":3801,"timestamp":475819296138,"id":5027,"parentId":5021,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108464383,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4351,"timestamp":475819296134,"id":5024,"parentId":5021,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764108464383,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":4402,"timestamp":475819296136,"id":5026,"parentId":5021,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108464383,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":499,"timestamp":475819300046,"id":5036,"parentId":5035,"tags":{},"startTime":1764108464387,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":6434,"timestamp":475819296123,"id":5023,"parentId":5021,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764108464383,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":3839,"timestamp":475819298792,"id":5034,"parentId":5033,"tags":{},"startTime":1764108464386,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":3889,"timestamp":475819298743,"id":5033,"parentId":5032,"tags":{},"startTime":1764108464385,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":6952,"timestamp":475819298683,"id":5032,"parentId":5020,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"app-pages-browser"},"startTime":1764108464385,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":15360,"timestamp":475819300562,"id":5038,"parentId":5037,"tags":{},"startTime":1764108464387,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":15606,"timestamp":475819300554,"id":5037,"parentId":5035,"tags":{},"startTime":1764108464387,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":3032,"timestamp":475819316174,"id":5039,"parentId":5035,"tags":{"astUsed":"true"},"startTime":1764108464403,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":19860,"timestamp":475819300005,"id":5035,"parentId":5031,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764108464387,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":23775,"timestamp":475819296141,"id":5029,"parentId":5021,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108464383,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":22952,"timestamp":475819298524,"id":5031,"parentId":5020,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764108464385,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":17,"timestamp":475819323392,"id":5040,"parentId":5031,"tags":{},"startTime":1764108464410,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":27295,"timestamp":475819296135,"id":5025,"parentId":5021,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108464383,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":30591,"timestamp":475819292854,"id":5021,"parentId":5020,"tags":{},"startTime":1764108464380,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":545,"timestamp":475819324181,"id":5042,"parentId":5041,"tags":{},"startTime":1764108464411,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":475819324732,"id":5044,"parentId":5041,"tags":{},"startTime":1764108464411,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":15,"timestamp":475819324738,"id":5045,"parentId":5041,"tags":{},"startTime":1764108464411,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":1,"timestamp":475819324759,"id":5046,"parentId":5041,"tags":{},"startTime":1764108464411,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":475819324768,"id":5047,"parentId":5041,"tags":{},"startTime":1764108464411,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":327,"timestamp":475819324730,"id":5043,"parentId":5041,"tags":{},"startTime":1764108464411,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":175,"timestamp":475819325407,"id":5048,"parentId":5041,"tags":{},"startTime":1764108464412,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":659,"timestamp":475819325585,"id":5049,"parentId":5041,"tags":{},"startTime":1764108464412,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1218,"timestamp":475819326657,"id":5050,"parentId":5041,"tags":{},"startTime":1764108464413,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":48,"timestamp":475819327875,"id":5051,"parentId":5041,"tags":{},"startTime":1764108464415,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":22,"timestamp":475819327920,"id":5052,"parentId":5041,"tags":{},"startTime":1764108464415,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":1471,"timestamp":475819327945,"id":5053,"parentId":5041,"tags":{},"startTime":1764108464415,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":26,"timestamp":475819329739,"id":5055,"parentId":5020,"tags":{},"startTime":1764108464416,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":51,"timestamp":475819329715,"id":5054,"parentId":5020,"tags":{},"startTime":1764108464416,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":6469,"timestamp":475819323953,"id":5041,"parentId":5020,"tags":{},"startTime":1764108464411,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":37737,"timestamp":475819292696,"id":5020,"parentId":4977,"tags":{"name":"client"},"startTime":1764108464379,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2249,"timestamp":475819330439,"id":5056,"parentId":4977,"tags":{},"startTime":1764108464417,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":75812,"timestamp":475819257454,"id":4977,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/[partId]/page.tsx"},"startTime":1764108464344,"traceId":"e274ac96b05c42d4"}] +[{"name":"client-success","duration":5,"timestamp":475819333959,"id":5057,"parentId":3,"tags":{},"startTime":1764108464421,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475819334711,"id":5059,"parentId":3,"tags":{},"startTime":1764108464421,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475819334954,"id":5060,"parentId":3,"tags":{},"startTime":1764108464422,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":80000,"timestamp":475819256913,"id":5063,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108464428,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":7947,"timestamp":475819334426,"id":5058,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108464421,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475819342384,"id":5064,"parentId":5058,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"567132160","memory.heapUsed":"222378944","memory.heapTotal":"250576896"},"startTime":1764108464429,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":11993,"timestamp":475819336653,"id":5061,"tags":{"url":"/gunbuilder/upper/upper-aero-enhanced?_rsc=3ya5y","isTurbopack":false},"startTime":1764108464423,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475819348661,"id":5065,"parentId":5061,"tags":{"url":"/gunbuilder/upper/upper-aero-enhanced?_rsc=3ya5y","memory.rss":"567803904","memory.heapUsed":"224598592","memory.heapTotal":"251166720"},"startTime":1764108464435,"traceId":"e274ac96b05c42d4"},{"name":"handle-request","duration":14126,"timestamp":475819336861,"id":5062,"tags":{"url":"/gunbuilder?_rsc=1kvbu","isTurbopack":false},"startTime":1764108464424,"traceId":"e274ac96b05c42d4"},{"name":"memory-usage","duration":0,"timestamp":475819350999,"id":5066,"parentId":5062,"tags":{"url":"/gunbuilder?_rsc=1kvbu","memory.rss":"567803904","memory.heapUsed":"224786360","memory.heapTotal":"251166720"},"startTime":1764108464438,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":101000,"timestamp":475819258374,"id":5067,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108464446,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":102000,"timestamp":475819258374,"id":5068,"parentId":3,"tags":{"updatedModules":["[project]/app/gunbuilder/[categoryId]/[partId]/page.tsx","[project]/components/PricingHistoryGraph.tsx"],"page":"/gunbuilder/upper/upper-aero-enhanced","isPageHidden":false},"startTime":1764108464447,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7183,"timestamp":475828208952,"id":5079,"parentId":5072,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108473296,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7210,"timestamp":475828208955,"id":5081,"parentId":5072,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fbuild%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108473296,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7564,"timestamp":475828208887,"id":5073,"parentId":5072,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764108473296,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8239,"timestamp":475828208950,"id":5078,"parentId":5072,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108473296,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":8843,"timestamp":475828208920,"id":5075,"parentId":5072,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js%22%2C%22ids%22%3A%5B%22*%22%5D%7D&server=false!"},"startTime":1764108473296,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":2338,"timestamp":475828215533,"id":5085,"parentId":5084,"tags":{},"startTime":1764108473302,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":2400,"timestamp":475828215473,"id":5084,"parentId":5083,"tags":{},"startTime":1764108473302,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":5562,"timestamp":475828215394,"id":5083,"parentId":5071,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"app-pages-browser"},"startTime":1764108473302,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":12384,"timestamp":475828208922,"id":5077,"parentId":5072,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108473296,"traceId":"e274ac96b05c42d4"},{"name":"read-resource","duration":4154,"timestamp":475828217329,"id":5087,"parentId":5086,"tags":{},"startTime":1764108473304,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":15097,"timestamp":475828208916,"id":5074,"parentId":5072,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764108473296,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":15108,"timestamp":475828208954,"id":5080,"parentId":5072,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108473296,"traceId":"e274ac96b05c42d4"},{"name":"postcss-process","duration":11556,"timestamp":475828221513,"id":5089,"parentId":5088,"tags":{},"startTime":1764108473308,"traceId":"e274ac96b05c42d4"},{"name":"postcss-loader","duration":11706,"timestamp":475828221500,"id":5088,"parentId":5086,"tags":{},"startTime":1764108473308,"traceId":"e274ac96b05c42d4"},{"name":"css-loader","duration":2033,"timestamp":475828233221,"id":5090,"parentId":5086,"tags":{"astUsed":"true"},"startTime":1764108473320,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":18502,"timestamp":475828217262,"id":5086,"parentId":5082,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764108473304,"traceId":"e274ac96b05c42d4"},{"name":"build-module-css","duration":21948,"timestamp":475828215171,"id":5082,"parentId":5071,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764108473302,"traceId":"e274ac96b05c42d4"},{"name":"build-module","duration":11,"timestamp":475828237196,"id":5091,"parentId":5082,"tags":{},"startTime":1764108473324,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":28305,"timestamp":475828208921,"id":5076,"parentId":5072,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764108473296,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":28527,"timestamp":475828208707,"id":5072,"parentId":5071,"tags":{},"startTime":1764108473295,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":785,"timestamp":475828238107,"id":5093,"parentId":5092,"tags":{},"startTime":1764108473325,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":1,"timestamp":475828238900,"id":5095,"parentId":5092,"tags":{},"startTime":1764108473326,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":19,"timestamp":475828238907,"id":5096,"parentId":5092,"tags":{},"startTime":1764108473326,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":2,"timestamp":475828238934,"id":5097,"parentId":5092,"tags":{},"startTime":1764108473326,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":475828238942,"id":5098,"parentId":5092,"tags":{},"startTime":1764108473326,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":217,"timestamp":475828238897,"id":5094,"parentId":5092,"tags":{},"startTime":1764108473326,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":206,"timestamp":475828239606,"id":5099,"parentId":5092,"tags":{},"startTime":1764108473326,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":518,"timestamp":475828239817,"id":5100,"parentId":5092,"tags":{},"startTime":1764108473327,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":1557,"timestamp":475828240858,"id":5101,"parentId":5092,"tags":{},"startTime":1764108473328,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":66,"timestamp":475828242415,"id":5102,"parentId":5092,"tags":{},"startTime":1764108473329,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":29,"timestamp":475828242477,"id":5103,"parentId":5092,"tags":{},"startTime":1764108473329,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":2786,"timestamp":475828242509,"id":5104,"parentId":5092,"tags":{},"startTime":1764108473329,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-generateClientManifest","duration":26,"timestamp":475828245640,"id":5106,"parentId":5071,"tags":{},"startTime":1764108473332,"traceId":"e274ac96b05c42d4"},{"name":"NextJsBuildManifest-createassets","duration":53,"timestamp":475828245616,"id":5105,"parentId":5071,"tags":{},"startTime":1764108473332,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":8519,"timestamp":475828237855,"id":5092,"parentId":5071,"tags":{},"startTime":1764108473325,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":37895,"timestamp":475828208497,"id":5071,"parentId":5069,"tags":{"name":"client"},"startTime":1764108473295,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":2787,"timestamp":475828246406,"id":5107,"parentId":5069,"tags":{},"startTime":1764108473333,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-client","duration":46785,"timestamp":475828202817,"id":5069,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/[partId]/page.tsx"},"startTime":1764108473290,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":1,"timestamp":475828251453,"id":5110,"parentId":3,"tags":{},"startTime":1764108473338,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475828251480,"id":5111,"parentId":3,"tags":{},"startTime":1764108473338,"traceId":"e274ac96b05c42d4"},{"name":"client-success","duration":0,"timestamp":475828251493,"id":5112,"parentId":3,"tags":{},"startTime":1764108473338,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":51000,"timestamp":475828203465,"id":5118,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108473343,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":55000,"timestamp":475828203638,"id":5122,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder/upper/upper-aero-enhanced","isPageHidden":false},"startTime":1764108473346,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7182,"timestamp":475828252785,"id":5114,"parentId":5109,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108473339,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7188,"timestamp":475828252790,"id":5116,"parentId":5109,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fbuild%2Fpage&page=%2Fgunbuilder%2Fbuild%2Fpage&appPaths=%2Fgunbuilder%2Fbuild%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fbuild%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108473339,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7545,"timestamp":475828252788,"id":5115,"parentId":5109,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108473339,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":7734,"timestamp":475828252762,"id":5113,"parentId":5109,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108473339,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":1081,"timestamp":475828259561,"id":5121,"parentId":5120,"tags":{},"startTime":1764108473346,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":1134,"timestamp":475828259510,"id":5120,"parentId":5119,"tags":{},"startTime":1764108473346,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":1698,"timestamp":475828259344,"id":5119,"parentId":5108,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"rsc"},"startTime":1764108473346,"traceId":"e274ac96b05c42d4"},{"name":"client-hmr-latency","duration":58000,"timestamp":475828202884,"id":5123,"parentId":3,"tags":{"updatedModules":[],"page":"/gunbuilder","isPageHidden":true},"startTime":1764108473349,"traceId":"e274ac96b05c42d4"},{"name":"add-entry","duration":10321,"timestamp":475828252792,"id":5117,"parentId":5109,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&page=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&appPaths=%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2F%5BcategoryId%5D%2F%5BpartId%5D%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764108473339,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-transform","duration":6114,"timestamp":475828265228,"id":5141,"parentId":5140,"tags":{},"startTime":1764108473352,"traceId":"e274ac96b05c42d4"},{"name":"next-swc-loader","duration":6184,"timestamp":475828265161,"id":5140,"parentId":5139,"tags":{},"startTime":1764108473352,"traceId":"e274ac96b05c42d4"},{"name":"build-module-tsx","duration":8393,"timestamp":475828265032,"id":5139,"parentId":5108,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/[categoryId]/[partId]/page.tsx","layer":"ssr"},"startTime":1764108473352,"traceId":"e274ac96b05c42d4"},{"name":"make","duration":26497,"timestamp":475828250905,"id":5109,"parentId":5108,"tags":{},"startTime":1764108473338,"traceId":"e274ac96b05c42d4"},{"name":"chunk-graph","duration":1378,"timestamp":475828278458,"id":5143,"parentId":5142,"tags":{},"startTime":1764108473365,"traceId":"e274ac96b05c42d4"},{"name":"optimize-modules","duration":2,"timestamp":475828279850,"id":5145,"parentId":5142,"tags":{},"startTime":1764108473367,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunks","duration":1011,"timestamp":475828279861,"id":5146,"parentId":5142,"tags":{},"startTime":1764108473367,"traceId":"e274ac96b05c42d4"},{"name":"optimize-tree","duration":3,"timestamp":475828280881,"id":5147,"parentId":5142,"tags":{},"startTime":1764108473368,"traceId":"e274ac96b05c42d4"},{"name":"optimize-chunk-modules","duration":1,"timestamp":475828280893,"id":5148,"parentId":5142,"tags":{},"startTime":1764108473368,"traceId":"e274ac96b05c42d4"},{"name":"optimize","duration":1246,"timestamp":475828279846,"id":5144,"parentId":5142,"tags":{},"startTime":1764108473367,"traceId":"e274ac96b05c42d4"},{"name":"module-hash","duration":177,"timestamp":475828281497,"id":5149,"parentId":5142,"tags":{},"startTime":1764108473368,"traceId":"e274ac96b05c42d4"},{"name":"code-generation","duration":295,"timestamp":475828281678,"id":5150,"parentId":5142,"tags":{},"startTime":1764108473368,"traceId":"e274ac96b05c42d4"},{"name":"hash","duration":417,"timestamp":475828282329,"id":5151,"parentId":5142,"tags":{},"startTime":1764108473369,"traceId":"e274ac96b05c42d4"},{"name":"code-generation-jobs","duration":27,"timestamp":475828282746,"id":5152,"parentId":5142,"tags":{},"startTime":1764108473369,"traceId":"e274ac96b05c42d4"},{"name":"module-assets","duration":21,"timestamp":475828282770,"id":5153,"parentId":5142,"tags":{},"startTime":1764108473369,"traceId":"e274ac96b05c42d4"},{"name":"create-chunk-assets","duration":64,"timestamp":475828282794,"id":5154,"parentId":5142,"tags":{},"startTime":1764108473369,"traceId":"e274ac96b05c42d4"},{"name":"seal","duration":5910,"timestamp":475828278265,"id":5142,"parentId":5108,"tags":{},"startTime":1764108473365,"traceId":"e274ac96b05c42d4"},{"name":"webpack-compilation","duration":35044,"timestamp":475828250732,"id":5108,"parentId":5070,"tags":{"name":"server"},"startTime":1764108473337,"traceId":"e274ac96b05c42d4"},{"name":"emit","duration":1289,"timestamp":475828285793,"id":5155,"parentId":5070,"tags":{},"startTime":1764108473372,"traceId":"e274ac96b05c42d4"},{"name":"webpack-invalidated-server","duration":84827,"timestamp":475828203003,"id":5070,"parentId":3,"tags":{"trigger":"app/gunbuilder/[categoryId]/[partId]/page.tsx"},"startTime":1764108473290,"traceId":"e274ac96b05c42d4"}] diff --git a/app/gunbuilder/[categoryId]/[partId]/data.ts b/app/gunbuilder/[categoryId]/[partId]/data.ts new file mode 100644 index 0000000..3414499 --- /dev/null +++ b/app/gunbuilder/[categoryId]/[partId]/data.ts @@ -0,0 +1,87 @@ +// Simulated data functions - Replace these with API calls when ready +// Example: export async function getPricingHistory(partId: string) { ... } + +export interface PriceHistoryPoint { + date: string; // ISO date string + price: number; +} + +export interface RetailerOffer { + id: string; + retailerName: string; + price: number; + originalPrice?: number; + inStock: boolean; + affiliateUrl: string; + lastUpdated: string; // ISO date string +} + +/** + * Get pricing history for a part + * TODO: Replace with API call: GET /api/parts/{partId}/pricing-history + */ +export function getPricingHistory( + partId: string, + basePrice: number, +): PriceHistoryPoint[] { + // Generate 30 days of price history with some variation + const days = 30; + const history: PriceHistoryPoint[] = []; + const today = new Date(); + + for (let i = days - 1; i >= 0; i--) { + const date = new Date(today); + date.setDate(date.getDate() - i); + + // Simulate price fluctuations (±15% variation) + const variation = (Math.random() - 0.5) * 0.3; // -15% to +15% + const price = basePrice * (1 + variation); + + history.push({ + date: date.toISOString().split("T")[0], + price: Math.round(price * 100) / 100, + }); + } + + return history; +} + +/** + * Get retailer offers for a part + * TODO: Replace with API call: GET /api/parts/{partId}/retailers + */ +export function getRetailerOffers( + partId: string, + basePrice: number, + baseAffiliateUrl: string, +): RetailerOffer[] { + const retailers = [ + "Primary Arms", + "Brownells", + "Optics Planet", + "MidwayUSA", + "Palmetto State Armory", + ]; + + return retailers.map((retailer, index) => { + // Simulate price variations between retailers + const priceVariation = (Math.random() - 0.4) * 0.2; // -8% to +12% + const price = basePrice * (1 + priceVariation); + const hasSale = Math.random() > 0.6; // 40% chance of sale + const originalPrice = hasSale ? price * 1.15 : undefined; + const inStock = Math.random() > 0.2; // 80% chance in stock + + return { + id: `retailer-${index}`, + retailerName: retailer, + price: Math.round(price * 100) / 100, + originalPrice: originalPrice + ? Math.round(originalPrice * 100) / 100 + : undefined, + inStock, + affiliateUrl: baseAffiliateUrl.replace("example.com", `${retailer.toLowerCase().replace(/\s+/g, "")}.com`), + lastUpdated: new Date().toISOString(), + }; + }).sort((a, b) => a.price - b.price); // Sort by price ascending +} + diff --git a/app/gunbuilder/[categoryId]/[partId]/page.tsx b/app/gunbuilder/[categoryId]/[partId]/page.tsx index 97a7365..a50a278 100644 --- a/app/gunbuilder/[categoryId]/[partId]/page.tsx +++ b/app/gunbuilder/[categoryId]/[partId]/page.tsx @@ -5,6 +5,9 @@ import Link from "next/link"; import { useParams } from "next/navigation"; import { CATEGORIES, PARTS } from "@/data/gunbuilderParts"; import type { CategoryId } from "@/types/gunbuilder"; +import { getPricingHistory, getRetailerOffers } from "./data"; +import { PricingHistoryGraph } from "@/components/PricingHistoryGraph"; +import { RetailersList } from "@/components/RetailersList"; export default function PartDetailPage() { const params = useParams(); @@ -21,6 +24,21 @@ export default function PartDetailPage() { [partId, categoryId], ); + // Get pricing history and retailer offers + // TODO: Replace with API calls when endpoints are ready + const pricingHistory = useMemo( + () => (part ? getPricingHistory(part.id, part.price) : []), + [part], + ); + + const retailerOffers = useMemo( + () => + part + ? getRetailerOffers(part.id, part.price, part.affiliateUrl) + : [], + [part], + ); + if (!category || !part) { return (
@@ -68,76 +86,86 @@ export default function PartDetailPage() { {/* Product Details */}
{/* Main Content */} -
-
- {/* Product Info */} -
-
- Product Information -
-
-
-
- Brand -
-
- {part.brand} -
+
+ {/* Product Information */} +
+
+ {/* Product Info */} +
+
+ Product Information
-
-
- Model -
-
- {part.name} -
-
-
-
- Category -
-
- {category.name} -
-
- {part.notes && ( +
- Details + Brand
-
- {part.notes} +
+ {part.brand}
- )} +
+
+ Model +
+
+ {part.name} +
+
+
+
+ Category +
+
+ {category.name} +
+
+ {part.notes && ( +
+
+ Details +
+
+ {part.notes} +
+
+ )} +
-
- {/* Product Image */} -
-
-
- - - -

- Product Image -

+ {/* Product Image */} +
+
+
+ + + +

+ Product Image +

+
+ + {/* Retailers List */} + {retailerOffers.length > 0 && ( +
+ +
+ )}
{/* Sidebar */} @@ -149,6 +177,16 @@ export default function PartDetailPage() {
+ {/* Pricing History */} + {pricingHistory.length > 0 && ( +
+ +
+ )} +
d.price); + const minPrice = Math.min(...prices); + const maxPrice = Math.max(...prices); + const priceRange = maxPrice - minPrice || 1; // Avoid division by zero + + // Generate path points + const points = data.map((point, index) => { + const x = padding + ((index / (data.length - 1)) * (width - padding * 2)); + const normalizedPrice = (point.price - minPrice) / priceRange; + const y = padding + (height - padding * 2) * (1 - normalizedPrice); + return { x, y, price: point.price }; + }); + + // Create SVG path + const pathData = points + .map((point, index) => `${index === 0 ? "M" : "L"} ${point.x} ${point.y}`) + .join(" "); + + // Create area path (for gradient fill) + const areaPath = `${pathData} L ${width - padding} ${height - padding} L ${padding} ${height - padding} Z`; + + // Format date for display + const formatDate = (dateStr: string) => { + const date = new Date(dateStr); + return date.toLocaleDateString("en-US", { month: "short", day: "numeric" }); + }; + + return ( +
+
+
+
+ Price History (30 Days) +
+
+ Current: ${currentPrice.toFixed(2)} +
+
+
+ {formatDate(data[0].date)} - {formatDate(data[data.length - 1].date)} +
+
+ +
+ + + + + + + + {/* Area fill */} + + {/* Line */} + + {/* Current price indicator */} + + +
+ +
+ Low: ${minPrice.toFixed(2)} + High: ${maxPrice.toFixed(2)} +
+
+ ); +} + diff --git a/components/RetailersList.tsx b/components/RetailersList.tsx new file mode 100644 index 0000000..88b99b3 --- /dev/null +++ b/components/RetailersList.tsx @@ -0,0 +1,101 @@ +"use client"; + +import type { RetailerOffer } from "@/app/gunbuilder/[categoryId]/[partId]/data"; + +interface RetailersListProps { + retailers: RetailerOffer[]; +} + +export function RetailersList({ retailers }: RetailersListProps) { + if (retailers.length === 0) { + return ( +
+ No retailer offers available. +
+ ); + } + + const lowestPrice = Math.min(...retailers.map((r) => r.price)); + + return ( +
+
+
+ Available Retailers +
+
+ {retailers.length} retailer{retailers.length !== 1 ? "s" : ""} found +
+
+ +
+ {retailers.map((retailer) => { + const isLowestPrice = retailer.price === lowestPrice; + const isOnSale = retailer.originalPrice !== undefined; + + return ( +
+
+
+
+ + {retailer.retailerName} + + {isLowestPrice && retailer.inStock && ( + + Best Price + + )} + {!retailer.inStock && ( + + Out of Stock + + )} +
+
+ + ${retailer.price.toFixed(2)} + + {isOnSale && retailer.originalPrice && ( + + ${retailer.originalPrice.toFixed(2)} + + )} +
+
+ +
+
+ ); + })} +
+
+ ); +} + diff --git a/app/gunbuilder/schema.sql b/schema-example.sql similarity index 100% rename from app/gunbuilder/schema.sql rename to schema-example.sql