text:
---
layout:     post
title:      Linus Henze 开源 Fugu15越狱 代码
date:       2022-09-20 12:31:33
author:     XLsn0w
summary:    XLsn0w's Blog
categories: jekyll
thumbnail:
tags:
 - XLsn0w
 - Blog
---

# Linus Henze开源 Fugu15越狱代码

```
我的博客  https://xlsn0w.github.io/
```

10月初,Linus Henze 展示了他在运行 iOS15.4.1的 iPhone 上的 Fugu15越狱,他用一种巧妙的新安装方法让我们想起了 JailbreakMe 的日子。

现在,它已经正式发布,并在 Henze 的 GitHub 页面上开源。

https://github.com/pinauten/Fugu15

现在 TrollStore 正式支持 Fugu15越狱应用程序,这意味着用户可以使用 TrollStore 在他们兼容的设备上加载和永久签署 Fugu15越狱应用程序。

以前,用户需要用自己的域名安装一个基于 web 的安装程序,或者将他们的设备连接到 Mac 上,用 Xcode 安装 Fugu15。

公众号Cydiapps  已经发文详细讲解Fugu15
![](https://github.com/XLsn0w/XLsn0w.github.io/blob/master/Assets/%E5%85%AC%E4%BC%97%E5%8F%B7Cydiapps.jpg?raw=true)

源代码
```
//
//  Fugu15.swift
//  Fugu15KernelExploit
//
//  Created by Linus Henze.
//

import Foundation
import ProcessCommunication
import CBindings
import KernelPatchfinder

public enum Fugu15LaunchError: Error {
    case deviceNotSupported(reason: String)
    case posix_spawnFailed(result: Int32, errno: Int32)
    case noPongReceived
    case kexploitdFailed
    case canOnlyLaunchiDownloadAfterExploitRan
    case iDownloadLaunchFailed(reply: [String])
}

public enum Fugu15SupportsThisDevice {
    case yes
    case no(reason: String)
}

public struct Fugu15 {
    public static var comm: ProcessCommunication?
    public static var patchfinder = KernelPatchfinder.running

    static var kernelBase: UInt64 = 0
    static var kernelSlide: UInt64 = 0

    // Lock for requests to pciPwn
    static let requestLock     = NSLock()

    // Lock to notify exception handler to continue
    static let sendRequestLock = NSLock()

    // Lock to notify requestor to continue
    static let replyLock       = NSLock()

    // Request
    static var request:        UInt64 = 0
    static var requestAddrPid: UInt64 = 0
    static var requestSize:    UInt64 = 0
    static var requestBuf:     Data?

    // Reply
    static var replyStatus: UInt64 = 0
    static var replyResult: UInt64 = 0
    static var replyBuf:    Data?

    public static func supportsThisDevice() -> Fugu15SupportsThisDevice {
        // Test iOS version
        let osVersion = ProcessInfo.processInfo.operatingSystemVersion
        guard osVersion.majorVersion == 15,
              osVersion.minorVersion < 5 else {
            return .no(reason: "Fugu15 only supports iOS 15 - 15.4.1!")
        }

        // The exploits should support some 15.5 betas
        // Not implemented though
        /*if osVersion.minorVersion == 5 {
            var size = 1024
            let ptr  = UnsafeMutablePointer<UInt8>.allocate(capacity: size + 1)
            defer { ptr.deallocate() }

            let res = sysctlbyname("kern.osversion", ptr, &size, nil, 0)
            guard res == 0 else {
                return .no(reason: "Fugu15 failed to determine your OS version!")
            }

            ptr[size] = 0 // Ensure that the string is terminated

            let vStr = String(cString: ptr)

            let supported = ["19A5261w", "19A5281h", "19A5281j", "19A5297e"] // No idea if this is correct
            guard supported.contains(vStr) else {
                return .no(reason: "Fugu15 only supports iOS 15 - 15.4.1 (and some 15.5 betas)!")
            }
        }*/

        // Ensure device supports pointer authentication
        guard deviceSupports(cpuFeature: "PAuth") else {
            return .no(reason: "Fugu15 only supports PAC devices (iPhone XS and newer)!")
        }

        return .yes
    }

    public static func querySysctlBool(name: String) -> Bool {
        var size = 8
        let ptr  = UnsafeMutablePointer<UInt8>.allocate(capacity: size)
        defer { ptr.deallocate() }

        let res = sysctlbyname(name, ptr, &size, nil, 0)
        guard res == 0 else {
            return false
        }

        return ptr[0] != 0
    }

    public static func deviceSupports(cpuFeature: String) -> Bool {
        return querySysctlBool(name: "hw.optional.arm.FEAT_\(cpuFeature)")
    }

    /**
     * Launch kernel exploit. Requires path to oobPCI.
     *
     * - Parameter oobPCI: Path to the oobPCI executable
     * - Parameter logger: A function to log messages
     *
     * - Warning: This function blocks, do not call it on the main dispatch queue
     */
    public static func launchKernelExploit(oobPCI: URL, logger: @escaping (_ msg: String) -> Void) throws {
        switch supportsThisDevice() {
        case .yes:
            break

        case .no(reason: let reason):
            throw Fugu15LaunchError.deviceNotSupported(reason: reason)
        }

        // Create pipes to use for communication
        // We use control and log pipes
        let controlToChild = Pipe()
        let controlFromChild = Pipe()
        let logFromChild = Pipe()

        // We're entitled to do that ;)
        var attr: posix_spawnattr_t?
        posix_spawnattr_init(&attr)
        posix_spawnattr_set_persona_np(&attr, 99, 1)
        posix_spawnattr_set_persona_uid_np(&attr, 0)
        posix_spawnattr_set_persona_gid_np(&attr, 0)

        // Close unnecessary handles
        var fileActions: posix_spawn_file_actions_t?
        posix_spawn_file_actions_init(&fileActions)
        posix_spawn_file_actions_addclose(&fileActions, controlToChild.fileHandleForWriting.fileDescriptor)
        posix_spawn_file_actions_addclose(&fileActions, controlFromChild.fileHandleForReading.fileDescriptor)
        posix_spawn_file_actions_addclose(&fileActions, logFromChild.fileHandleForReading.fileDescriptor)

        var pid: pid_t = 0
        var argv: [UnsafeMutablePointer<CChar>?] = [
            strdup(CommandLine.arguments[0]),
            strdup("Fugu15_server"),
            strdup("\(controlToChild.fileHandleForReading.fileDescriptor)"),
            strdup("\(controlFromChild.fileHandleForWriting.fileDescriptor)"),
            strdup("\(logFromChild.fileHandleForWriting.fileDescriptor)"),
            nil
        ]

        defer {
            for arg in argv {
                free(arg)
            }
        }

        let result = posix_spawn(&pid, argv[0], &fileActions, &attr, &argv, environ)
        let err = errno
        guard result == 0 else {
            throw Fugu15LaunchError.posix_spawnFailed(result: result, errno: err)
        }

        try? controlToChild.fileHandleForReading.close()
        try? controlFromChild.fileHandleForWriting.close()
        try? logFromChild.fileHandleForWriting.close()

        DispatchQueue(label: "Fugu15-Logging").async {
            var buf = ""
            while true {
                do {
                    let data = try logFromChild.fileHandleForReading.read(upToCount: 1)
                    if data == nil || data?.count == 0 {
                        return
                    }

                    if data.unsafelyUnwrapped[0] == 0xA /* newline */ {
                        logger(buf)
                        buf = ""
                    } else {
                        buf += String(data: data.unsafelyUnwrapped, encoding: .utf8) ?? ""
                    }
                } catch _ {
                    return
                }
            }
        }

        // Send ping
        let comm = ProcessCommunication(read: controlFromChild.fileHandleForReading, write: controlToChild.fileHandleForWriting)
        comm.sendCommand("ping")

        guard comm.receiveCommand() == ["pong"] else {
            throw Fugu15LaunchError.noPongReceived
        }

        comm.sendCommand("pwn", oobPCI.path)

        if comm.receiveCommand() != ["ok"] {
            throw Fugu15LaunchError.kexploitdFailed
        }

        comm.sendCommand("waitUntilDone")
        if comm.receiveCommand() != ["done"] {
            throw Fugu15LaunchError.kexploitdFailed
        }

        Self.comm = comm
    }

    public static func launch_iDownload() throws {
        guard let comm = Self.comm else {
            throw Fugu15LaunchError.canOnlyLaunchiDownloadAfterExploitRan
        }

        comm.sendCommand("launch_iDownload")
        let reply = comm.receiveCommand()
        if reply != ["done"] {
            throw Fugu15LaunchError.iDownloadLaunchFailed(reply: reply ?? [])
        }
    }

    /**
     * Call this method from your main function. Only returns if invoked without a Fugu15 command.
     */
    public static func mainHook() {
        if CommandLine.arguments.count > 1 {
            switch CommandLine.arguments[1] {
            case "Fugu15_server":
                let logOut = FileHandle(fileDescriptor: Int32(CommandLine.arguments[4])!, closeOnDealloc: true)
                Logger.logFileHandle = logOut

                guard let checkin = getDKCheckinData() else {
                    execv(Bundle.main.executablePath, CommandLine.unsafeArgv)
                    Logger.print("Failed to re-exec myself after failing DK checkin!")
                    fatalError("Failed to re-exec myself after failing DK checkin!")
                }

                serverMain(checkin: checkin)

            default:
                break
            }
        }
    }
}

```

[1]: https://xlsn0w.github.io

redpajama_set_name: RedPajamaGithub


text:
U.S. Embassy In Moscow Attacked
March 28, 1999 / 2:01 PM / AP
Gunmen with rocket launchers and an assault rifle opened fire on the U.S. Embassy in Moscow on Sunday in an apparent protest against NATO air-strikes on Yugoslavia.
Police firing pistols drove the attackers away from the embassy, which was hit by several bullets but suffered minimal damage. No one was hurt.
Protesters in other world capitals demonstrated Sunday against the ongoing NATO operation, directing most of their anger at the United States.
No one claimed responsibility for the Moscow attack. Russia fiercely opposes the NATO bombings, and protests have been held at the U.S. Embassy since Thursday.
Russian news agencies cited police sources as saying three people had been arrested in the attack, but police officials would not confirm any arrests.
A white jeep pulled up in front of the embassy and two of the occupants aimed rocket launchers at the building, as shown in footage filmed by a passerby that was aired on Russia's NTV television network.
One gunman in a ski mask and camouflage fatigues, who had climbed out of the jeep to aim a launcher, jumped back in the vehicle when police opened fire. One attacker then opened fire from inside the jeep with a semi-automatic rifle, sending police and bystanders diving for cover.
The two rocket launchers were left on the road as the jeep sped away from the 10-story, mustard-colored building on a major Moscow street.
The jeep, which police said had been stolen, had special police force license plates, and was found abandoned near the embassy.
An embassy spokesman, who spoke on condition of anonymity, said no one in the embassy had been injured and that security was being tightened. Nonessential embassy personnel had been told not to come to the embassy over the weekend because of the protests.
The Russian government condemned Sunday's attack. President Boris Yeltsin's spokesman Dmitry Yakushkin said the shooting "throws a shadow on Russia, which is now making titanic efforts to mediate the crisis in Yugoslavia."
Scores of police and troops with automatic weapons ringed the embassy after the attack. A few hundred protesters also remained.
In September 1995, a masked attacker fired a rocket-propelled grenade at the embassy that exploded in an empty office. No one was injured and there was no claim of responsibility, but the attack came a day after the Kremlin accused NATO of genocide against the Bosnian Serbs.
In other protests Sunday:
In Sydney, Australia, about 7,000 protesters attacked the U.S. consulate. Some hurled broken pieces of concrete through windows of a shop and restaurant in the building where the U.S. diplomatic facility is located, and many compared President Clinton to Adolf Hitler.
One protester scaled two floors of the building and ripped down a U.S. flag, which was later burned by youths standing atop a bus shelter. Demonstrations also occurred in Melbourne and Canberra.
In Salzburg, Austria, about ,500 people carried banners denouncing the NATO air-strikes, waved Yugoslav flags and declared their support for Yugoslav President Slobodan Milosevic, the Austria Press Agency reported.
In Paris, riot police used tear gas to disperse about 300 Serb supporters who threw rocks and toppled security barriers in a demonstration in front of the U.S. Embassy.
First published on March 28, 1999 / 2:01 PM

redpajama_set_name: RedPajamaCommonCrawl


text:
5 Heart Attack Warning Signs You Shouldn't Ignore
You may not even feel chest pains.
December 22, 2016 April 9, 2018 by Sarah Kuta
Believe it or not, heart attacks don't always happen as dramatically as they do on TV or in movies — you won't necessarily feel agonizing pain and begin clutching your chest.
In fact, researchers have found that nearly half of heart attacks are silent, which means they don't present with any symptoms, according to the American Heart Association.
There are some surprising warning signs you should be on the lookout for, even if you're a fitness freak, because a heart attack can happen to anyone.
"You could be perfectly healthy and have something like that happen," Nicole Weinberg, a cardiologist at Providence Saint John's Health Center in Santa Monica, California, told SELF. "It doesn't have to be an overweight smoker who eats McDonald's every day."
Here are the top signs you should take very seriously. If you experience these symptoms without other explanation, call your doctor or head to the ER:
Sue Palmer was fast asleep when she woke up suddenly and rushed to the bathroom to vomit. She got sick again a few minutes later.
On the advice of her husband, Palmer rushed to the emergency room, where doctors discovered she was having a major heart attack.
"Plaque had ruptured in the wall of my right coronary artery, which caused the clot to form and can produce the sort of nausea that made me throw up," Palmer wrote in The Washington Post. "That was my only warning sign. If I had gone back to sleep that morning, as I had wanted to, I may not have awakened."
Palmer's experience — that she didn't think vomiting was related to her having a heart attack — is a common one. Though men and women experience many of the same symptoms, they may be less dramatic in women, who are also less likely to associate them with a heart attack, according to George S. Abela, chief of the cardiology division at Michigan State University.
2. Dizziness
It's normal to feel a little dizzy when you stand up too quickly. But sudden dizziness or fainting may also be a sign that there's not enough blood making its way to your brain.
"It could mean your blood pressure has dropped because your heart isn't able to pump the way it should," Vincent Bufalino, a doctor and a spokesman for the American Heart Association, told WebMD.
Flickr | University of Exeter
RELATED: These Signs Could Mean You Have A Deadly Blood Clot
3. Discomfort
Your chest may not suddenly seize up with intense pain, but you might notice chest discomfort or pressure.
This chest pressure or pain may feel like a squeezing in your chest. That's because your heart isn't getting enough oxygen-rich blood, according to the American Heart Association.
You may also notice discomfort in your shoulders, arms, neck, jaw and back. These feelings are not something you want to mess around with — 735,000 people in the U.S. have a heart attack every year and heart disease is the leading cause of death for both men and women. Call 911 or head to a hospital immediately.
Flickr | Taber Andrew Bain
4. Sweating
If you start sweating for no reason — you're not exercising or stressed out — you may be experiencing a heart attack, according to Leslie Cho, a cardiologist at Cleveland Clinic.
You may also notice that the sweat is accompanied by a cold, clammy feeling, she says.
RELATED: Neurosurgeon Explains Warning Signs Of Brain Aneurysm After Sudden Death Of Young Mom
5. Feeling Off Or Tired
Many men and women describe feeling a little weird or just a bit off when suffering a heart attack. That feeling may also be accompanied by exhaustion or lethargy.
Sharonne Hayes, a cardiologist and founder of the Mayo Clinic's Women's Heart Clinic, told SELF that "profound fatigue that you don't normally feel" is a very common heart attack symptom.
This is the type of symptom people are more likely to brush off or attribute to something else, she says. But don't hesitate to visit the emergency room and say you think you may be having a heart attack.
"It may make doctors think about something they haven't thought of," she said.
Flickr | Lidyanne Aquino
Categories Health


My friend, Katie, grew up in a magical place in Eastern Georgia. She lived on lots of land, had acres to roam in and wildflowers to run through, a pond to swim in and adventurous parents who were always making gardens and growing things. Whenever she returns home to her "land", she comes back with fun items. This time, Katie's mom, Nancy, etched Sam and Rosie's name in pumpkins when the pumpkins were small; and then the name grew with the pumpkin. What a great idea! Rosie adores her sweet pumpkin! She carried it around with her like a little doll. Hmmm, I guess since she is not into dolls right now, she can have a pumpkin to play with!
Admiring the pumpkin as Rosie sits with Mr. Scarecrow.


Alaska can use an existing British Columbia ferry terminal for several more years if Canada enforces an order blocking so-called "Buy America" purchasing rules from being applied to its reconstruction, a state official said on Tuesday.
"If there is some inordinate delay, the Alaska Marine Highway System can maintain its Prince Rupert operations at normal standards over the next several years until we sort this out," said Patricia Eckert, associate director of international trade for Alaska.
Ottawa has called the rules "protectionist" and had lobbied Alaska to seek a waiver so that Canadian iron and steel products could also be used.
Rudy Husny, a spokesman for Canada's International Trade ministry, said once the contract is awarded, the federal government will present the winning bidder with the order stating that the Buy America provisions cannot be followed.
"If the company decides to go ahead and ignore this, they will be contravening the order," he said, adding that possible violations will be investigated by the Royal Canadian Mounted Police.


text:
This service will be coming very shortly. Please register your details with us.
Fenwick Ward are an independent estate lettings agents based in Bristol
How much is your property worth? Stop wondering and find out, with a property valuation from Fenwick Ward.
All the latest news from Fenwick Ward.
We focus on delivering results when it comes to property marketing.
© 2021 Fenwick Ward | Terms of Use | Privacy Policy & Notice | Built by The Property Jungle
Minimum Price: Minimum Price £50,000 £100,000 £150,000 £200,000 £250,000 £300,000 £350,000 £400,000 £450,000 £500,000 £550,000 £600,000 £650,000 £700,000 £750,000 £800,000 £850,000 £900,000 £950,000 £1,000,000 £2,000,000 £3,000,000 £4,000,000 £5,000,000 £6,000,000 £7,000,000 £8,000,000 £9,000,000 £10,000,000
Minimum Price: Minimum Price £350 PCM £450 PCM £500 PCM £550 PCM £600 PCM £650 PCM £700 PCM £800 PCM £1000 PCM £1500 PCM £2000 PCM £3000 PCM £4000 PCM £5000 PCM £6000 PCM £7000 PCM £8000 PCM £9000 PCM £10,000 PCM
Maximum Price: Maximum Price £50,000 £100,000 £150,000 £200,000 £250,000 £300,000 £350,000 £400,000 £450,000 £500,000 £550,000 £600,000 £650,000 £700,000 £750,000 £800,000 £850,000 £900,000 £950,000 £1,000,000 £2,000,000 £3,000,000 £4,000,000 £5,000,000 £6,000,000 £7,000,000 £8,000,000 £9,000,000 £10,000,000
Maximum Price: Maximum Price £350 PCM £450 PCM £500 PCM £550 PCM £600 PCM £650 PCM £700 PCM £800 PCM £1000 PCM £1500 PCM £2000 PCM £3000 PCM £4000 PCM £5000 PCM £6000 PCM £7000 PCM £8000 PCM £9000 PCM £10,000 PCM
Property Type: All Property Types Mid Terraced House Semi-Detached House Shared House Town House


text:
Streams:Stream1Stream2Stream3Stream4Stream5Stream6Stream7
This drama is about a lawyer, Park Tae Suk (Lee Sung Min) who finds out that he has Alzheimer's and puts his life on the line to fight one last case. The drama depicts his vigorous efforts trying to protect the precious value of the life and family love, while his memory starts fading away. ......
The love story of a single dad, Kang Poong Ho, who raises his 7 year old son alone after being abandoned by his first love, Yoon So Yi. By day he works as a pest exterminator and by night he is a martial artist. Jeon Ha Ri, is a medical student from a wealthy family who falls for Poong Ho. She secretly teaches Poong Ho's son, San, how to play the piano. Poong Ho's first love is also his son's mother who is a cold and pr......
A special task force will mix cops and criminals in order to catch bad guys, but this time the good-bad guys will be con artists who use their skills of fraud and deception in order to help catch tax evaders.......
Han Jin Woo, Korea's top medical examiner, leads a team of experts in conducting a medical crime investigation after strange events and mysterious deaths occur in a hospital. He first clashes with but is later aided by Kang Kyung Hee, an attractive female detective who possesses excellent skill in martial arts and a strong sense of justice.......
A historical drama about the secret surrounding Crown Prince Sado's death.
This drama takes place during King Yeongjo's (Han Suk Kyu) reign where his son, Crown Prince Sado (Lee Je Hoon), is forced kill himself. Despite Yeongjo's effort to change Sado, he had no choice but to order the death of Sado due to his mental instability, excessive violence, and sexual assaults. This drama will tell the disc......
Saimdang, Light's Diary
This is a 100% pre-produced drama. Filming began on 2015-August-10 and finished on 2016-June-4.
A reinterpretation of Saimdang from the Joseon times. She was a genius artist and passionate lover. Lee Young Ae takes on two roles; Seo Ji Yoon, a college professor who specializes in Korea Art History and Shin Saimdang.
Meanwhile, Lee Gyum (Song Seung Hun) is a man who had a fateful first encou......


Each of our partners has the same authority, knowledge and expertise as we do. And we believe in the services they provide to support us in raising standards and making excellence a habit. They include independent consultants who can help you implement standards, laboratories who work with us to test products, international standards bodies and industry associations.
You can benefit from being a BSI Affiliate or Distributor. It is straightforward and costs nothing. If your organization would benefit from partnering with BSI, get in touch to find out more.
Our Associate Laboratory Programme (ALP) is a partnership between BSI and some of the best testing laboratories around the world enabling you to have more products tested, in more locations.
Our Associate Consultant Programme (ACP) can connect you with independent consultants who can give you the expert advice you need to implement management systems.
We work with standards bodies around the world to help develop best practice codes and standards, including ISO, IEC, CEN and CENELEC.


text:
Welcome for council tax
A below inflation rise in council tax has been welcomed in Breckland.
Breckland Council has set council tax for next year at £61.98 for a D-band property after it agreed its 2008/9 budget at its full council meeting on Thursday.
This is an increase of £1.66p on last year's council tax, or 2.75pc.
Councillors said it would have been £81 if it had been inline with inflation. About 78pc of homes in the district lie in the lowerst bands and will pay below the band D rate.
The cash is needed to top up the council's spending by some £2.6m on top of what it receives in grants from central government.
Its total planned spending for the year is £18m.
The biggest costs to the council are waste collection, nearly £1.7m, street cleaning, at just over £1m, housing benefit administration and Breckland Partnership costs, at nearly £1.4m, and staffing.
Schemes in the pipeline for cash in 2008/9 include £2m for the Rev Project at Thetford Enterprise Park, £1.6m towards the cost of buying the Barnham Broom Golf and Country Club and £2m for an extension to the council's Elizabeth House building.
Bill smith, executive member for the cabinet, said: "Currently the budget is stable through to 2014.
"This is generally a low income area and there is increasing pressure on young people and older people.
"A below inflation increase does not mean a fall in quality of service, we are the fourth most improved council in the country meeting 80pc of our targets."


Be sure to watch for the videos throughout the photos display, especially the one of Rylie opening her dog. Thanks to Andy & Sara for having us over on Christmas day 2010.
I wasn't willing to go out looking for great photo-ops, but I did shoot my front yard every few hours. Notice the colored Christmas bulbs around the base of the white tree-decoration in the middle slowly disappear.


Connect all your devices at once with 5 power outlets. PowerCube, the reddot award 2014 winner, is intelligently designed to be an instant space-saver. It provides the ability to plug in all your devices without any bulky plug blockage. The PowerCube |Original| gives any room a fun-friendly appeal.


On the popular Fox doctor drama House, actor Hugh Laurie plays an acerbic, yet ingenious infectious disease specialist whose curmudgeonly ways, drug use, unrepentant machinations, and sadistic treatment of patients has earned the show—now in its fifth season—an enormous and dedicated following. The series unfolds at the fictitious Princeton-Plainsboro Teaching Hospital, where, segment after segment, Dr. House and his team bicker, sneer, and get to the bottom of rare medical afflictions, killing off the odd invalid from time to time. Well, the stage for this gripping serial need not remain a figment much longer: the utterly factual Princeton hospital has recently announced that it will soon move its facilities to a brand new home in none other than Plainsboro, New Jersey!
The new $440 million hospital, to be known as the University Medical Center of Princeton at Plainsboro (UMCPP), has been designed as a joint venture between RMJM and HOK and is scheduled for a 2011 completion. It will combine facilities for the University of Medicine and Dentistry of New Jersey and Robert Wood Johnson Medical School, including 238 private patient rooms, areas for families to spend the night, and operating rooms designed to accommodate robotics. The project will feature green-era perks, such as 100-percent fresh air ventilation, sustainable finishes, and energy efficiency controls. Digital technologies will also be employed in the form of self-check-in kiosks and computerized record keeping.
UMCPP will act as the centerpiece of a 160-acre healthcare campus that will also include a medical office building, a nursing unit, a health education center, a fitness and wellness center, a senior residential community, and a 32-acre public park. With all of these amenities, it's hard to imagine what the cantankerous Dr. House would find to gripe about!
February 7, 2019 What do architects want from a Green New Deal?
December 21, 2018 What is Low-resolution architecture?


Our goal is to provide every client with an experience of mental health support that helps them overcome their difficulties and achieve their goals in a way that is straightforward, individualised and efficient.
Like physical health, we all have mental health which requires attention too.
Our mission is to change the perception of proactively looking after our mental health normalising making your mind a priority.
Originally part of Spectrum Health, we have steadily developed into what is now Ireland's leading network of private mental health support services. The company was founded in 2018 by Dr. Sarah O'Neill however, as part of the Spectrum Health and 10x family, both private clients and businesses across Ireland have been looked after by our expert team since 2012.
Our aim is to promote positive mental health for all and be the best solution for anyone looking for help – without having to wait too long to be looked after. With a wide and varied team of fully qualified and experienced mental health professionals spread across Ireland, we provide support and guidance to any child, young person or adult who is struggling with a mental health issue or experiencing difficulties in their day to day life.
We're also passionate about supporting businesses around the country look after the mental wellbeing of their teams, providing an effective approach to building stronger teams.
We're guided by best practice at all times, keeping a client-centric focus and we are run by a layered care model. What this means is ensuring that you get an appointment with the right professional and the right therapeutic approach to suit your needs: there's no one size fits all when it comes to mental health.
We want to truly understand clients, help to identify the issues they are experiencing and offer different treatment options that will most effectively support them.
Whatever challenge, difficulty or transition you are experiencing, working with us can be a big step towards becoming the healthiest version of yourself.


Has the Compliance Safety Accountability (CSA) program been successful? What changes NEED to be made? Why are driver's losing their careers over their neck size and sleep apnea diagnosis? Come inside TNN's exclusive lounge for professional drivers and talk it over.