[{"data":1,"prerenderedAt":642},["ShallowReactive",2],{"navigation_docs":3,"trending-repo-pookjw\u002FHermesEnabler":249,"page-views-\u002Ftrending\u002Fpookjw\u002FHermesEnabler":640},[4,29,104,124,194],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Start",false,"\u002Fstart","1.start",[10,14,19,24],{"title":11,"path":7,"stem":12,"icon":13},"What jscpd finds","1.start\u002Findex","i-lucide-house",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fstart\u002Finstallation","1.start\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quickstart","\u002Fstart\u002Fquickstart","1.start\u002F3.quickstart","i-lucide-rocket",{"title":25,"path":26,"stem":27,"icon":28},"Configuration basics","\u002Fstart\u002Fconfiguration","1.start\u002F4.configuration","i-lucide-settings-2",{"title":30,"icon":6,"path":31,"stem":32,"children":33,"page":6},"Guides","\u002Fguides","2.guides",[34,39,44,49,54,59,64,69,74,79,84,89,94,99],{"title":35,"path":36,"stem":37,"icon":38},"Use jscpd in CI","\u002Fguides\u002Fci","2.guides\u002F01.ci","i-lucide-github",{"title":40,"path":41,"stem":42,"icon":43},"Pre-commit hooks","\u002Fguides\u002Fpre-commit","2.guides\u002F02.pre-commit","i-lucide-git-commit",{"title":45,"path":46,"stem":47,"icon":48},"Fail only on new duplication","\u002Fguides\u002Fbaseline","2.guides\u002F03.baseline","i-lucide-git-compare",{"title":50,"path":51,"stem":52,"icon":53},"Monorepos","\u002Fguides\u002Fmonorepos","2.guides\u002F04.monorepos","i-lucide-folder-tree",{"title":55,"path":56,"stem":57,"icon":58},"Cross-format detection","\u002Fguides\u002Fcross-format","2.guides\u002F05.cross-format","i-lucide-layers",{"title":60,"path":61,"stem":62,"icon":63},"Agents","\u002Fguides\u002Fagents","2.guides\u002F06.agents","i-lucide-cpu",{"title":65,"path":66,"stem":67,"icon":68},"Editors","\u002Fguides\u002Feditors","2.guides\u002F07.editors","i-lucide-code",{"title":70,"path":71,"stem":72,"icon":73},"Duplication over git history","\u002Fguides\u002Fhistory","2.guides\u002F08.history","i-lucide-chart-no-axes-combined",{"title":75,"path":76,"stem":77,"icon":78},"Dashboard and health score","\u002Fguides\u002Fdashboard","2.guides\u002F09.dashboard","i-lucide-layout-dashboard",{"title":80,"path":81,"stem":82,"icon":83},"Dead code","\u002Fguides\u002Fdead-code","2.guides\u002F10.dead-code","i-lucide-ghost",{"title":85,"path":86,"stem":87,"icon":88},"Comparing two codebases","\u002Fguides\u002Fcompare","2.guides\u002F11.compare","i-lucide-git-compare-arrows",{"title":90,"path":91,"stem":92,"icon":93},"Semantic clones","\u002Fguides\u002Fsemantic-clones","2.guides\u002F12.semantic-clones","i-lucide-brain-circuit",{"title":95,"path":96,"stem":97,"icon":98},"Similar functions","\u002Fguides\u002Fsimilarity","2.guides\u002F13.similarity","i-lucide-list-tree",{"title":100,"path":101,"stem":102,"icon":103},"Boundaries","\u002Fguides\u002Fboundaries","2.guides\u002F14.boundaries","i-lucide-fence",{"title":105,"icon":6,"path":106,"stem":107,"children":108,"page":6},"Concepts","\u002Fconcepts","3.concepts",[109,114,119],{"title":110,"path":111,"stem":112,"icon":113},"Types of code clones","\u002Fconcepts\u002Fclone-types","3.concepts\u002F1.clone-types","i-lucide-copy",{"title":115,"path":116,"stem":117,"icon":118},"How detection works","\u002Fconcepts\u002Fhow-detection-works","3.concepts\u002F2.how-detection-works","i-lucide-scan-search",{"title":120,"path":121,"stem":122,"icon":123},"The health score","\u002Fconcepts\u002Fhealth-score","3.concepts\u002F3.health-score","i-lucide-heart-pulse",{"title":125,"icon":6,"path":126,"stem":127,"children":128,"page":6},"Reference","\u002Freference","4.reference",[129,134,139,144,181,186,190],{"title":130,"path":131,"stem":132,"icon":133},"CLI options","\u002Freference\u002Fcli","4.reference\u002F1.cli","i-lucide-terminal",{"title":135,"path":136,"stem":137,"icon":138},"The config file","\u002Freference\u002Fconfig-file","4.reference\u002F2.config-file","i-lucide-settings",{"title":140,"path":141,"stem":142,"icon":143},"Exit codes","\u002Freference\u002Fexit-codes","4.reference\u002F3.exit-codes","i-lucide-log-out",{"title":145,"icon":6,"path":146,"stem":147,"children":148},"Reporters","\u002Freference\u002Freporters","4.reference\u002F4.reporters\u002Findex",[149,151,156,161,166,171,176],{"title":145,"path":146,"stem":147,"icon":150},"i-lucide-file-chart-column",{"title":152,"path":153,"stem":154,"icon":155},"HTML reporter","\u002Freference\u002Freporters\u002Fhtml","4.reference\u002F4.reporters\u002F2.html","i-lucide-file-code",{"title":157,"path":158,"stem":159,"icon":160},"JSON reporter","\u002Freference\u002Freporters\u002Fjson","4.reference\u002F4.reporters\u002F3.json","i-lucide-braces",{"title":162,"path":163,"stem":164,"icon":165},"Badge reporter","\u002Freference\u002Freporters\u002Fbadge","4.reference\u002F4.reporters\u002F4.badge","i-lucide-award",{"title":167,"path":168,"stem":169,"icon":170},"SARIF reporter","\u002Freference\u002Freporters\u002Fsarif","4.reference\u002F4.reporters\u002F5.sarif","i-lucide-shield-check",{"title":172,"path":173,"stem":174,"icon":175},"CodeClimate reporter","\u002Freference\u002Freporters\u002Fcodeclimate","4.reference\u002F4.reporters\u002F6.codeclimate","i-lucide-flag-triangle-right",{"title":177,"path":178,"stem":179,"icon":180},"OpenMetrics reporter","\u002Freference\u002Freporters\u002Fopenmetrics","4.reference\u002F4.reporters\u002F7.openmetrics","i-lucide-activity",{"title":182,"path":183,"stem":184,"icon":185},"Supported formats","\u002Freference\u002Fsupported-formats","4.reference\u002F5.supported-formats","i-lucide-languages",{"title":187,"path":188,"stem":189,"icon":38},"GitHub Action","\u002Freference\u002Fgithub-action","4.reference\u002F6.github-action",{"title":191,"path":192,"stem":193,"icon":68},"Rust crates","\u002Freference\u002Frust-crates","4.reference\u002F7.rust-crates",{"title":195,"icon":6,"path":196,"stem":197,"children":198,"page":6},"Project","\u002Fproject","5.project",[199,204,209,214,239,244],{"title":200,"path":201,"stem":202,"icon":203},"Changelog","\u002Fproject\u002Fchangelog","5.project\u002F1.changelog","i-lucide-scroll-text",{"title":205,"path":206,"stem":207,"icon":208},"Migrating from v4 to v5","\u002Fproject\u002Fmigration","5.project\u002F2.migration","i-lucide-arrow-right-left",{"title":210,"path":211,"stem":212,"icon":213},"jscpd v4 (TypeScript)","\u002Fproject\u002Fv4","5.project\u002F3.v4","i-simple-icons-typescript",{"title":215,"icon":6,"path":216,"stem":217,"children":218},"Benchmarks","\u002Fproject\u002Fbenchmarks","5.project\u002F4.benchmarks\u002Findex",[219,221,226,230,235],{"title":215,"path":216,"stem":217,"icon":220},"i-lucide-gauge",{"title":222,"path":223,"stem":224,"icon":225},"Detection Speed","\u002Fproject\u002Fbenchmarks\u002Fdetection-speed","5.project\u002F4.benchmarks\u002F2.detection-speed","i-lucide-zap",{"title":227,"path":228,"stem":229,"icon":58},"Multi-Format Detection","\u002Fproject\u002Fbenchmarks\u002Fcross-format","5.project\u002F4.benchmarks\u002F3.cross-format",{"title":231,"path":232,"stem":233,"icon":234},"AI Token Efficiency","\u002Fproject\u002Fbenchmarks\u002Fai-token-efficiency","5.project\u002F4.benchmarks\u002F4.ai-token-efficiency","i-lucide-sparkles",{"title":236,"path":237,"stem":238,"icon":93},"Embedding Models","\u002Fproject\u002Fbenchmarks\u002Fembedding-models","5.project\u002F4.benchmarks\u002F5.embedding-models",{"title":240,"path":241,"stem":242,"icon":243},"Research","\u002Fproject\u002Fresearch","5.project\u002F5.research","i-lucide-graduation-cap",{"title":245,"path":246,"stem":247,"icon":248},"Articles","\u002Fproject\u002Farticles","5.project\u002F6.articles","i-lucide-newspaper",{"name":250,"url":251,"appearances":252,"latest":268},"pookjw\u002FHermesEnabler","https:\u002F\u002Fgithub.com\u002Fpookjw\u002FHermesEnabler",[253],{"date":254,"rank":255,"stars":256,"starsToday":257,"headSha":258,"sources":259,"lines":260,"clones":261,"duplicatedLines":262,"percentage":263,"codePercentage":264,"codeSources":265,"healthScore":266,"healthGrade":267},"2026-11-13",4,1613,218,"a0101c41d37f880f236450eb99baf9d5b5f5b900",50,7207,26,234,3.25,2.83,29,61.4,"C",{"date":254,"generatedAt":269,"name":250,"url":251,"description":270,"language":271,"stars":256,"starsToday":257,"defaultBranch":272,"headSha":258,"durationMs":273,"total":274,"formats":278,"topClones":318,"code":476,"health":558,"complexity":583,"deadCode":632},"2026-11-13T05:21:16.043Z","Enable Hermès Watch Faces on any Apple Watch devices","Objective-C","main",869,{"sources":259,"lines":260,"tokens":275,"clones":261,"duplicatedLines":262,"duplicatedTokens":276,"percentage":263,"percentageTokens":277},65096,2741,4.21,[279,286,293,298,303,306,309,312,315],{"format":280,"sources":281,"lines":282,"clones":283,"duplicatedLines":284,"percentage":285},"objectivec",1,2643,16,162,6.13,{"format":287,"sources":288,"lines":289,"clones":290,"duplicatedLines":291,"percentage":292},"markdown",17,992,9,63,6.35,{"format":294,"sources":295,"lines":296,"clones":281,"duplicatedLines":290,"percentage":297},"swift",24,3060,0.29,{"format":299,"sources":300,"lines":301,"clones":302,"duplicatedLines":302,"percentage":302},"c-header",2,186,0,{"format":304,"sources":281,"lines":305,"clones":302,"duplicatedLines":302,"percentage":302},"bash",115,{"format":307,"sources":300,"lines":308,"clones":302,"duplicatedLines":302,"percentage":302},"python",94,{"format":310,"sources":281,"lines":311,"clones":302,"duplicatedLines":302,"percentage":302},"c",62,{"format":313,"sources":281,"lines":314,"clones":302,"duplicatedLines":302,"percentage":302},"markup",34,{"format":316,"sources":281,"lines":317,"clones":302,"duplicatedLines":302,"percentage":302},"txt",21,[319,353,387,413,423,433,441,450,459,468],{"format":287,"lines":320,"tokens":321,"first":322,"others":324,"copies":341,"excerpt":342,"excerptSecond":349,"kind":352},7,124,{"name":323,"start":281,"end":320},"README.de.md",[325,327,329,331,333,335,337,339],{"name":326,"start":281,"end":320},"README.es.md",{"name":328,"start":281,"end":320},"README.fr.md",{"name":330,"start":281,"end":320},"README.ja.md",{"name":332,"start":281,"end":320},"README.ko.md",{"name":334,"start":281,"end":320},"README.md",{"name":336,"start":281,"end":320},"README.pt.md",{"name":338,"start":281,"end":320},"README.vi.md",{"name":340,"start":281,"end":320},"README.zh-CN.md",10,{"lines":343,"total":320},[344,345,346,345,347,345,348],"# HermesEnabler 2","","[English](README.md) · [Tiếng Việt](README.vi.md) · [한국어](README.ko.md) · [简体中文](README.zh-CN.md) · [繁體中文](README.zh-TW.md) · [日本語](README.ja.md) · [Español](R…","![](image.png)","> Nur mit watchOS 27.0 bis watchOS 27.3 Beta 1 kompatibel.",{"lines":350,"total":320},[344,345,346,345,347,345,351],"> Compatible únicamente con watchOS 27.0 hasta watchOS 27.3 beta 1.","docs",{"format":280,"lines":354,"tokens":355,"first":356,"others":360,"copies":255,"excerpt":370,"excerptSecond":381,"kind":386},13,197,{"name":357,"start":358,"end":359},"HermesEnabler2\u002FBQCore.m",1426,1438,[361,364,367],{"name":357,"start":362,"end":363},1528,1539,{"name":357,"start":365,"end":366},1624,1635,{"name":357,"start":368,"end":369},1711,1722,{"lines":371,"total":354},[372,373,374,345,375,376,377,378,379,380],"    if (err) *err = NSLocalizedString(@\"The required face values are missing from the cache; no changes were made.\", nil);","    return NO;","}","void *mg = NULL, *io = NULL;","bq_native_libraries(&mg, &io);","void *(*createCache)(void *, const void **, const void **, long, void *) = mg ? dlsym(mg, \"MGCreateInMemoryCache\") : NULL;","CFTypeRef (*copyAnswer)(CFStringRef, void *, void *, int *) = mg ? dlsym(mg, \"MGCopyAnswerWithCache\") : NULL;","void (*destroyCache)(void *) = mg ? dlsym(mg, \"MGCacheDestroy\") : NULL;","uint32_t (*entryFromPath)(uint32_t, const char *) = io ? dlsym(io, \"IORegistryEntryFromPath\") : NULL;",{"lines":382,"total":385},[383,373,374,375,376,377,378,379,380,384],"    if (err) *err = NSLocalizedString(@\"Native control recovery is unavailable for this watchOS build.\", nil);","CFTypeRef (*copyProperty)(uint32_t, CFStringRef, CFAllocatorRef, uint32_t) = io ? dlsym(io, \"IORegistryEntryCreateCFProperty\") : NULL;",12,"code",{"format":280,"lines":388,"tokens":389,"first":390,"others":393,"copies":400,"excerpt":401,"excerptSecond":410,"kind":386},8,78,{"name":357,"start":391,"end":392},1601,1608,[394,397],{"name":357,"start":395,"end":396},1674,1681,{"name":357,"start":398,"end":399},1758,1765,3,{"lines":402,"total":388},[403,374,404,405,406,407,408,409],"    extra[@\"MQJ1mlVrhOwaUUVJehJSVA\"] = @YES;","plist[@\"CacheData\"] = data;","plist[@\"CacheExtra\"] = extra;","if (!BQSaveGestalt(plist, err)) return NO;","NSDictionary *saved = BQLoadGestalt(err);","if (![saved[@\"CacheData\"] isEqual:data] || ![saved[@\"CacheExtra\"] isEqual:extra]) {","    if (err) *err = NSLocalizedString(@\"The control values were written but could not be verified.\", nil);",{"lines":411,"total":388},[373,374,404,405,406,407,408,412],"    if (err) *err = NSLocalizedString(@\"The additional values were written but could not be verified.\", nil);",{"format":280,"lines":414,"tokens":415,"first":416,"others":419,"copies":300,"kind":386},14,95,{"name":357,"start":417,"end":418},2091,2104,[420],{"name":357,"start":421,"end":422},2149,2160,{"format":280,"lines":424,"tokens":425,"first":426,"others":429,"copies":300,"kind":386},11,93,{"name":357,"start":427,"end":428},1792,1802,[430],{"name":357,"start":431,"end":432},1839,1849,{"format":280,"lines":283,"tokens":434,"first":435,"others":437,"copies":300,"kind":386},90,{"name":357,"start":436,"end":418},2089,[438],{"name":357,"start":439,"end":440},2221,2234,{"format":280,"lines":290,"tokens":442,"first":443,"others":446,"copies":300,"kind":386},84,{"name":357,"start":444,"end":445},1245,1253,[447],{"name":357,"start":448,"end":449},1341,1349,{"format":280,"lines":290,"tokens":451,"first":452,"others":455,"copies":300,"kind":386},81,{"name":357,"start":453,"end":454},2009,2017,[456],{"name":357,"start":457,"end":458},2067,2075,{"format":280,"lines":320,"tokens":460,"first":461,"others":464,"copies":300,"kind":386},75,{"name":357,"start":462,"end":463},1514,1520,[465],{"name":357,"start":466,"end":467},1692,1698,{"format":280,"lines":320,"tokens":469,"first":470,"others":472,"copies":300,"kind":386},67,{"name":357,"start":471,"end":445},1247,[473],{"name":357,"start":474,"end":475},1371,1377,{"sources":265,"lines":477,"tokens":478,"clones":288,"duplicatedLines":479,"duplicatedTokens":480,"percentage":264,"percentageTokens":481,"formats":482,"topClones":489,"generated":556},6032,41251,171,1625,3.94,[483,484,485,486,487],{"format":280,"sources":281,"lines":282,"clones":283,"duplicatedLines":284,"percentage":285},{"format":294,"sources":295,"lines":296,"clones":281,"duplicatedLines":290,"percentage":297},{"format":299,"sources":300,"lines":301,"clones":302,"duplicatedLines":302,"percentage":302},{"format":304,"sources":281,"lines":305,"clones":302,"duplicatedLines":302,"percentage":302},{"format":307,"sources":281,"lines":488,"clones":302,"duplicatedLines":302,"percentage":302},28,[490,500,509,524,528,532,536,540,544,548],{"format":280,"lines":354,"tokens":355,"first":491,"others":492,"copies":255,"excerpt":496,"excerptSecond":498,"kind":386},{"name":357,"start":358,"end":359},[493,494,495],{"name":357,"start":362,"end":363},{"name":357,"start":365,"end":366},{"name":357,"start":368,"end":369},{"lines":497,"total":354},[372,373,374,345,375,376,377,378,379,380],{"lines":499,"total":385},[383,373,374,375,376,377,378,379,380,384],{"format":280,"lines":388,"tokens":389,"first":501,"others":502,"copies":400,"excerpt":505,"excerptSecond":507,"kind":386},{"name":357,"start":391,"end":392},[503,504],{"name":357,"start":395,"end":396},{"name":357,"start":398,"end":399},{"lines":506,"total":388},[403,374,404,405,406,407,408,409],{"lines":508,"total":388},[373,374,404,405,406,407,408,412],{"format":280,"lines":414,"tokens":415,"first":510,"others":511,"copies":300,"excerpt":513,"excerptSecond":522,"kind":386},{"name":357,"start":417,"end":418},[512],{"name":357,"start":421,"end":422},{"lines":514,"total":414},[515,516,373,374,345,517,518,519,520,521],"if (!BQBackupExists()) {","    if (err) *err = NSLocalizedString(@\"Back up MobileGestalt first.\", nil);","NSMutableDictionary *plist = BQLoadGestalt(err);","if (!plist) return NO;","id cacheExtra = plist[@\"CacheExtra\"];","if (![cacheExtra isKindOfClass:[NSDictionary class]]) {","    if (err) *err = NSLocalizedString(@\"MobileGestalt CacheExtra is missing or invalid.\", nil);",{"lines":523,"total":385},[515,516,373,374,517,518,519,520,521,373],{"format":280,"lines":424,"tokens":425,"first":525,"others":526,"copies":300,"kind":386},{"name":357,"start":427,"end":428},[527],{"name":357,"start":431,"end":432},{"format":280,"lines":283,"tokens":434,"first":529,"others":530,"copies":300,"kind":386},{"name":357,"start":436,"end":418},[531],{"name":357,"start":439,"end":440},{"format":280,"lines":290,"tokens":442,"first":533,"others":534,"copies":300,"kind":386},{"name":357,"start":444,"end":445},[535],{"name":357,"start":448,"end":449},{"format":280,"lines":290,"tokens":451,"first":537,"others":538,"copies":300,"kind":386},{"name":357,"start":453,"end":454},[539],{"name":357,"start":457,"end":458},{"format":280,"lines":320,"tokens":460,"first":541,"others":542,"copies":300,"kind":386},{"name":357,"start":462,"end":463},[543],{"name":357,"start":466,"end":467},{"format":280,"lines":320,"tokens":469,"first":545,"others":546,"copies":300,"kind":386},{"name":357,"start":471,"end":445},[547],{"name":357,"start":474,"end":475},{"format":280,"lines":424,"tokens":469,"first":549,"others":552,"copies":300,"kind":386},{"name":357,"start":550,"end":551},2092,2102,[553],{"name":357,"start":554,"end":555},2125,2134,{"files":302,"minified":302,"sample":557},[],{"score":266,"grade":267,"size":559,"dimensions":563,"skipped":579},{"lines":560,"files":561,"class":562},6160,31,"S",[564,573],{"id":565,"source":566,"value":567,"adjusted":400,"lines":479,"halfLife":568,"formats":569,"excluded":570,"weight":281,"score":572},"duplication","jscpd",2.8,8.5,[294,280,299,304,307,310],[313,571],"text",78.6,{"id":574,"source":566,"value":575,"adjusted":576,"lines":577,"halfLife":259,"weight":281,"score":578},"complexity",63.3,52.9,3898,48,[580],{"id":581,"reason":582},"dead-code","the languages dead code reads are under 5% of the code",{"total":584,"mean":585,"files":586},1592,51.4,[587,590,595,599,604,609,614,619,623,627],{"path":357,"complexity":588,"lines":282,"bytes":589},1042,127097,{"path":591,"complexity":592,"lines":593,"bytes":594},"HermesEnabler2\u002FContentModel.swift",170,482,24383,{"path":596,"complexity":442,"lines":597,"bytes":598},"HermesCompanion\u002FWatchConnectivity\u002FWatchConnectivityManager.swift",773,22769,{"path":600,"complexity":601,"lines":602,"bytes":603},"HermesEnabler2\u002FWatchConnectivity\u002FWatchConnectivityManager.swift",45,298,9932,{"path":605,"complexity":606,"lines":607,"bytes":608},"Research\u002FHealthKitProbe\u002FHealthKitProbe\u002FSchemaProbe.swift",44,91,5972,{"path":610,"complexity":611,"lines":612,"bytes":613},"HermesEnabler2\u002FBQRecoveryValidation.h",43,57,2951,{"path":615,"complexity":616,"lines":617,"bytes":618},"HermesCompanion\u002FWatchInstallationCard.swift",23,160,4454,{"path":620,"complexity":621,"lines":442,"bytes":622},"Research\u002FHealthKitProbe\u002FHealthKitProbe\u002FInputProbe.swift",20,5105,{"path":624,"complexity":625,"lines":442,"bytes":626},"Research\u002FHealthKitProbe\u002FHealthKitProbe\u002FHeartbeatValidation.swift",19,4355,{"path":628,"complexity":629,"lines":630,"bytes":631},"HermesCompanion\u002FBackupDetailView.swift",18,188,5424,{"percentage":633,"findings":281,"files":300,"byCategory":634,"largest":637},29.79,[635],{"category":636,"count":281},"unused-file",[638],{"category":636,"path":639,"name":345,"line":281,"lines":488},"Research\u002FHealthKitProbe\u002Ftest-rr.py",{"\u002Ftrending\u002Fpookjw\u002FHermesEnabler":641},{"views":302,"visits":302},1794624619109]